Index: /issm/oecreview/Archive/14064-14311/Date.tex
===================================================================
--- /issm/oecreview/Archive/14064-14311/Date.tex	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/Date.tex	(revision 14312)
@@ -0,0 +1,1 @@
+Feb-4-2013
Index: /issm/oecreview/Archive/14064-14311/ISSM-14068-14069.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14068-14069.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14068-14069.diff	(revision 14312)
@@ -0,0 +1,14 @@
+Index: ../trunk-jpl/src/android/ISSM/jni/issmlib/libISSMCore.a
+===================================================================
+Cannot display: file marked as a binary type.
+svn:mime-type = application/octet-stream
+Index: ../trunk-jpl/src/android/ISSM/jni/issmlib/libISSMCore.a
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/issmlib/libISSMCore.a	(revision 14068)
++++ ../trunk-jpl/src/android/ISSM/jni/issmlib/libISSMCore.a	(revision 14069)
+
+Property changes on: ../trunk-jpl/src/android/ISSM/jni/issmlib/libISSMCore.a
+___________________________________________________________________
+Added: svn:mime-type
+## -0,0 +1 ##
++application/octet-stream
Index: /issm/oecreview/Archive/14064-14311/ISSM-14069-14070.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14069-14070.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14069-14070.diff	(revision 14312)
@@ -0,0 +1,14 @@
+Index: ../trunk-jpl/src/c/Container/Observations.cpp
+===================================================================
+--- ../trunk-jpl/src/c/Container/Observations.cpp	(revision 14069)
++++ ../trunk-jpl/src/c/Container/Observations.cpp	(revision 14070)
+@@ -45,6 +45,9 @@
+ 	IssmPDouble  offset,minlength,minspacing,mintrimming,maxtrimming;
+ 	Observation *observation = NULL;
+ 
++	/*Check that observations is not empty*/
++	if(n==0) _error_("No observation found");
++
+ 	/*Get extrema*/
+ 	xmin=x[0]; ymin=y[0];
+ 	xmax=x[0]; ymax=y[0];
Index: /issm/oecreview/Archive/14064-14311/ISSM-14073-14074.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14073-14074.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14073-14074.diff	(revision 14312)
@@ -0,0 +1,45 @@
+Index: ../trunk-jpl/src/android/ISSM_Visual/res/layout/activity_issmvisual.xml
+===================================================================
+--- ../trunk-jpl/src/android/ISSM_Visual/res/layout/activity_issmvisual.xml	(revision 14073)
++++ ../trunk-jpl/src/android/ISSM_Visual/res/layout/activity_issmvisual.xml	(revision 14074)
+@@ -14,13 +14,13 @@
+         android:layout_marginBottom="41dp" />
+ 
+     <TextView
+-        android:id="@+id/status"
++        android:id="@+id/value"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:layout_above="@+id/seekBar"
+         android:layout_centerHorizontal="true"
+-        android:layout_marginBottom="16dp"
+-        android:text="Status: " />
++        android:layout_marginBottom="15dp"
++        android:text="alpha value = 0" />
+ 
+     <FrameLayout
+         xmlns:android="http://schemas.android.com/apk/res/android"
+@@ -30,17 +30,15 @@
+         android:layout_height="wrap_content"
+         android:layout_above="@+id/value"
+         android:layout_centerHorizontal="true"
+-        android:layout_marginBottom="16dp" >
++        android:layout_marginBottom="12dp" >
+     </FrameLayout>
+ 
+-    <TextView
+-        android:id="@+id/value"
++    <Button
++        android:id="@+id/button1"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+-        android:layout_above="@+id/status"
+-        android:layout_alignRight="@+id/status"
+-        android:layout_centerHorizontal="true"
+-        android:layout_marginBottom="16dp"
+-        android:text="Value: " />
++        android:layout_above="@+id/seekBar"
++        android:layout_alignParentRight="true"
++        android:text="Reset" />
+ 
+ </RelativeLayout>
Index: /issm/oecreview/Archive/14064-14311/ISSM-14077-14078.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14077-14078.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14077-14078.diff	(revision 14312)
@@ -0,0 +1,27720 @@
+Index: ../trunk-jpl/src/android/ISSM/jni/issmlib/Android.mk
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/issmlib/Android.mk	(revision 14077)
++++ ../trunk-jpl/src/android/ISSM/jni/issmlib/Android.mk	(revision 14078)
+@@ -4,3 +4,4 @@
+ LOCAL_SRC_FILES := libISSMCore.a
+ LOCAL_EXPORT_C_INCLUDES := $(ISSM_DIR)
+ include $(PREBUILT_STATIC_LIBRARY)
++
+Index: ../trunk-jpl/src/android/ISSM/jni/Android.mk
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/Android.mk	(revision 14077)
++++ ../trunk-jpl/src/android/ISSM/jni/Android.mk	(revision 14078)
+@@ -11,9 +11,8 @@
+ LOCAL_PATH := $(my_LOCAL_PATH)
+ LOCAL_ALLOW_UNDEFINED_SYMBOLS := true
+ LOCAL_CFLAGS := -Wno-psabi -DHAVE_CONFIG_H
+-LOCAL_LDLIBS := -llog -ldl
++LOCAL_LDLIBS := -llog -ldl -lm
+ LOCAL_MODULE := IssmJni
+ LOCAL_SRC_FILES := Main.cpp 
+-LOCAL_STATIC_LIBRARIES := libISSMCore
+-
++LOCAL_STATIC_LIBRARIES := libISSMCore libgsl libgslcblas
+ include $(BUILD_SHARED_LIBRARY)
+Index: ../trunk-jpl/src/android/ISSM/jni/Application.mk
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/Application.mk	(revision 14077)
++++ ../trunk-jpl/src/android/ISSM/jni/Application.mk	(revision 14078)
+@@ -1,3 +1,4 @@
+-APP_STL:=stlport_static
++APP_STL:= gnustl_static
+ APP_CPPFLAGS := -frtti
+ APP_CPPFLAGS += -fexceptions
++APP_ABI := armeabi
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/libsgslcblas.a
+===================================================================
+Cannot display: file marked as a binary type.
+svn:mime-type = application/octet-stream
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/libsgslcblas.a
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/libsgslcblas.a	(revision 14077)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/libsgslcblas.a	(revision 14078)
+
+Property changes on: ../trunk-jpl/src/android/ISSM/jni/gsllib/libsgslcblas.a
+___________________________________________________________________
+Added: svn:mime-type
+## -0,0 +1 ##
++application/octet-stream
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_uchar.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_uchar.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_uchar.h	(revision 14078)
+@@ -0,0 +1,350 @@
++/* matrix/gsl_matrix_uchar.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_MATRIX_UCHAR_H__
++#define __GSL_MATRIX_UCHAR_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_types.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_inline.h>
++#include <gsl/gsl_check_range.h>
++#include <gsl/gsl_vector_uchar.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++typedef struct 
++{
++  size_t size1;
++  size_t size2;
++  size_t tda;
++  unsigned char * data;
++  gsl_block_uchar * block;
++  int owner;
++} gsl_matrix_uchar;
++
++typedef struct
++{
++  gsl_matrix_uchar matrix;
++} _gsl_matrix_uchar_view;
++
++typedef _gsl_matrix_uchar_view gsl_matrix_uchar_view;
++
++typedef struct
++{
++  gsl_matrix_uchar matrix;
++} _gsl_matrix_uchar_const_view;
++
++typedef const _gsl_matrix_uchar_const_view gsl_matrix_uchar_const_view;
++
++/* Allocation */
++
++gsl_matrix_uchar * 
++gsl_matrix_uchar_alloc (const size_t n1, const size_t n2);
++
++gsl_matrix_uchar * 
++gsl_matrix_uchar_calloc (const size_t n1, const size_t n2);
++
++gsl_matrix_uchar * 
++gsl_matrix_uchar_alloc_from_block (gsl_block_uchar * b, 
++                                   const size_t offset, 
++                                   const size_t n1, 
++                                   const size_t n2, 
++                                   const size_t d2);
++
++gsl_matrix_uchar * 
++gsl_matrix_uchar_alloc_from_matrix (gsl_matrix_uchar * m,
++                                    const size_t k1, 
++                                    const size_t k2,
++                                    const size_t n1, 
++                                    const size_t n2);
++
++gsl_vector_uchar * 
++gsl_vector_uchar_alloc_row_from_matrix (gsl_matrix_uchar * m,
++                                        const size_t i);
++
++gsl_vector_uchar * 
++gsl_vector_uchar_alloc_col_from_matrix (gsl_matrix_uchar * m,
++                                        const size_t j);
++
++void gsl_matrix_uchar_free (gsl_matrix_uchar * m);
++
++/* Views */
++
++_gsl_matrix_uchar_view 
++gsl_matrix_uchar_submatrix (gsl_matrix_uchar * m, 
++                            const size_t i, const size_t j, 
++                            const size_t n1, const size_t n2);
++
++_gsl_vector_uchar_view 
++gsl_matrix_uchar_row (gsl_matrix_uchar * m, const size_t i);
++
++_gsl_vector_uchar_view 
++gsl_matrix_uchar_column (gsl_matrix_uchar * m, const size_t j);
++
++_gsl_vector_uchar_view 
++gsl_matrix_uchar_diagonal (gsl_matrix_uchar * m);
++
++_gsl_vector_uchar_view 
++gsl_matrix_uchar_subdiagonal (gsl_matrix_uchar * m, const size_t k);
++
++_gsl_vector_uchar_view 
++gsl_matrix_uchar_superdiagonal (gsl_matrix_uchar * m, const size_t k);
++
++_gsl_vector_uchar_view
++gsl_matrix_uchar_subrow (gsl_matrix_uchar * m, const size_t i,
++                         const size_t offset, const size_t n);
++
++_gsl_vector_uchar_view
++gsl_matrix_uchar_subcolumn (gsl_matrix_uchar * m, const size_t j,
++                            const size_t offset, const size_t n);
++
++_gsl_matrix_uchar_view
++gsl_matrix_uchar_view_array (unsigned char * base,
++                             const size_t n1, 
++                             const size_t n2);
++
++_gsl_matrix_uchar_view
++gsl_matrix_uchar_view_array_with_tda (unsigned char * base, 
++                                      const size_t n1, 
++                                      const size_t n2,
++                                      const size_t tda);
++
++
++_gsl_matrix_uchar_view
++gsl_matrix_uchar_view_vector (gsl_vector_uchar * v,
++                              const size_t n1, 
++                              const size_t n2);
++
++_gsl_matrix_uchar_view
++gsl_matrix_uchar_view_vector_with_tda (gsl_vector_uchar * v,
++                                       const size_t n1, 
++                                       const size_t n2,
++                                       const size_t tda);
++
++
++_gsl_matrix_uchar_const_view 
++gsl_matrix_uchar_const_submatrix (const gsl_matrix_uchar * m, 
++                                  const size_t i, const size_t j, 
++                                  const size_t n1, const size_t n2);
++
++_gsl_vector_uchar_const_view 
++gsl_matrix_uchar_const_row (const gsl_matrix_uchar * m, 
++                            const size_t i);
++
++_gsl_vector_uchar_const_view 
++gsl_matrix_uchar_const_column (const gsl_matrix_uchar * m, 
++                               const size_t j);
++
++_gsl_vector_uchar_const_view
++gsl_matrix_uchar_const_diagonal (const gsl_matrix_uchar * m);
++
++_gsl_vector_uchar_const_view 
++gsl_matrix_uchar_const_subdiagonal (const gsl_matrix_uchar * m, 
++                                    const size_t k);
++
++_gsl_vector_uchar_const_view 
++gsl_matrix_uchar_const_superdiagonal (const gsl_matrix_uchar * m, 
++                                      const size_t k);
++
++_gsl_vector_uchar_const_view
++gsl_matrix_uchar_const_subrow (const gsl_matrix_uchar * m, const size_t i,
++                               const size_t offset, const size_t n);
++
++_gsl_vector_uchar_const_view
++gsl_matrix_uchar_const_subcolumn (const gsl_matrix_uchar * m, const size_t j,
++                                  const size_t offset, const size_t n);
++
++_gsl_matrix_uchar_const_view
++gsl_matrix_uchar_const_view_array (const unsigned char * base,
++                                   const size_t n1, 
++                                   const size_t n2);
++
++_gsl_matrix_uchar_const_view
++gsl_matrix_uchar_const_view_array_with_tda (const unsigned char * base, 
++                                            const size_t n1, 
++                                            const size_t n2,
++                                            const size_t tda);
++
++_gsl_matrix_uchar_const_view
++gsl_matrix_uchar_const_view_vector (const gsl_vector_uchar * v,
++                                    const size_t n1, 
++                                    const size_t n2);
++
++_gsl_matrix_uchar_const_view
++gsl_matrix_uchar_const_view_vector_with_tda (const gsl_vector_uchar * v,
++                                             const size_t n1, 
++                                             const size_t n2,
++                                             const size_t tda);
++
++/* Operations */
++
++void gsl_matrix_uchar_set_zero (gsl_matrix_uchar * m);
++void gsl_matrix_uchar_set_identity (gsl_matrix_uchar * m);
++void gsl_matrix_uchar_set_all (gsl_matrix_uchar * m, unsigned char x);
++
++int gsl_matrix_uchar_fread (FILE * stream, gsl_matrix_uchar * m) ;
++int gsl_matrix_uchar_fwrite (FILE * stream, const gsl_matrix_uchar * m) ;
++int gsl_matrix_uchar_fscanf (FILE * stream, gsl_matrix_uchar * m);
++int gsl_matrix_uchar_fprintf (FILE * stream, const gsl_matrix_uchar * m, const char * format);
++ 
++int gsl_matrix_uchar_memcpy(gsl_matrix_uchar * dest, const gsl_matrix_uchar * src);
++int gsl_matrix_uchar_swap(gsl_matrix_uchar * m1, gsl_matrix_uchar * m2);
++
++int gsl_matrix_uchar_swap_rows(gsl_matrix_uchar * m, const size_t i, const size_t j);
++int gsl_matrix_uchar_swap_columns(gsl_matrix_uchar * m, const size_t i, const size_t j);
++int gsl_matrix_uchar_swap_rowcol(gsl_matrix_uchar * m, const size_t i, const size_t j);
++int gsl_matrix_uchar_transpose (gsl_matrix_uchar * m);
++int gsl_matrix_uchar_transpose_memcpy (gsl_matrix_uchar * dest, const gsl_matrix_uchar * src);
++
++unsigned char gsl_matrix_uchar_max (const gsl_matrix_uchar * m);
++unsigned char gsl_matrix_uchar_min (const gsl_matrix_uchar * m);
++void gsl_matrix_uchar_minmax (const gsl_matrix_uchar * m, unsigned char * min_out, unsigned char * max_out);
++
++void gsl_matrix_uchar_max_index (const gsl_matrix_uchar * m, size_t * imax, size_t *jmax);
++void gsl_matrix_uchar_min_index (const gsl_matrix_uchar * m, size_t * imin, size_t *jmin);
++void gsl_matrix_uchar_minmax_index (const gsl_matrix_uchar * m, size_t * imin, size_t * jmin, size_t * imax, size_t * jmax);
++
++int gsl_matrix_uchar_equal (const gsl_matrix_uchar * a, const gsl_matrix_uchar * b);
++
++int gsl_matrix_uchar_isnull (const gsl_matrix_uchar * m);
++int gsl_matrix_uchar_ispos (const gsl_matrix_uchar * m);
++int gsl_matrix_uchar_isneg (const gsl_matrix_uchar * m);
++int gsl_matrix_uchar_isnonneg (const gsl_matrix_uchar * m);
++
++int gsl_matrix_uchar_add (gsl_matrix_uchar * a, const gsl_matrix_uchar * b);
++int gsl_matrix_uchar_sub (gsl_matrix_uchar * a, const gsl_matrix_uchar * b);
++int gsl_matrix_uchar_mul_elements (gsl_matrix_uchar * a, const gsl_matrix_uchar * b);
++int gsl_matrix_uchar_div_elements (gsl_matrix_uchar * a, const gsl_matrix_uchar * b);
++int gsl_matrix_uchar_scale (gsl_matrix_uchar * a, const double x);
++int gsl_matrix_uchar_add_constant (gsl_matrix_uchar * a, const double x);
++int gsl_matrix_uchar_add_diagonal (gsl_matrix_uchar * a, const double x);
++
++/***********************************************************************/
++/* The functions below are obsolete                                    */
++/***********************************************************************/
++int gsl_matrix_uchar_get_row(gsl_vector_uchar * v, const gsl_matrix_uchar * m, const size_t i);
++int gsl_matrix_uchar_get_col(gsl_vector_uchar * v, const gsl_matrix_uchar * m, const size_t j);
++int gsl_matrix_uchar_set_row(gsl_matrix_uchar * m, const size_t i, const gsl_vector_uchar * v);
++int gsl_matrix_uchar_set_col(gsl_matrix_uchar * m, const size_t j, const gsl_vector_uchar * v);
++/***********************************************************************/
++
++/* inline functions if you are using GCC */
++
++INLINE_DECL unsigned char   gsl_matrix_uchar_get(const gsl_matrix_uchar * m, const size_t i, const size_t j);
++INLINE_DECL void    gsl_matrix_uchar_set(gsl_matrix_uchar * m, const size_t i, const size_t j, const unsigned char x);
++INLINE_DECL unsigned char * gsl_matrix_uchar_ptr(gsl_matrix_uchar * m, const size_t i, const size_t j);
++INLINE_DECL const unsigned char * gsl_matrix_uchar_const_ptr(const gsl_matrix_uchar * m, const size_t i, const size_t j);
++
++#ifdef HAVE_INLINE
++INLINE_FUN 
++unsigned char
++gsl_matrix_uchar_get(const gsl_matrix_uchar * m, const size_t i, const size_t j)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(1)) 
++    {
++      if (i >= m->size1)
++        {
++          GSL_ERROR_VAL("first index out of range", GSL_EINVAL, 0) ;
++        }
++      else if (j >= m->size2)
++        {
++          GSL_ERROR_VAL("second index out of range", GSL_EINVAL, 0) ;
++        }
++    }
++#endif
++  return m->data[i * m->tda + j] ;
++} 
++
++INLINE_FUN 
++void
++gsl_matrix_uchar_set(gsl_matrix_uchar * m, const size_t i, const size_t j, const unsigned char x)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(1)) 
++    {
++      if (i >= m->size1)
++        {
++          GSL_ERROR_VOID("first index out of range", GSL_EINVAL) ;
++        }
++      else if (j >= m->size2)
++        {
++          GSL_ERROR_VOID("second index out of range", GSL_EINVAL) ;
++        }
++    }
++#endif
++  m->data[i * m->tda + j] = x ;
++}
++
++INLINE_FUN 
++unsigned char *
++gsl_matrix_uchar_ptr(gsl_matrix_uchar * m, const size_t i, const size_t j)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(1)) 
++    {
++      if (i >= m->size1)
++        {
++          GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
++        }
++      else if (j >= m->size2)
++        {
++          GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
++        }
++    }
++#endif
++  return (unsigned char *) (m->data + (i * m->tda + j)) ;
++} 
++
++INLINE_FUN 
++const unsigned char *
++gsl_matrix_uchar_const_ptr(const gsl_matrix_uchar * m, const size_t i, const size_t j)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(1)) 
++    {
++      if (i >= m->size1)
++        {
++          GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
++        }
++      else if (j >= m->size2)
++        {
++          GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
++        }
++    }
++#endif
++  return (const unsigned char *) (m->data + (i * m->tda + j)) ;
++} 
++
++#endif
++
++__END_DECLS
++
++#endif /* __GSL_MATRIX_UCHAR_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_float.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_float.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_float.h	(revision 14078)
+@@ -0,0 +1,45 @@
++/* permutation/gsl_permute_vector_float.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_PERMUTE_VECTOR_FLOAT_H__
++#define __GSL_PERMUTE_VECTOR_FLOAT_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_permutation.h>
++#include <gsl/gsl_vector_float.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++int gsl_permute_vector_float (const gsl_permutation * p, gsl_vector_float * v);
++int gsl_permute_vector_float_inverse (const gsl_permutation * p, gsl_vector_float * v);
++
++__END_DECLS
++
++#endif /* __GSL_PERMUTE_VECTOR_FLOAT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_complex_long_double.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_complex_long_double.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_complex_long_double.h	(revision 14078)
+@@ -0,0 +1,65 @@
++/* block/gsl_block_complex_long_double.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_BLOCK_COMPLEX_LONG_DOUBLE_H__
++#define __GSL_BLOCK_COMPLEX_LONG_DOUBLE_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++struct gsl_block_complex_long_double_struct
++{
++  size_t size;
++  long double *data;
++};
++
++typedef struct gsl_block_complex_long_double_struct gsl_block_complex_long_double;
++
++gsl_block_complex_long_double *gsl_block_complex_long_double_alloc (const size_t n);
++gsl_block_complex_long_double *gsl_block_complex_long_double_calloc (const size_t n);
++void gsl_block_complex_long_double_free (gsl_block_complex_long_double * b);
++
++int gsl_block_complex_long_double_fread (FILE * stream, gsl_block_complex_long_double * b);
++int gsl_block_complex_long_double_fwrite (FILE * stream, const gsl_block_complex_long_double * b);
++int gsl_block_complex_long_double_fscanf (FILE * stream, gsl_block_complex_long_double * b);
++int gsl_block_complex_long_double_fprintf (FILE * stream, const gsl_block_complex_long_double * b, const char *format);
++
++int gsl_block_complex_long_double_raw_fread (FILE * stream, long double * b, const size_t n, const size_t stride);
++int gsl_block_complex_long_double_raw_fwrite (FILE * stream, const long double * b, const size_t n, const size_t stride);
++int gsl_block_complex_long_double_raw_fscanf (FILE * stream, long double * b, const size_t n, const size_t stride);
++int gsl_block_complex_long_double_raw_fprintf (FILE * stream, const long double * b, const size_t n, const size_t stride, const char *format);
++
++size_t gsl_block_complex_long_double_size (const gsl_block_complex_long_double * b);
++long double * gsl_block_complex_long_double_data (const gsl_block_complex_long_double * b);
++
++__END_DECLS
++
++#endif /* __GSL_BLOCK_COMPLEX_LONG_DOUBLE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_int.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_int.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_int.h	(revision 14078)
+@@ -0,0 +1,44 @@
++/* permutation/gsl_permute_int.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_PERMUTE_INT_H__
++#define __GSL_PERMUTE_INT_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_permutation.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++int gsl_permute_int (const size_t * p, int * data, const size_t stride, const size_t n);
++int gsl_permute_int_inverse (const size_t * p, int * data, const size_t stride, const size_t n);
++
++__END_DECLS
++
++#endif /* __GSL_PERMUTE_INT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_airy.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_airy.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_airy.h	(revision 14078)
+@@ -0,0 +1,139 @@
++/* specfunc/gsl_sf_airy.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++/* Author:  G. Jungman */
++
++#ifndef __GSL_SF_AIRY_H__
++#define __GSL_SF_AIRY_H__
++
++#include <gsl/gsl_mode.h>
++#include <gsl/gsl_sf_result.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++
++/* Airy function Ai(x)
++ *
++ * exceptions: GSL_EUNDRFLW
++ */
++int gsl_sf_airy_Ai_e(const double x, const gsl_mode_t mode, gsl_sf_result * result);
++double gsl_sf_airy_Ai(const double x, gsl_mode_t mode);
++
++
++/* Airy function Bi(x)
++ *
++ * exceptions: GSL_EOVRFLW
++ */
++int gsl_sf_airy_Bi_e(const double x, gsl_mode_t mode, gsl_sf_result * result);
++double gsl_sf_airy_Bi(const double x, gsl_mode_t mode);
++
++
++/* scaled Ai(x):
++ *                     Ai(x)   x < 0
++ *   exp(+2/3 x^{3/2}) Ai(x)   x > 0
++ *
++ * exceptions: none
++ */
++int gsl_sf_airy_Ai_scaled_e(const double x, gsl_mode_t mode, gsl_sf_result * result);
++double gsl_sf_airy_Ai_scaled(const double x, gsl_mode_t mode);
++
++
++/* scaled Bi(x):
++ *                     Bi(x)   x < 0
++ *   exp(-2/3 x^{3/2}) Bi(x)   x > 0
++ *
++ * exceptions: none
++ */
++int gsl_sf_airy_Bi_scaled_e(const double x, gsl_mode_t mode, gsl_sf_result * result);
++double gsl_sf_airy_Bi_scaled(const double x, gsl_mode_t mode);
++
++
++/* derivative Ai'(x)
++ *
++ * exceptions: GSL_EUNDRFLW
++ */
++int gsl_sf_airy_Ai_deriv_e(const double x, gsl_mode_t mode, gsl_sf_result * result);
++double gsl_sf_airy_Ai_deriv(const double x, gsl_mode_t mode);
++
++
++/* derivative Bi'(x)
++ *
++ * exceptions: GSL_EOVRFLW
++ */
++int gsl_sf_airy_Bi_deriv_e(const double x, gsl_mode_t mode, gsl_sf_result * result);
++double gsl_sf_airy_Bi_deriv(const double x, gsl_mode_t mode);
++
++
++/* scaled derivative Ai'(x):
++ *                     Ai'(x)   x < 0
++ *   exp(+2/3 x^{3/2}) Ai'(x)   x > 0
++ *
++ * exceptions: none
++ */
++int gsl_sf_airy_Ai_deriv_scaled_e(const double x, gsl_mode_t mode, gsl_sf_result * result);
++double gsl_sf_airy_Ai_deriv_scaled(const double x, gsl_mode_t mode);
++
++
++/* scaled derivative:
++ *                     Bi'(x)   x < 0
++ *   exp(-2/3 x^{3/2}) Bi'(x)   x > 0
++ *
++ * exceptions: none
++ */
++int gsl_sf_airy_Bi_deriv_scaled_e(const double x, gsl_mode_t mode, gsl_sf_result * result);
++double gsl_sf_airy_Bi_deriv_scaled(const double x, gsl_mode_t mode);
++
++
++/* Zeros of Ai(x)
++ */
++int gsl_sf_airy_zero_Ai_e(unsigned int s, gsl_sf_result * result);
++double gsl_sf_airy_zero_Ai(unsigned int s);
++
++
++/* Zeros of Bi(x)
++ */
++int gsl_sf_airy_zero_Bi_e(unsigned int s, gsl_sf_result * result);
++double gsl_sf_airy_zero_Bi(unsigned int s);
++
++
++/* Zeros of Ai'(x)
++ */
++int gsl_sf_airy_zero_Ai_deriv_e(unsigned int s, gsl_sf_result * result);
++double gsl_sf_airy_zero_Ai_deriv(unsigned int s);
++
++
++/* Zeros of Bi'(x)
++ */
++int gsl_sf_airy_zero_Bi_deriv_e(unsigned int s, gsl_sf_result * result);
++double gsl_sf_airy_zero_Bi_deriv(unsigned int s);
++
++
++__END_DECLS
++
++#endif /* __GSL_SF_AIRY_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_gegenbauer.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_gegenbauer.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_gegenbauer.h	(revision 14078)
+@@ -0,0 +1,73 @@
++/* specfunc/gsl_sf_gegenbauer.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++/* Author:  G. Jungman */
++
++#ifndef __GSL_SF_GEGENBAUER_H__
++#define __GSL_SF_GEGENBAUER_H__
++
++#include <gsl/gsl_sf_result.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++
++/* Evaluate Gegenbauer polynomials
++ * using explicit representations.
++ *
++ * exceptions: none
++ */
++int gsl_sf_gegenpoly_1_e(double lambda, double x, gsl_sf_result * result);
++int gsl_sf_gegenpoly_2_e(double lambda, double x, gsl_sf_result * result);
++int gsl_sf_gegenpoly_3_e(double lambda, double x, gsl_sf_result * result);
++double gsl_sf_gegenpoly_1(double lambda, double x);
++double gsl_sf_gegenpoly_2(double lambda, double x);
++double gsl_sf_gegenpoly_3(double lambda, double x);
++
++
++/* Evaluate Gegenbauer polynomials.
++ *
++ * lambda > -1/2, n >= 0
++ * exceptions: GSL_EDOM
++ */
++int gsl_sf_gegenpoly_n_e(int n, double lambda, double x, gsl_sf_result * result);
++double gsl_sf_gegenpoly_n(int n, double lambda, double x);
++
++
++/* Calculate array of Gegenbauer polynomials
++ * for n = (0, 1, 2, ... nmax)
++ *
++ * lambda > -1/2, nmax >= 0
++ * exceptions: GSL_EDOM
++ */
++int gsl_sf_gegenpoly_array(int nmax, double lambda, double x, double * result_array);
++
++
++__END_DECLS
++
++#endif /* __GSL_SF_GEGENBAUER_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_ulong.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_ulong.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_ulong.h	(revision 14078)
+@@ -0,0 +1,65 @@
++/* block/gsl_block_ulong.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_BLOCK_ULONG_H__
++#define __GSL_BLOCK_ULONG_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++struct gsl_block_ulong_struct
++{
++  size_t size;
++  unsigned long *data;
++};
++
++typedef struct gsl_block_ulong_struct gsl_block_ulong;
++
++gsl_block_ulong *gsl_block_ulong_alloc (const size_t n);
++gsl_block_ulong *gsl_block_ulong_calloc (const size_t n);
++void gsl_block_ulong_free (gsl_block_ulong * b);
++
++int gsl_block_ulong_fread (FILE * stream, gsl_block_ulong * b);
++int gsl_block_ulong_fwrite (FILE * stream, const gsl_block_ulong * b);
++int gsl_block_ulong_fscanf (FILE * stream, gsl_block_ulong * b);
++int gsl_block_ulong_fprintf (FILE * stream, const gsl_block_ulong * b, const char *format);
++
++int gsl_block_ulong_raw_fread (FILE * stream, unsigned long * b, const size_t n, const size_t stride);
++int gsl_block_ulong_raw_fwrite (FILE * stream, const unsigned long * b, const size_t n, const size_t stride);
++int gsl_block_ulong_raw_fscanf (FILE * stream, unsigned long * b, const size_t n, const size_t stride);
++int gsl_block_ulong_raw_fprintf (FILE * stream, const unsigned long * b, const size_t n, const size_t stride, const char *format);
++
++size_t gsl_block_ulong_size (const gsl_block_ulong * b);
++unsigned long * gsl_block_ulong_data (const gsl_block_ulong * b);
++
++__END_DECLS
++
++#endif /* __GSL_BLOCK_ULONG_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_uchar.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_uchar.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_uchar.h	(revision 14078)
+@@ -0,0 +1,44 @@
++/* permutation/gsl_permute_uchar.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_PERMUTE_UCHAR_H__
++#define __GSL_PERMUTE_UCHAR_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_permutation.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++int gsl_permute_uchar (const size_t * p, unsigned char * data, const size_t stride, const size_t n);
++int gsl_permute_uchar_inverse (const size_t * p, unsigned char * data, const size_t stride, const size_t n);
++
++__END_DECLS
++
++#endif /* __GSL_PERMUTE_UCHAR_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_roots.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_roots.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_roots.h	(revision 14078)
+@@ -0,0 +1,127 @@
++/* roots/gsl_roots.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Reid Priedhorsky, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_ROOTS_H__
++#define __GSL_ROOTS_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_types.h>
++#include <gsl/gsl_math.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++typedef struct
++  {
++    const char *name;
++    size_t size;
++    int (*set) (void *state, gsl_function * f, double * root, double x_lower, double x_upper);
++    int (*iterate) (void *state, gsl_function * f, double * root, double * x_lower, double * x_upper);
++  }
++gsl_root_fsolver_type;
++
++typedef struct
++  {
++    const gsl_root_fsolver_type * type;
++    gsl_function * function ;
++    double root ;
++    double x_lower;
++    double x_upper;
++    void *state;
++  }
++gsl_root_fsolver;
++
++typedef struct
++  {
++    const char *name;
++    size_t size;
++    int (*set) (void *state, gsl_function_fdf * f, double * root);
++    int (*iterate) (void *state, gsl_function_fdf * f, double * root);
++  }
++gsl_root_fdfsolver_type;
++
++typedef struct
++  {
++    const gsl_root_fdfsolver_type * type;
++    gsl_function_fdf * fdf ;
++    double root ;
++    void *state;
++  }
++gsl_root_fdfsolver;
++
++gsl_root_fsolver *
++gsl_root_fsolver_alloc (const gsl_root_fsolver_type * T);
++void gsl_root_fsolver_free (gsl_root_fsolver * s);
++
++int gsl_root_fsolver_set (gsl_root_fsolver * s,
++                          gsl_function * f, 
++                          double x_lower, double x_upper);
++
++int gsl_root_fsolver_iterate (gsl_root_fsolver * s);
++
++const char * gsl_root_fsolver_name (const gsl_root_fsolver * s);
++double gsl_root_fsolver_root (const gsl_root_fsolver * s);
++double gsl_root_fsolver_x_lower (const gsl_root_fsolver * s);
++double gsl_root_fsolver_x_upper (const gsl_root_fsolver * s);
++
++
++gsl_root_fdfsolver *
++gsl_root_fdfsolver_alloc (const gsl_root_fdfsolver_type * T);
++
++int
++gsl_root_fdfsolver_set (gsl_root_fdfsolver * s, 
++                         gsl_function_fdf * fdf, double root);
++
++int
++gsl_root_fdfsolver_iterate (gsl_root_fdfsolver * s);
++
++void
++gsl_root_fdfsolver_free (gsl_root_fdfsolver * s);
++
++const char * gsl_root_fdfsolver_name (const gsl_root_fdfsolver * s);
++double gsl_root_fdfsolver_root (const gsl_root_fdfsolver * s);
++
++int
++gsl_root_test_interval (double x_lower, double x_upper, double epsabs, double epsrel);
++
++int
++gsl_root_test_residual (double f, double epsabs);
++
++int
++gsl_root_test_delta (double x1, double x0, double epsabs, double epsrel);
++
++GSL_VAR const gsl_root_fsolver_type  * gsl_root_fsolver_bisection;
++GSL_VAR const gsl_root_fsolver_type  * gsl_root_fsolver_brent;
++GSL_VAR const gsl_root_fsolver_type  * gsl_root_fsolver_falsepos;
++GSL_VAR const gsl_root_fdfsolver_type  * gsl_root_fdfsolver_newton;
++GSL_VAR const gsl_root_fdfsolver_type  * gsl_root_fdfsolver_secant;
++GSL_VAR const gsl_root_fdfsolver_type  * gsl_root_fdfsolver_steffenson;
++
++__END_DECLS
++
++#endif /* __GSL_ROOTS_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_linalg.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_linalg.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_linalg.h	(revision 14078)
+@@ -0,0 +1,592 @@
++/* linalg/gsl_linalg.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2006, 2007 Gerard Jungman, Brian Gough, Patrick Alken
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_LINALG_H__
++#define __GSL_LINALG_H__
++
++#include <gsl/gsl_mode.h>
++#include <gsl/gsl_permutation.h>
++#include <gsl/gsl_vector.h>
++#include <gsl/gsl_matrix.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++#define __BEGIN_DECLS extern "C" {
++#define __END_DECLS }
++#else
++#define __BEGIN_DECLS           /* empty */
++#define __END_DECLS             /* empty */
++#endif
++
++__BEGIN_DECLS
++
++typedef enum
++  {
++    GSL_LINALG_MOD_NONE = 0,
++    GSL_LINALG_MOD_TRANSPOSE = 1,
++    GSL_LINALG_MOD_CONJUGATE = 2
++  }
++gsl_linalg_matrix_mod_t;
++
++
++/* Note: You can now use the gsl_blas_dgemm function instead of matmult */
++
++/* Simple implementation of matrix multiply.
++ * Calculates C = A.B
++ *
++ * exceptions: GSL_EBADLEN
++ */
++int gsl_linalg_matmult (const gsl_matrix * A,
++                        const gsl_matrix * B,
++                        gsl_matrix * C);
++
++
++/* Simple implementation of matrix multiply.
++ * Allows transposition of either matrix, so it
++ * can compute A.B or Trans(A).B or A.Trans(B) or Trans(A).Trans(B)
++ *
++ * exceptions: GSL_EBADLEN
++ */
++int gsl_linalg_matmult_mod (const gsl_matrix * A,
++                            gsl_linalg_matrix_mod_t modA,
++                            const gsl_matrix * B,
++                            gsl_linalg_matrix_mod_t modB,
++                            gsl_matrix * C);
++
++/* Calculate the matrix exponential by the scaling and
++ * squaring method described in Moler + Van Loan,
++ * SIAM Rev 20, 801 (1978). The mode argument allows
++ * choosing an optimal strategy, from the table
++ * given in the paper, for a given precision.
++ *
++ * exceptions: GSL_ENOTSQR, GSL_EBADLEN
++ */
++int gsl_linalg_exponential_ss(
++  const gsl_matrix * A,
++  gsl_matrix * eA,
++  gsl_mode_t mode
++  );
++
++
++/* Householder Transformations */
++
++double gsl_linalg_householder_transform (gsl_vector * v);
++gsl_complex gsl_linalg_complex_householder_transform (gsl_vector_complex * v);
++
++int gsl_linalg_householder_hm (double tau, 
++                               const gsl_vector * v, 
++                               gsl_matrix * A);
++
++int gsl_linalg_householder_mh (double tau, 
++                               const gsl_vector * v, 
++                               gsl_matrix * A);
++
++int gsl_linalg_householder_hv (double tau, 
++                               const gsl_vector * v, 
++                               gsl_vector * w);
++
++int gsl_linalg_householder_hm1 (double tau, 
++                                gsl_matrix * A);
++
++int gsl_linalg_complex_householder_hm (gsl_complex tau, 
++                                       const gsl_vector_complex * v, 
++                                       gsl_matrix_complex * A);
++
++int gsl_linalg_complex_householder_mh (gsl_complex tau,
++                                       const gsl_vector_complex * v,
++                                       gsl_matrix_complex * A);
++
++int gsl_linalg_complex_householder_hv (gsl_complex tau, 
++                                       const gsl_vector_complex * v, 
++                                       gsl_vector_complex * w);
++
++/* Hessenberg reduction */
++
++int gsl_linalg_hessenberg_decomp(gsl_matrix *A, gsl_vector *tau);
++int gsl_linalg_hessenberg_unpack(gsl_matrix * H, gsl_vector * tau,
++                                 gsl_matrix * U);
++int gsl_linalg_hessenberg_unpack_accum(gsl_matrix * H, gsl_vector * tau,
++                                       gsl_matrix * U);
++int gsl_linalg_hessenberg_set_zero(gsl_matrix * H);
++int gsl_linalg_hessenberg_submatrix(gsl_matrix *M, gsl_matrix *A,
++                                    size_t top, gsl_vector *tau);
++
++/* To support gsl-1.9 interface: DEPRECATED */
++int gsl_linalg_hessenberg(gsl_matrix *A, gsl_vector *tau);
++
++
++/* Hessenberg-Triangular reduction */
++
++int gsl_linalg_hesstri_decomp(gsl_matrix * A, gsl_matrix * B,
++                              gsl_matrix * U, gsl_matrix * V,
++                              gsl_vector * work);
++
++/* Singular Value Decomposition
++
++ * exceptions: 
++ */
++
++int
++gsl_linalg_SV_decomp (gsl_matrix * A,
++                      gsl_matrix * V,
++                      gsl_vector * S,
++                      gsl_vector * work);
++
++int
++gsl_linalg_SV_decomp_mod (gsl_matrix * A,
++                          gsl_matrix * X,
++                          gsl_matrix * V,
++                          gsl_vector * S,
++                          gsl_vector * work);
++
++int gsl_linalg_SV_decomp_jacobi (gsl_matrix * A,
++                                 gsl_matrix * Q,
++                                 gsl_vector * S);
++
++int
++gsl_linalg_SV_solve (const gsl_matrix * U,
++                     const gsl_matrix * Q,
++                     const gsl_vector * S,
++                     const gsl_vector * b,
++                     gsl_vector * x);
++
++
++/* LU Decomposition, Gaussian elimination with partial pivoting
++ */
++
++int gsl_linalg_LU_decomp (gsl_matrix * A, gsl_permutation * p, int *signum);
++
++int gsl_linalg_LU_solve (const gsl_matrix * LU,
++                         const gsl_permutation * p,
++                         const gsl_vector * b,
++                         gsl_vector * x);
++
++int gsl_linalg_LU_svx (const gsl_matrix * LU,
++                       const gsl_permutation * p,
++                       gsl_vector * x);
++
++int gsl_linalg_LU_refine (const gsl_matrix * A,
++                          const gsl_matrix * LU,
++                          const gsl_permutation * p,
++                          const gsl_vector * b,
++                          gsl_vector * x,
++                          gsl_vector * residual);
++
++int gsl_linalg_LU_invert (const gsl_matrix * LU,
++                          const gsl_permutation * p,
++                          gsl_matrix * inverse);
++
++double gsl_linalg_LU_det (gsl_matrix * LU, int signum);
++double gsl_linalg_LU_lndet (gsl_matrix * LU);
++int gsl_linalg_LU_sgndet (gsl_matrix * lu, int signum);
++
++/* Complex LU Decomposition */
++
++int gsl_linalg_complex_LU_decomp (gsl_matrix_complex * A, 
++                                  gsl_permutation * p, 
++                                  int *signum);
++
++int gsl_linalg_complex_LU_solve (const gsl_matrix_complex * LU,
++                                 const gsl_permutation * p,
++                                 const gsl_vector_complex * b,
++                                 gsl_vector_complex * x);
++
++int gsl_linalg_complex_LU_svx (const gsl_matrix_complex * LU,
++                               const gsl_permutation * p,
++                               gsl_vector_complex * x);
++
++int gsl_linalg_complex_LU_refine (const gsl_matrix_complex * A,
++                                  const gsl_matrix_complex * LU,
++                                  const gsl_permutation * p,
++                                  const gsl_vector_complex * b,
++                                  gsl_vector_complex * x,
++                                  gsl_vector_complex * residual);
++
++int gsl_linalg_complex_LU_invert (const gsl_matrix_complex * LU,
++                                  const gsl_permutation * p,
++                                  gsl_matrix_complex * inverse);
++
++gsl_complex gsl_linalg_complex_LU_det (gsl_matrix_complex * LU,
++                                       int signum);
++
++double gsl_linalg_complex_LU_lndet (gsl_matrix_complex * LU);
++
++gsl_complex gsl_linalg_complex_LU_sgndet (gsl_matrix_complex * LU,
++                                          int signum);
++
++/* QR decomposition */
++
++int gsl_linalg_QR_decomp (gsl_matrix * A,
++                          gsl_vector * tau);
++
++int gsl_linalg_QR_solve (const gsl_matrix * QR,
++                         const gsl_vector * tau,
++                         const gsl_vector * b,
++                         gsl_vector * x);
++
++int gsl_linalg_QR_svx (const gsl_matrix * QR,
++                       const gsl_vector * tau,
++                       gsl_vector * x);
++
++int gsl_linalg_QR_lssolve (const gsl_matrix * QR, 
++                           const gsl_vector * tau, 
++                           const gsl_vector * b, 
++                           gsl_vector * x, 
++                           gsl_vector * residual);
++
++
++int gsl_linalg_QR_QRsolve (gsl_matrix * Q,
++                           gsl_matrix * R,
++                           const gsl_vector * b,
++                           gsl_vector * x);
++
++int gsl_linalg_QR_Rsolve (const gsl_matrix * QR,
++                          const gsl_vector * b,
++                          gsl_vector * x);
++
++int gsl_linalg_QR_Rsvx (const gsl_matrix * QR,
++                        gsl_vector * x);
++
++int gsl_linalg_QR_update (gsl_matrix * Q,
++                          gsl_matrix * R,
++                          gsl_vector * w,
++                          const gsl_vector * v);
++
++int gsl_linalg_QR_QTvec (const gsl_matrix * QR,
++                         const gsl_vector * tau,
++                         gsl_vector * v);
++
++int gsl_linalg_QR_Qvec (const gsl_matrix * QR,
++                        const gsl_vector * tau,
++                        gsl_vector * v);
++
++int gsl_linalg_QR_QTmat (const gsl_matrix * QR,
++                         const gsl_vector * tau,
++                         gsl_matrix * A);
++
++int gsl_linalg_QR_unpack (const gsl_matrix * QR,
++                          const gsl_vector * tau,
++                          gsl_matrix * Q,
++                          gsl_matrix * R);
++
++int gsl_linalg_R_solve (const gsl_matrix * R,
++                        const gsl_vector * b,
++                        gsl_vector * x);
++
++int gsl_linalg_R_svx (const gsl_matrix * R,
++                      gsl_vector * x);
++
++
++/* Q R P^T decomposition */
++
++int gsl_linalg_QRPT_decomp (gsl_matrix * A,
++                            gsl_vector * tau,
++                            gsl_permutation * p,
++                            int *signum,
++                            gsl_vector * norm);
++
++int gsl_linalg_QRPT_decomp2 (const gsl_matrix * A, 
++                             gsl_matrix * q, gsl_matrix * r, 
++                             gsl_vector * tau, 
++                             gsl_permutation * p, 
++                             int *signum,
++                             gsl_vector * norm);
++
++int gsl_linalg_QRPT_solve (const gsl_matrix * QR,
++                           const gsl_vector * tau,
++                           const gsl_permutation * p,
++                           const gsl_vector * b,
++                           gsl_vector * x);
++
++
++int gsl_linalg_QRPT_svx (const gsl_matrix * QR,
++                         const gsl_vector * tau,
++                         const gsl_permutation * p,
++                         gsl_vector * x);
++
++int gsl_linalg_QRPT_QRsolve (const gsl_matrix * Q,
++                             const gsl_matrix * R,
++                             const gsl_permutation * p,
++                             const gsl_vector * b,
++                             gsl_vector * x);
++
++int gsl_linalg_QRPT_Rsolve (const gsl_matrix * QR,
++                             const gsl_permutation * p,
++                             const gsl_vector * b,
++                             gsl_vector * x);
++
++int gsl_linalg_QRPT_Rsvx (const gsl_matrix * QR,
++                           const gsl_permutation * p,
++                           gsl_vector * x);
++
++int gsl_linalg_QRPT_update (gsl_matrix * Q,
++                            gsl_matrix * R,
++                            const gsl_permutation * p,
++                            gsl_vector * u,
++                            const gsl_vector * v);
++
++/* LQ decomposition */
++
++int gsl_linalg_LQ_decomp (gsl_matrix * A, gsl_vector * tau);
++
++int gsl_linalg_LQ_solve_T (const gsl_matrix * LQ, const gsl_vector * tau, 
++			 const gsl_vector * b, gsl_vector * x);
++
++int gsl_linalg_LQ_svx_T (const gsl_matrix * LQ, const gsl_vector * tau, 
++                         gsl_vector * x);
++
++int gsl_linalg_LQ_lssolve_T (const gsl_matrix * LQ, const gsl_vector * tau, 
++			   const gsl_vector * b, gsl_vector * x, 
++			   gsl_vector * residual);
++
++int gsl_linalg_LQ_Lsolve_T (const gsl_matrix * LQ, const gsl_vector * b, 
++			  gsl_vector * x);
++
++int gsl_linalg_LQ_Lsvx_T (const gsl_matrix * LQ, gsl_vector * x);
++
++int gsl_linalg_L_solve_T (const gsl_matrix * L, const gsl_vector * b, 
++			gsl_vector * x);
++
++int gsl_linalg_LQ_vecQ (const gsl_matrix * LQ, const gsl_vector * tau, 
++			gsl_vector * v);
++
++int gsl_linalg_LQ_vecQT (const gsl_matrix * LQ, const gsl_vector * tau, 
++			 gsl_vector * v);
++
++int gsl_linalg_LQ_unpack (const gsl_matrix * LQ, const gsl_vector * tau, 
++			  gsl_matrix * Q, gsl_matrix * L);
++
++int gsl_linalg_LQ_update (gsl_matrix * Q, gsl_matrix * R,
++			  const gsl_vector * v, gsl_vector * w);
++int gsl_linalg_LQ_LQsolve (gsl_matrix * Q, gsl_matrix * L, 
++			   const gsl_vector * b, gsl_vector * x);
++
++/* P^T L Q decomposition */
++
++int gsl_linalg_PTLQ_decomp (gsl_matrix * A, gsl_vector * tau, 
++			    gsl_permutation * p, int *signum, 
++			    gsl_vector * norm);
++
++int gsl_linalg_PTLQ_decomp2 (const gsl_matrix * A, gsl_matrix * q, 
++			     gsl_matrix * r, gsl_vector * tau, 
++			     gsl_permutation * p, int *signum, 
++			     gsl_vector * norm);
++
++int gsl_linalg_PTLQ_solve_T (const gsl_matrix * QR,
++			   const gsl_vector * tau,
++			   const gsl_permutation * p,
++			   const gsl_vector * b,
++			   gsl_vector * x);
++
++int gsl_linalg_PTLQ_svx_T (const gsl_matrix * LQ,
++                           const gsl_vector * tau,
++                           const gsl_permutation * p,
++                           gsl_vector * x);
++
++int gsl_linalg_PTLQ_LQsolve_T (const gsl_matrix * Q, const gsl_matrix * L,
++			     const gsl_permutation * p,
++			     const gsl_vector * b,
++			     gsl_vector * x);
++
++int gsl_linalg_PTLQ_Lsolve_T (const gsl_matrix * LQ,
++			    const gsl_permutation * p,
++			    const gsl_vector * b,
++			    gsl_vector * x);
++
++int gsl_linalg_PTLQ_Lsvx_T (const gsl_matrix * LQ,
++			  const gsl_permutation * p,
++			  gsl_vector * x);
++
++int gsl_linalg_PTLQ_update (gsl_matrix * Q, gsl_matrix * L,
++			    const gsl_permutation * p,
++			    const gsl_vector * v, gsl_vector * w);
++
++/* Cholesky Decomposition */
++
++int gsl_linalg_cholesky_decomp (gsl_matrix * A);
++
++int gsl_linalg_cholesky_solve (const gsl_matrix * cholesky,
++                               const gsl_vector * b,
++                               gsl_vector * x);
++
++int gsl_linalg_cholesky_svx (const gsl_matrix * cholesky,
++                             gsl_vector * x);
++
++int gsl_linalg_cholesky_invert(gsl_matrix * cholesky);
++
++/* Cholesky decomposition with unit-diagonal triangular parts.
++ *   A = L D L^T, where diag(L) = (1,1,...,1).
++ *   Upon exit, A contains L and L^T as for Cholesky, and
++ *   the diagonal of A is (1,1,...,1). The vector Dis set
++ *   to the diagonal elements of the diagonal matrix D.
++ */
++int gsl_linalg_cholesky_decomp_unit(gsl_matrix * A, gsl_vector * D);
++
++/* Complex Cholesky Decomposition */
++
++int gsl_linalg_complex_cholesky_decomp (gsl_matrix_complex * A);
++
++int gsl_linalg_complex_cholesky_solve (const gsl_matrix_complex * cholesky,
++                                       const gsl_vector_complex * b,
++                                       gsl_vector_complex * x);
++
++int gsl_linalg_complex_cholesky_svx (const gsl_matrix_complex * cholesky,
++                                     gsl_vector_complex * x);
++
++int gsl_linalg_complex_cholesky_invert(gsl_matrix_complex * cholesky);
++
++
++/* Symmetric to symmetric tridiagonal decomposition */
++
++int gsl_linalg_symmtd_decomp (gsl_matrix * A, 
++                              gsl_vector * tau);
++
++int gsl_linalg_symmtd_unpack (const gsl_matrix * A, 
++                              const gsl_vector * tau,
++                              gsl_matrix * Q, 
++                              gsl_vector * diag, 
++                              gsl_vector * subdiag);
++
++int gsl_linalg_symmtd_unpack_T (const gsl_matrix * A,
++                                gsl_vector * diag, 
++                                gsl_vector * subdiag);
++
++/* Hermitian to symmetric tridiagonal decomposition */
++
++int gsl_linalg_hermtd_decomp (gsl_matrix_complex * A, 
++                              gsl_vector_complex * tau);
++
++int gsl_linalg_hermtd_unpack (const gsl_matrix_complex * A, 
++                              const gsl_vector_complex * tau,
++                              gsl_matrix_complex * U, 
++                              gsl_vector * diag, 
++                              gsl_vector * sudiag);
++
++int gsl_linalg_hermtd_unpack_T (const gsl_matrix_complex * A, 
++                                gsl_vector * diag, 
++                                gsl_vector * subdiag);
++
++/* Linear Solve Using Householder Transformations
++
++ * exceptions: 
++ */
++
++int gsl_linalg_HH_solve (gsl_matrix * A, const gsl_vector * b, gsl_vector * x);
++int gsl_linalg_HH_svx (gsl_matrix * A, gsl_vector * x);
++
++/* Linear solve for a symmetric tridiagonal system.
++
++ * The input vectors represent the NxN matrix as follows:
++ *
++ *     diag[0]  offdiag[0]             0    ...
++ *  offdiag[0]     diag[1]    offdiag[1]    ...
++ *           0  offdiag[1]       diag[2]    ...
++ *           0           0    offdiag[2]    ...
++ *         ...         ...           ...    ...
++ */
++int gsl_linalg_solve_symm_tridiag (const gsl_vector * diag,
++                                   const gsl_vector * offdiag,
++                                   const gsl_vector * b,
++                                   gsl_vector * x);
++
++/* Linear solve for a nonsymmetric tridiagonal system.
++
++ * The input vectors represent the NxN matrix as follows:
++ *
++ *       diag[0]  abovediag[0]              0    ...
++ *  belowdiag[0]       diag[1]   abovediag[1]    ...
++ *             0  belowdiag[1]        diag[2]    ...
++ *             0             0   belowdiag[2]    ...
++ *           ...           ...            ...    ...
++ */
++int gsl_linalg_solve_tridiag (const gsl_vector * diag,
++                                   const gsl_vector * abovediag,
++                                   const gsl_vector * belowdiag,
++                                   const gsl_vector * b,
++                                   gsl_vector * x);
++
++
++/* Linear solve for a symmetric cyclic tridiagonal system.
++
++ * The input vectors represent the NxN matrix as follows:
++ *
++ *      diag[0]  offdiag[0]             0   .....  offdiag[N-1]
++ *   offdiag[0]     diag[1]    offdiag[1]   .....
++ *            0  offdiag[1]       diag[2]   .....
++ *            0           0    offdiag[2]   .....
++ *          ...         ...
++ * offdiag[N-1]         ...
++ */
++int gsl_linalg_solve_symm_cyc_tridiag (const gsl_vector * diag,
++                                       const gsl_vector * offdiag,
++                                       const gsl_vector * b,
++                                       gsl_vector * x);
++
++/* Linear solve for a nonsymmetric cyclic tridiagonal system.
++
++ * The input vectors represent the NxN matrix as follows:
++ *
++ *        diag[0]  abovediag[0]             0   .....  belowdiag[N-1]
++ *   belowdiag[0]       diag[1]  abovediag[1]   .....
++ *              0  belowdiag[1]       diag[2]
++ *              0             0  belowdiag[2]   .....
++ *            ...           ...
++ * abovediag[N-1]           ...
++ */
++int gsl_linalg_solve_cyc_tridiag (const gsl_vector * diag,
++                                  const gsl_vector * abovediag,
++                                  const gsl_vector * belowdiag,
++                                  const gsl_vector * b,
++                                  gsl_vector * x);
++
++
++/* Bidiagonal decomposition */
++
++int gsl_linalg_bidiag_decomp (gsl_matrix * A, 
++                              gsl_vector * tau_U, 
++                              gsl_vector * tau_V);
++
++int gsl_linalg_bidiag_unpack (const gsl_matrix * A, 
++                              const gsl_vector * tau_U, 
++                              gsl_matrix * U, 
++                              const gsl_vector * tau_V,
++                              gsl_matrix * V,
++                              gsl_vector * diag, 
++                              gsl_vector * superdiag);
++
++int gsl_linalg_bidiag_unpack2 (gsl_matrix * A, 
++                               gsl_vector * tau_U, 
++                               gsl_vector * tau_V,
++                               gsl_matrix * V);
++
++int gsl_linalg_bidiag_unpack_B (const gsl_matrix * A, 
++                                gsl_vector * diag, 
++                                gsl_vector * superdiag);
++
++/* Balancing */
++
++int gsl_linalg_balance_matrix (gsl_matrix * A, gsl_vector * D);
++int gsl_linalg_balance_accum (gsl_matrix * A, gsl_vector * D);
++int gsl_linalg_balance_columns (gsl_matrix * A, gsl_vector * D);
++
++
++__END_DECLS
++
++#endif /* __GSL_LINALG_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permutation.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permutation.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permutation.h	(revision 14078)
+@@ -0,0 +1,100 @@
++/* permutation/gsl_permutation.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004, 2007 Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_PERMUTATION_H__
++#define __GSL_PERMUTATION_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_types.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_inline.h>
++#include <gsl/gsl_check_range.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++struct gsl_permutation_struct
++{
++  size_t size;
++  size_t *data;
++};
++
++typedef struct gsl_permutation_struct gsl_permutation;
++
++gsl_permutation *gsl_permutation_alloc (const size_t n);
++gsl_permutation *gsl_permutation_calloc (const size_t n);
++void gsl_permutation_init (gsl_permutation * p);
++void gsl_permutation_free (gsl_permutation * p);
++int gsl_permutation_memcpy (gsl_permutation * dest, const gsl_permutation * src);
++
++int gsl_permutation_fread (FILE * stream, gsl_permutation * p);
++int gsl_permutation_fwrite (FILE * stream, const gsl_permutation * p);
++int gsl_permutation_fscanf (FILE * stream, gsl_permutation * p);
++int gsl_permutation_fprintf (FILE * stream, const gsl_permutation * p, const char *format);
++
++size_t gsl_permutation_size (const gsl_permutation * p);
++size_t * gsl_permutation_data (const gsl_permutation * p);
++
++int gsl_permutation_swap (gsl_permutation * p, const size_t i, const size_t j);
++
++int gsl_permutation_valid (const gsl_permutation * p);
++void gsl_permutation_reverse (gsl_permutation * p);
++int gsl_permutation_inverse (gsl_permutation * inv, const gsl_permutation * p);
++int gsl_permutation_next (gsl_permutation * p);
++int gsl_permutation_prev (gsl_permutation * p);
++int gsl_permutation_mul (gsl_permutation * p, const gsl_permutation * pa, const gsl_permutation * pb);
++
++int gsl_permutation_linear_to_canonical (gsl_permutation * q, const gsl_permutation * p);
++int gsl_permutation_canonical_to_linear (gsl_permutation * p, const gsl_permutation * q);
++
++size_t gsl_permutation_inversions (const gsl_permutation * p);
++size_t gsl_permutation_linear_cycles (const gsl_permutation * p);
++size_t gsl_permutation_canonical_cycles (const gsl_permutation * q);
++
++INLINE_DECL size_t gsl_permutation_get (const gsl_permutation * p, const size_t i);
++
++#ifdef HAVE_INLINE
++
++INLINE_FUN
++size_t
++gsl_permutation_get (const gsl_permutation * p, const size_t i)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(i >= p->size))
++    {
++      GSL_ERROR_VAL ("index out of range", GSL_EINVAL, 0);
++    }
++#endif
++  return p->data[i];
++}
++
++#endif /* HAVE_INLINE */
++
++__END_DECLS
++
++#endif /* __GSL_PERMUTATION_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_monte_vegas.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_monte_vegas.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_monte_vegas.h	(revision 14078)
+@@ -0,0 +1,125 @@
++/* monte/gsl_monte_vegas.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Michael Booth
++ * Copyright (C) 2009 Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++/* header for the gsl "vegas" routines.  Mike Booth, May 1998 */
++
++#ifndef __GSL_MONTE_VEGAS_H__
++#define __GSL_MONTE_VEGAS_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_rng.h>
++#include <gsl/gsl_monte.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++enum {GSL_VEGAS_MODE_IMPORTANCE = 1, 
++      GSL_VEGAS_MODE_IMPORTANCE_ONLY = 0, 
++      GSL_VEGAS_MODE_STRATIFIED = -1};
++
++typedef struct {
++  /* grid */
++  size_t dim;
++  size_t bins_max;
++  unsigned int bins;
++  unsigned int boxes; /* these are both counted along the axes */
++  double * xi;
++  double * xin;
++  double * delx;
++  double * weight;
++  double vol;
++
++  double * x;
++  int * bin;
++  int * box;
++  
++  /* distribution */
++  double * d;
++
++  /* control variables */
++  double alpha;
++  int mode;
++  int verbose;
++  unsigned int iterations;
++  int stage;
++
++  /* scratch variables preserved between calls to vegas1/2/3  */
++  double jac;
++  double wtd_int_sum; 
++  double sum_wgts;
++  double chi_sum;
++  double chisq;
++
++  double result;
++  double sigma;
++
++  unsigned int it_start;
++  unsigned int it_num;
++  unsigned int samples;
++  unsigned int calls_per_box;
++
++  FILE * ostream;
++
++} gsl_monte_vegas_state;
++
++int gsl_monte_vegas_integrate(gsl_monte_function * f, 
++                              double xl[], double xu[], 
++                              size_t dim, size_t calls,
++                              gsl_rng * r,
++                              gsl_monte_vegas_state *state,
++                              double* result, double* abserr);
++
++gsl_monte_vegas_state* gsl_monte_vegas_alloc(size_t dim);
++
++int gsl_monte_vegas_init(gsl_monte_vegas_state* state);
++
++void gsl_monte_vegas_free (gsl_monte_vegas_state* state);
++
++double gsl_monte_vegas_chisq (const gsl_monte_vegas_state* state);
++void gsl_monte_vegas_runval (const gsl_monte_vegas_state* state, double * result, double * sigma);
++
++typedef struct {
++  double alpha;
++  size_t iterations;
++  int stage;
++  int mode;
++  int verbose;
++  FILE * ostream;
++} gsl_monte_vegas_params;
++
++void gsl_monte_vegas_params_get (const gsl_monte_vegas_state * state,
++				 gsl_monte_vegas_params * params);
++
++void gsl_monte_vegas_params_set (gsl_monte_vegas_state * state,
++				 const gsl_monte_vegas_params * params);
++
++__END_DECLS
++
++#endif /* __GSL_MONTE_VEGAS_H__ */
++
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_ushort.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_ushort.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_ushort.h	(revision 14078)
+@@ -0,0 +1,350 @@
++/* matrix/gsl_matrix_ushort.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_MATRIX_USHORT_H__
++#define __GSL_MATRIX_USHORT_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_types.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_inline.h>
++#include <gsl/gsl_check_range.h>
++#include <gsl/gsl_vector_ushort.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++typedef struct 
++{
++  size_t size1;
++  size_t size2;
++  size_t tda;
++  unsigned short * data;
++  gsl_block_ushort * block;
++  int owner;
++} gsl_matrix_ushort;
++
++typedef struct
++{
++  gsl_matrix_ushort matrix;
++} _gsl_matrix_ushort_view;
++
++typedef _gsl_matrix_ushort_view gsl_matrix_ushort_view;
++
++typedef struct
++{
++  gsl_matrix_ushort matrix;
++} _gsl_matrix_ushort_const_view;
++
++typedef const _gsl_matrix_ushort_const_view gsl_matrix_ushort_const_view;
++
++/* Allocation */
++
++gsl_matrix_ushort * 
++gsl_matrix_ushort_alloc (const size_t n1, const size_t n2);
++
++gsl_matrix_ushort * 
++gsl_matrix_ushort_calloc (const size_t n1, const size_t n2);
++
++gsl_matrix_ushort * 
++gsl_matrix_ushort_alloc_from_block (gsl_block_ushort * b, 
++                                   const size_t offset, 
++                                   const size_t n1, 
++                                   const size_t n2, 
++                                   const size_t d2);
++
++gsl_matrix_ushort * 
++gsl_matrix_ushort_alloc_from_matrix (gsl_matrix_ushort * m,
++                                    const size_t k1, 
++                                    const size_t k2,
++                                    const size_t n1, 
++                                    const size_t n2);
++
++gsl_vector_ushort * 
++gsl_vector_ushort_alloc_row_from_matrix (gsl_matrix_ushort * m,
++                                        const size_t i);
++
++gsl_vector_ushort * 
++gsl_vector_ushort_alloc_col_from_matrix (gsl_matrix_ushort * m,
++                                        const size_t j);
++
++void gsl_matrix_ushort_free (gsl_matrix_ushort * m);
++
++/* Views */
++
++_gsl_matrix_ushort_view 
++gsl_matrix_ushort_submatrix (gsl_matrix_ushort * m, 
++                            const size_t i, const size_t j, 
++                            const size_t n1, const size_t n2);
++
++_gsl_vector_ushort_view 
++gsl_matrix_ushort_row (gsl_matrix_ushort * m, const size_t i);
++
++_gsl_vector_ushort_view 
++gsl_matrix_ushort_column (gsl_matrix_ushort * m, const size_t j);
++
++_gsl_vector_ushort_view 
++gsl_matrix_ushort_diagonal (gsl_matrix_ushort * m);
++
++_gsl_vector_ushort_view 
++gsl_matrix_ushort_subdiagonal (gsl_matrix_ushort * m, const size_t k);
++
++_gsl_vector_ushort_view 
++gsl_matrix_ushort_superdiagonal (gsl_matrix_ushort * m, const size_t k);
++
++_gsl_vector_ushort_view
++gsl_matrix_ushort_subrow (gsl_matrix_ushort * m, const size_t i,
++                         const size_t offset, const size_t n);
++
++_gsl_vector_ushort_view
++gsl_matrix_ushort_subcolumn (gsl_matrix_ushort * m, const size_t j,
++                            const size_t offset, const size_t n);
++
++_gsl_matrix_ushort_view
++gsl_matrix_ushort_view_array (unsigned short * base,
++                             const size_t n1, 
++                             const size_t n2);
++
++_gsl_matrix_ushort_view
++gsl_matrix_ushort_view_array_with_tda (unsigned short * base, 
++                                      const size_t n1, 
++                                      const size_t n2,
++                                      const size_t tda);
++
++
++_gsl_matrix_ushort_view
++gsl_matrix_ushort_view_vector (gsl_vector_ushort * v,
++                              const size_t n1, 
++                              const size_t n2);
++
++_gsl_matrix_ushort_view
++gsl_matrix_ushort_view_vector_with_tda (gsl_vector_ushort * v,
++                                       const size_t n1, 
++                                       const size_t n2,
++                                       const size_t tda);
++
++
++_gsl_matrix_ushort_const_view 
++gsl_matrix_ushort_const_submatrix (const gsl_matrix_ushort * m, 
++                                  const size_t i, const size_t j, 
++                                  const size_t n1, const size_t n2);
++
++_gsl_vector_ushort_const_view 
++gsl_matrix_ushort_const_row (const gsl_matrix_ushort * m, 
++                            const size_t i);
++
++_gsl_vector_ushort_const_view 
++gsl_matrix_ushort_const_column (const gsl_matrix_ushort * m, 
++                               const size_t j);
++
++_gsl_vector_ushort_const_view
++gsl_matrix_ushort_const_diagonal (const gsl_matrix_ushort * m);
++
++_gsl_vector_ushort_const_view 
++gsl_matrix_ushort_const_subdiagonal (const gsl_matrix_ushort * m, 
++                                    const size_t k);
++
++_gsl_vector_ushort_const_view 
++gsl_matrix_ushort_const_superdiagonal (const gsl_matrix_ushort * m, 
++                                      const size_t k);
++
++_gsl_vector_ushort_const_view
++gsl_matrix_ushort_const_subrow (const gsl_matrix_ushort * m, const size_t i,
++                               const size_t offset, const size_t n);
++
++_gsl_vector_ushort_const_view
++gsl_matrix_ushort_const_subcolumn (const gsl_matrix_ushort * m, const size_t j,
++                                  const size_t offset, const size_t n);
++
++_gsl_matrix_ushort_const_view
++gsl_matrix_ushort_const_view_array (const unsigned short * base,
++                                   const size_t n1, 
++                                   const size_t n2);
++
++_gsl_matrix_ushort_const_view
++gsl_matrix_ushort_const_view_array_with_tda (const unsigned short * base, 
++                                            const size_t n1, 
++                                            const size_t n2,
++                                            const size_t tda);
++
++_gsl_matrix_ushort_const_view
++gsl_matrix_ushort_const_view_vector (const gsl_vector_ushort * v,
++                                    const size_t n1, 
++                                    const size_t n2);
++
++_gsl_matrix_ushort_const_view
++gsl_matrix_ushort_const_view_vector_with_tda (const gsl_vector_ushort * v,
++                                             const size_t n1, 
++                                             const size_t n2,
++                                             const size_t tda);
++
++/* Operations */
++
++void gsl_matrix_ushort_set_zero (gsl_matrix_ushort * m);
++void gsl_matrix_ushort_set_identity (gsl_matrix_ushort * m);
++void gsl_matrix_ushort_set_all (gsl_matrix_ushort * m, unsigned short x);
++
++int gsl_matrix_ushort_fread (FILE * stream, gsl_matrix_ushort * m) ;
++int gsl_matrix_ushort_fwrite (FILE * stream, const gsl_matrix_ushort * m) ;
++int gsl_matrix_ushort_fscanf (FILE * stream, gsl_matrix_ushort * m);
++int gsl_matrix_ushort_fprintf (FILE * stream, const gsl_matrix_ushort * m, const char * format);
++ 
++int gsl_matrix_ushort_memcpy(gsl_matrix_ushort * dest, const gsl_matrix_ushort * src);
++int gsl_matrix_ushort_swap(gsl_matrix_ushort * m1, gsl_matrix_ushort * m2);
++
++int gsl_matrix_ushort_swap_rows(gsl_matrix_ushort * m, const size_t i, const size_t j);
++int gsl_matrix_ushort_swap_columns(gsl_matrix_ushort * m, const size_t i, const size_t j);
++int gsl_matrix_ushort_swap_rowcol(gsl_matrix_ushort * m, const size_t i, const size_t j);
++int gsl_matrix_ushort_transpose (gsl_matrix_ushort * m);
++int gsl_matrix_ushort_transpose_memcpy (gsl_matrix_ushort * dest, const gsl_matrix_ushort * src);
++
++unsigned short gsl_matrix_ushort_max (const gsl_matrix_ushort * m);
++unsigned short gsl_matrix_ushort_min (const gsl_matrix_ushort * m);
++void gsl_matrix_ushort_minmax (const gsl_matrix_ushort * m, unsigned short * min_out, unsigned short * max_out);
++
++void gsl_matrix_ushort_max_index (const gsl_matrix_ushort * m, size_t * imax, size_t *jmax);
++void gsl_matrix_ushort_min_index (const gsl_matrix_ushort * m, size_t * imin, size_t *jmin);
++void gsl_matrix_ushort_minmax_index (const gsl_matrix_ushort * m, size_t * imin, size_t * jmin, size_t * imax, size_t * jmax);
++
++int gsl_matrix_ushort_equal (const gsl_matrix_ushort * a, const gsl_matrix_ushort * b);
++
++int gsl_matrix_ushort_isnull (const gsl_matrix_ushort * m);
++int gsl_matrix_ushort_ispos (const gsl_matrix_ushort * m);
++int gsl_matrix_ushort_isneg (const gsl_matrix_ushort * m);
++int gsl_matrix_ushort_isnonneg (const gsl_matrix_ushort * m);
++
++int gsl_matrix_ushort_add (gsl_matrix_ushort * a, const gsl_matrix_ushort * b);
++int gsl_matrix_ushort_sub (gsl_matrix_ushort * a, const gsl_matrix_ushort * b);
++int gsl_matrix_ushort_mul_elements (gsl_matrix_ushort * a, const gsl_matrix_ushort * b);
++int gsl_matrix_ushort_div_elements (gsl_matrix_ushort * a, const gsl_matrix_ushort * b);
++int gsl_matrix_ushort_scale (gsl_matrix_ushort * a, const double x);
++int gsl_matrix_ushort_add_constant (gsl_matrix_ushort * a, const double x);
++int gsl_matrix_ushort_add_diagonal (gsl_matrix_ushort * a, const double x);
++
++/***********************************************************************/
++/* The functions below are obsolete                                    */
++/***********************************************************************/
++int gsl_matrix_ushort_get_row(gsl_vector_ushort * v, const gsl_matrix_ushort * m, const size_t i);
++int gsl_matrix_ushort_get_col(gsl_vector_ushort * v, const gsl_matrix_ushort * m, const size_t j);
++int gsl_matrix_ushort_set_row(gsl_matrix_ushort * m, const size_t i, const gsl_vector_ushort * v);
++int gsl_matrix_ushort_set_col(gsl_matrix_ushort * m, const size_t j, const gsl_vector_ushort * v);
++/***********************************************************************/
++
++/* inline functions if you are using GCC */
++
++INLINE_DECL unsigned short   gsl_matrix_ushort_get(const gsl_matrix_ushort * m, const size_t i, const size_t j);
++INLINE_DECL void    gsl_matrix_ushort_set(gsl_matrix_ushort * m, const size_t i, const size_t j, const unsigned short x);
++INLINE_DECL unsigned short * gsl_matrix_ushort_ptr(gsl_matrix_ushort * m, const size_t i, const size_t j);
++INLINE_DECL const unsigned short * gsl_matrix_ushort_const_ptr(const gsl_matrix_ushort * m, const size_t i, const size_t j);
++
++#ifdef HAVE_INLINE
++INLINE_FUN 
++unsigned short
++gsl_matrix_ushort_get(const gsl_matrix_ushort * m, const size_t i, const size_t j)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(1)) 
++    {
++      if (i >= m->size1)
++        {
++          GSL_ERROR_VAL("first index out of range", GSL_EINVAL, 0) ;
++        }
++      else if (j >= m->size2)
++        {
++          GSL_ERROR_VAL("second index out of range", GSL_EINVAL, 0) ;
++        }
++    }
++#endif
++  return m->data[i * m->tda + j] ;
++} 
++
++INLINE_FUN 
++void
++gsl_matrix_ushort_set(gsl_matrix_ushort * m, const size_t i, const size_t j, const unsigned short x)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(1)) 
++    {
++      if (i >= m->size1)
++        {
++          GSL_ERROR_VOID("first index out of range", GSL_EINVAL) ;
++        }
++      else if (j >= m->size2)
++        {
++          GSL_ERROR_VOID("second index out of range", GSL_EINVAL) ;
++        }
++    }
++#endif
++  m->data[i * m->tda + j] = x ;
++}
++
++INLINE_FUN 
++unsigned short *
++gsl_matrix_ushort_ptr(gsl_matrix_ushort * m, const size_t i, const size_t j)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(1)) 
++    {
++      if (i >= m->size1)
++        {
++          GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
++        }
++      else if (j >= m->size2)
++        {
++          GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
++        }
++    }
++#endif
++  return (unsigned short *) (m->data + (i * m->tda + j)) ;
++} 
++
++INLINE_FUN 
++const unsigned short *
++gsl_matrix_ushort_const_ptr(const gsl_matrix_ushort * m, const size_t i, const size_t j)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(1)) 
++    {
++      if (i >= m->size1)
++        {
++          GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
++        }
++      else if (j >= m->size2)
++        {
++          GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
++        }
++    }
++#endif
++  return (const unsigned short *) (m->data + (i * m->tda + j)) ;
++} 
++
++#endif
++
++__END_DECLS
++
++#endif /* __GSL_MATRIX_USHORT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_short.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_short.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_short.h	(revision 14078)
+@@ -0,0 +1,79 @@
++/* statistics/gsl_statistics_short.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_STATISTICS_SHORT_H__
++#define __GSL_STATISTICS_SHORT_H__
++
++#include <stddef.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++double gsl_stats_short_mean (const short data[], const size_t stride, const size_t n);
++double gsl_stats_short_variance (const short data[], const size_t stride, const size_t n);
++double gsl_stats_short_sd (const short data[], const size_t stride, const size_t n);
++double gsl_stats_short_variance_with_fixed_mean (const short data[], const size_t stride, const size_t n, const double mean);
++double gsl_stats_short_sd_with_fixed_mean (const short data[], const size_t stride, const size_t n, const double mean);
++double gsl_stats_short_tss (const short data[], const size_t stride, const size_t n);
++double gsl_stats_short_tss_m (const short data[], const size_t stride, const size_t n, const double mean);
++
++double gsl_stats_short_absdev (const short data[], const size_t stride, const size_t n);
++double gsl_stats_short_skew (const short data[], const size_t stride, const size_t n);
++double gsl_stats_short_kurtosis (const short data[], const size_t stride, const size_t n);
++double gsl_stats_short_lag1_autocorrelation (const short data[], const size_t stride, const size_t n);
++
++double gsl_stats_short_covariance (const short data1[], const size_t stride1,const short data2[], const size_t stride2, const size_t n);
++double gsl_stats_short_correlation (const short data1[], const size_t stride1,const short data2[], const size_t stride2, const size_t n);
++
++double gsl_stats_short_variance_m (const short data[], const size_t stride, const size_t n, const double mean);
++double gsl_stats_short_sd_m (const short data[], const size_t stride, const size_t n, const double mean);
++double gsl_stats_short_absdev_m (const short data[], const size_t stride, const size_t n, const double mean);
++double gsl_stats_short_skew_m_sd (const short data[], const size_t stride, const size_t n, const double mean, const double sd);
++double gsl_stats_short_kurtosis_m_sd (const short data[], const size_t stride, const size_t n, const double mean, const double sd);
++double gsl_stats_short_lag1_autocorrelation_m (const short data[], const size_t stride, const size_t n, const double mean);
++
++double gsl_stats_short_covariance_m (const short data1[], const size_t stride1,const short data2[], const size_t stride2, const size_t n, const double mean1, const double mean2);
++
++
++double gsl_stats_short_pvariance (const short data1[], const size_t stride1, const size_t n1, const short data2[], const size_t stride2, const size_t n2);
++double gsl_stats_short_ttest (const short data1[], const size_t stride1, const size_t n1, const short data2[], const size_t stride2, const size_t n2);
++
++short gsl_stats_short_max (const short data[], const size_t stride, const size_t n);
++short gsl_stats_short_min (const short data[], const size_t stride, const size_t n);
++void gsl_stats_short_minmax (short * min, short * max, const short data[], const size_t stride, const size_t n);
++
++size_t gsl_stats_short_max_index (const short data[], const size_t stride, const size_t n);
++size_t gsl_stats_short_min_index (const short data[], const size_t stride, const size_t n);
++void gsl_stats_short_minmax_index (size_t * min_index, size_t * max_index, const short data[], const size_t stride, const size_t n);
++
++double gsl_stats_short_median_from_sorted_data (const short sorted_data[], const size_t stride, const size_t n) ;
++double gsl_stats_short_quantile_from_sorted_data (const short sorted_data[], const size_t stride, const size_t n, const double f) ;
++
++__END_DECLS
++
++#endif /* __GSL_STATISTICS_SHORT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_nan.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_nan.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_nan.h	(revision 14078)
+@@ -0,0 +1,45 @@
++/* gsl_nan.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_NAN_H__
++#define __GSL_NAN_H__
++
++#ifdef INFINITY
++# define GSL_POSINF INFINITY
++# define GSL_NEGINF (-INFINITY)
++#elif defined(HUGE_VAL)
++# define GSL_POSINF HUGE_VAL
++# define GSL_NEGINF (-HUGE_VAL)
++#else
++# define GSL_POSINF (gsl_posinf())
++# define GSL_NEGINF (gsl_neginf())
++#endif
++
++#ifdef NAN
++# define GSL_NAN NAN
++#elif defined(INFINITY)
++# define GSL_NAN (INFINITY/INFINITY)
++#else
++# define GSL_NAN (gsl_nan())
++#endif
++
++#define GSL_POSZERO (+0.0)
++#define GSL_NEGZERO (-0.0)
++
++#endif /* __GSL_NAN_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_legendre.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_legendre.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_legendre.h	(revision 14078)
+@@ -0,0 +1,315 @@
++/* specfunc/gsl_sf_legendre.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2004 Gerard Jungman
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++/* Author:  G. Jungman */
++
++#ifndef __GSL_SF_LEGENDRE_H__
++#define __GSL_SF_LEGENDRE_H__
++
++#include <gsl/gsl_sf_result.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++
++/* P_l(x)   l >= 0; |x| <= 1
++ *
++ * exceptions: GSL_EDOM
++ */
++int     gsl_sf_legendre_Pl_e(const int l, const double x, gsl_sf_result * result);
++double  gsl_sf_legendre_Pl(const int l, const double x);
++
++
++/* P_l(x) for l=0,...,lmax; |x| <= 1
++ *
++ * exceptions: GSL_EDOM
++ */
++int gsl_sf_legendre_Pl_array(
++  const int lmax, const double x,
++  double * result_array
++  );
++
++
++/* P_l(x) and P_l'(x) for l=0,...,lmax; |x| <= 1
++ *
++ * exceptions: GSL_EDOM
++ */
++int gsl_sf_legendre_Pl_deriv_array(
++  const int lmax, const double x,
++  double * result_array,
++  double * result_deriv_array
++  );
++
++
++/* P_l(x), l=1,2,3
++ *
++ * exceptions: none
++ */
++int gsl_sf_legendre_P1_e(double x, gsl_sf_result * result);
++int gsl_sf_legendre_P2_e(double x, gsl_sf_result * result);
++int gsl_sf_legendre_P3_e(double x, gsl_sf_result * result);
++double gsl_sf_legendre_P1(const double x);
++double gsl_sf_legendre_P2(const double x);
++double gsl_sf_legendre_P3(const double x);
++
++
++/* Q_0(x), x > -1, x != 1
++ *
++ * exceptions: GSL_EDOM
++ */
++int gsl_sf_legendre_Q0_e(const double x, gsl_sf_result * result);
++double gsl_sf_legendre_Q0(const double x);
++
++
++/* Q_1(x), x > -1, x != 1
++ *
++ * exceptions: GSL_EDOM
++ */
++int gsl_sf_legendre_Q1_e(const double x, gsl_sf_result * result);
++double gsl_sf_legendre_Q1(const double x);
++
++
++/* Q_l(x), x > -1, x != 1, l >= 0
++ *
++ * exceptions: GSL_EDOM
++ */
++int gsl_sf_legendre_Ql_e(const int l, const double x, gsl_sf_result * result);
++double gsl_sf_legendre_Ql(const int l, const double x);
++
++
++/* P_l^m(x)  m >= 0; l >= m; |x| <= 1.0
++ *
++ * Note that this function grows combinatorially with l.
++ * Therefore we can easily generate an overflow for l larger
++ * than about 150.
++ *
++ * There is no trouble for small m, but when m and l are both large,
++ * then there will be trouble. Rather than allow overflows, these
++ * functions refuse to calculate when they can sense that l and m are
++ * too big.
++ *
++ * If you really want to calculate a spherical harmonic, then DO NOT
++ * use this. Instead use legendre_sphPlm() below, which  uses a similar
++ * recursion, but with the normalized functions.
++ *
++ * exceptions: GSL_EDOM, GSL_EOVRFLW
++ */
++int     gsl_sf_legendre_Plm_e(const int l, const int m, const double x, gsl_sf_result * result);
++double  gsl_sf_legendre_Plm(const int l, const int m, const double x);
++
++
++/* P_l^m(x)  m >= 0; l >= m; |x| <= 1.0
++ * l=|m|,...,lmax
++ *
++ * exceptions: GSL_EDOM, GSL_EOVRFLW
++ */
++int gsl_sf_legendre_Plm_array(
++  const int lmax, const int m, const double x,
++  double * result_array
++  );
++
++
++/* P_l^m(x)  and d(P_l^m(x))/dx;  m >= 0; lmax >= m; |x| <= 1.0
++ * l=|m|,...,lmax
++ *
++ * exceptions: GSL_EDOM, GSL_EOVRFLW
++ */
++int gsl_sf_legendre_Plm_deriv_array(
++  const int lmax, const int m, const double x,
++  double * result_array,
++  double * result_deriv_array
++  );
++
++
++/* P_l^m(x), normalized properly for use in spherical harmonics
++ * m >= 0; l >= m; |x| <= 1.0
++ *
++ * There is no overflow problem, as there is for the
++ * standard normalization of P_l^m(x).
++ *
++ * Specifically, it returns:
++ *
++ *        sqrt((2l+1)/(4pi)) sqrt((l-m)!/(l+m)!) P_l^m(x)
++ *
++ * exceptions: GSL_EDOM
++ */
++int     gsl_sf_legendre_sphPlm_e(const int l, int m, const double x, gsl_sf_result * result);
++double  gsl_sf_legendre_sphPlm(const int l, const int m, const double x);
++
++
++/* sphPlm(l,m,x) values
++ * m >= 0; l >= m; |x| <= 1.0
++ * l=|m|,...,lmax
++ *
++ * exceptions: GSL_EDOM
++ */
++int gsl_sf_legendre_sphPlm_array(
++  const int lmax, int m, const double x,
++  double * result_array
++  );
++
++
++/* sphPlm(l,m,x) and d(sphPlm(l,m,x))/dx values
++ * m >= 0; l >= m; |x| <= 1.0
++ * l=|m|,...,lmax
++ *
++ * exceptions: GSL_EDOM
++ */
++int gsl_sf_legendre_sphPlm_deriv_array(
++  const int lmax, const int m, const double x,
++  double * result_array,
++  double * result_deriv_array
++  );
++
++
++
++/* size of result_array[] needed for the array versions of Plm
++ * (lmax - m + 1)
++ */
++int gsl_sf_legendre_array_size(const int lmax, const int m);
++
++/* Irregular Spherical Conical Function
++ * P^{1/2}_{-1/2 + I lambda}(x)
++ *
++ * x > -1.0
++ * exceptions: GSL_EDOM
++ */
++int gsl_sf_conicalP_half_e(const double lambda, const double x, gsl_sf_result * result);
++double gsl_sf_conicalP_half(const double lambda, const double x);
++
++
++/* Regular Spherical Conical Function
++ * P^{-1/2}_{-1/2 + I lambda}(x)
++ *
++ * x > -1.0
++ * exceptions: GSL_EDOM
++ */
++int gsl_sf_conicalP_mhalf_e(const double lambda, const double x, gsl_sf_result * result);
++double gsl_sf_conicalP_mhalf(const double lambda, const double x);
++
++
++/* Conical Function
++ * P^{0}_{-1/2 + I lambda}(x)
++ *
++ * x > -1.0
++ * exceptions: GSL_EDOM
++ */
++int gsl_sf_conicalP_0_e(const double lambda, const double x, gsl_sf_result * result);
++double gsl_sf_conicalP_0(const double lambda, const double x);
++
++
++/* Conical Function
++ * P^{1}_{-1/2 + I lambda}(x)
++ *
++ * x > -1.0
++ * exceptions: GSL_EDOM
++ */
++int gsl_sf_conicalP_1_e(const double lambda, const double x, gsl_sf_result * result);
++double gsl_sf_conicalP_1(const double lambda, const double x);
++
++
++/* Regular Spherical Conical Function
++ * P^{-1/2-l}_{-1/2 + I lambda}(x)
++ *
++ * x > -1.0, l >= -1
++ * exceptions: GSL_EDOM
++ */
++int gsl_sf_conicalP_sph_reg_e(const int l, const double lambda, const double x, gsl_sf_result * result);
++double gsl_sf_conicalP_sph_reg(const int l, const double lambda, const double x);
++
++
++/* Regular Cylindrical Conical Function
++ * P^{-m}_{-1/2 + I lambda}(x)
++ *
++ * x > -1.0, m >= -1
++ * exceptions: GSL_EDOM
++ */
++int gsl_sf_conicalP_cyl_reg_e(const int m, const double lambda, const double x, gsl_sf_result * result);
++double gsl_sf_conicalP_cyl_reg(const int m, const double lambda, const double x);
++
++
++/* The following spherical functions are specializations
++ * of Legendre functions which give the regular eigenfunctions
++ * of the Laplacian on a 3-dimensional hyperbolic space.
++ * Of particular interest is the flat limit, which is
++ * Flat-Lim := {lambda->Inf, eta->0, lambda*eta fixed}.
++ */
++  
++/* Zeroth radial eigenfunction of the Laplacian on the
++ * 3-dimensional hyperbolic space.
++ *
++ * legendre_H3d_0(lambda,eta) := sin(lambda*eta)/(lambda*sinh(eta))
++ * 
++ * Normalization:
++ * Flat-Lim legendre_H3d_0(lambda,eta) = j_0(lambda*eta)
++ *
++ * eta >= 0.0
++ * exceptions: GSL_EDOM
++ */
++int gsl_sf_legendre_H3d_0_e(const double lambda, const double eta, gsl_sf_result * result);
++double gsl_sf_legendre_H3d_0(const double lambda, const double eta);
++
++
++/* First radial eigenfunction of the Laplacian on the
++ * 3-dimensional hyperbolic space.
++ *
++ * legendre_H3d_1(lambda,eta) :=
++ *    1/sqrt(lambda^2 + 1) sin(lam eta)/(lam sinh(eta))
++ *    (coth(eta) - lambda cot(lambda*eta))
++ * 
++ * Normalization:
++ * Flat-Lim legendre_H3d_1(lambda,eta) = j_1(lambda*eta)
++ *
++ * eta >= 0.0
++ * exceptions: GSL_EDOM
++ */
++int gsl_sf_legendre_H3d_1_e(const double lambda, const double eta, gsl_sf_result * result);
++double gsl_sf_legendre_H3d_1(const double lambda, const double eta);
++
++
++/* l'th radial eigenfunction of the Laplacian on the
++ * 3-dimensional hyperbolic space.
++ *
++ * Normalization:
++ * Flat-Lim legendre_H3d_l(l,lambda,eta) = j_l(lambda*eta)
++ *
++ * eta >= 0.0, l >= 0
++ * exceptions: GSL_EDOM
++ */
++int gsl_sf_legendre_H3d_e(const int l, const double lambda, const double eta, gsl_sf_result * result);
++double gsl_sf_legendre_H3d(const int l, const double lambda, const double eta);
++
++
++/* Array of H3d(ell),  0 <= ell <= lmax
++ */
++int gsl_sf_legendre_H3d_array(const int lmax, const double lambda, const double eta, double * result_array);
++
++
++__END_DECLS
++
++#endif /* __GSL_SF_LEGENDRE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_int.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_int.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_int.h	(revision 14078)
+@@ -0,0 +1,45 @@
++/* permutation/gsl_permute_vector_int.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_PERMUTE_VECTOR_INT_H__
++#define __GSL_PERMUTE_VECTOR_INT_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_permutation.h>
++#include <gsl/gsl_vector_int.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++int gsl_permute_vector_int (const gsl_permutation * p, gsl_vector_int * v);
++int gsl_permute_vector_int_inverse (const gsl_permutation * p, gsl_vector_int * v);
++
++__END_DECLS
++
++#endif /* __GSL_PERMUTE_VECTOR_INT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_complex_float.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_complex_float.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_complex_float.h	(revision 14078)
+@@ -0,0 +1,251 @@
++/* vector/gsl_vector_complex_float.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_VECTOR_COMPLEX_FLOAT_H__
++#define __GSL_VECTOR_COMPLEX_FLOAT_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_types.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_complex.h>
++#include <gsl/gsl_check_range.h>
++#include <gsl/gsl_vector_float.h>
++#include <gsl/gsl_vector_complex.h>
++#include <gsl/gsl_block_complex_float.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++typedef struct 
++{
++  size_t size;
++  size_t stride;
++  float *data;
++  gsl_block_complex_float *block;
++  int owner;
++} gsl_vector_complex_float;
++
++typedef struct
++{
++  gsl_vector_complex_float vector;
++} _gsl_vector_complex_float_view;
++
++typedef _gsl_vector_complex_float_view gsl_vector_complex_float_view;
++
++typedef struct
++{
++  gsl_vector_complex_float vector;
++} _gsl_vector_complex_float_const_view;
++
++typedef const _gsl_vector_complex_float_const_view gsl_vector_complex_float_const_view;
++
++/* Allocation */
++
++gsl_vector_complex_float *gsl_vector_complex_float_alloc (const size_t n);
++gsl_vector_complex_float *gsl_vector_complex_float_calloc (const size_t n);
++
++gsl_vector_complex_float *
++gsl_vector_complex_float_alloc_from_block (gsl_block_complex_float * b, 
++                                           const size_t offset, 
++                                           const size_t n, 
++                                           const size_t stride);
++
++gsl_vector_complex_float *
++gsl_vector_complex_float_alloc_from_vector (gsl_vector_complex_float * v, 
++                                             const size_t offset, 
++                                             const size_t n, 
++                                             const size_t stride);
++
++void gsl_vector_complex_float_free (gsl_vector_complex_float * v);
++
++/* Views */
++
++_gsl_vector_complex_float_view
++gsl_vector_complex_float_view_array (float *base,
++                                     size_t n);
++
++_gsl_vector_complex_float_view
++gsl_vector_complex_float_view_array_with_stride (float *base,
++                                                 size_t stride,
++                                                 size_t n);
++
++_gsl_vector_complex_float_const_view
++gsl_vector_complex_float_const_view_array (const float *base,
++                                           size_t n);
++
++_gsl_vector_complex_float_const_view
++gsl_vector_complex_float_const_view_array_with_stride (const float *base,
++                                                       size_t stride,
++                                                       size_t n);
++
++_gsl_vector_complex_float_view
++gsl_vector_complex_float_subvector (gsl_vector_complex_float *base,
++                                         size_t i, 
++                                         size_t n);
++
++
++_gsl_vector_complex_float_view 
++gsl_vector_complex_float_subvector_with_stride (gsl_vector_complex_float *v, 
++                                                size_t i, 
++                                                size_t stride, 
++                                                size_t n);
++
++_gsl_vector_complex_float_const_view
++gsl_vector_complex_float_const_subvector (const gsl_vector_complex_float *base,
++                                               size_t i, 
++                                               size_t n);
++
++
++_gsl_vector_complex_float_const_view 
++gsl_vector_complex_float_const_subvector_with_stride (const gsl_vector_complex_float *v, 
++                                                      size_t i, 
++                                                      size_t stride, 
++                                                      size_t n);
++
++_gsl_vector_float_view
++gsl_vector_complex_float_real (gsl_vector_complex_float *v);
++
++_gsl_vector_float_view 
++gsl_vector_complex_float_imag (gsl_vector_complex_float *v);
++
++_gsl_vector_float_const_view
++gsl_vector_complex_float_const_real (const gsl_vector_complex_float *v);
++
++_gsl_vector_float_const_view 
++gsl_vector_complex_float_const_imag (const gsl_vector_complex_float *v);
++
++
++/* Operations */
++
++void gsl_vector_complex_float_set_zero (gsl_vector_complex_float * v);
++void gsl_vector_complex_float_set_all (gsl_vector_complex_float * v,
++                                       gsl_complex_float z);
++int gsl_vector_complex_float_set_basis (gsl_vector_complex_float * v, size_t i);
++
++int gsl_vector_complex_float_fread (FILE * stream,
++                                    gsl_vector_complex_float * v);
++int gsl_vector_complex_float_fwrite (FILE * stream,
++                                     const gsl_vector_complex_float * v);
++int gsl_vector_complex_float_fscanf (FILE * stream,
++                                     gsl_vector_complex_float * v);
++int gsl_vector_complex_float_fprintf (FILE * stream,
++                                      const gsl_vector_complex_float * v,
++                                      const char *format);
++
++int gsl_vector_complex_float_memcpy (gsl_vector_complex_float * dest, const gsl_vector_complex_float * src);
++
++int gsl_vector_complex_float_reverse (gsl_vector_complex_float * v);
++
++int gsl_vector_complex_float_swap (gsl_vector_complex_float * v, gsl_vector_complex_float * w);
++int gsl_vector_complex_float_swap_elements (gsl_vector_complex_float * v, const size_t i, const size_t j);
++
++int gsl_vector_complex_float_equal (const gsl_vector_complex_float * u, 
++                                    const gsl_vector_complex_float * v);
++
++int gsl_vector_complex_float_isnull (const gsl_vector_complex_float * v);
++int gsl_vector_complex_float_ispos (const gsl_vector_complex_float * v);
++int gsl_vector_complex_float_isneg (const gsl_vector_complex_float * v);
++int gsl_vector_complex_float_isnonneg (const gsl_vector_complex_float * v);
++
++int gsl_vector_complex_float_add (gsl_vector_complex_float * a, const gsl_vector_complex_float * b);
++int gsl_vector_complex_float_sub (gsl_vector_complex_float * a, const gsl_vector_complex_float * b);
++int gsl_vector_complex_float_mul (gsl_vector_complex_float * a, const gsl_vector_complex_float * b);
++int gsl_vector_complex_float_div (gsl_vector_complex_float * a, const gsl_vector_complex_float * b);
++int gsl_vector_complex_float_scale (gsl_vector_complex_float * a, const gsl_complex_float x);
++int gsl_vector_complex_float_add_constant (gsl_vector_complex_float * a, const gsl_complex_float x);
++
++INLINE_DECL gsl_complex_float gsl_vector_complex_float_get (const gsl_vector_complex_float * v, const size_t i);
++INLINE_DECL void gsl_vector_complex_float_set (gsl_vector_complex_float * v, const size_t i, gsl_complex_float z);
++INLINE_DECL gsl_complex_float *gsl_vector_complex_float_ptr (gsl_vector_complex_float * v, const size_t i);
++INLINE_DECL const gsl_complex_float *gsl_vector_complex_float_const_ptr (const gsl_vector_complex_float * v, const size_t i);
++
++#ifdef HAVE_INLINE
++
++INLINE_FUN
++gsl_complex_float
++gsl_vector_complex_float_get (const gsl_vector_complex_float * v,
++                              const size_t i)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(i >= v->size))
++    {
++      gsl_complex_float zero = {{0, 0}};
++      GSL_ERROR_VAL ("index out of range", GSL_EINVAL, zero);
++    }
++#endif
++  return *GSL_COMPLEX_FLOAT_AT (v, i);
++}
++
++INLINE_FUN
++void
++gsl_vector_complex_float_set (gsl_vector_complex_float * v,
++                              const size_t i, gsl_complex_float z)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(i >= v->size))
++    {
++      GSL_ERROR_VOID ("index out of range", GSL_EINVAL);
++    }
++#endif
++  *GSL_COMPLEX_FLOAT_AT (v, i) = z;
++}
++
++INLINE_FUN
++gsl_complex_float *
++gsl_vector_complex_float_ptr (gsl_vector_complex_float * v,
++                              const size_t i)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(i >= v->size))
++    {
++      GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
++    }
++#endif
++  return GSL_COMPLEX_FLOAT_AT (v, i);
++}
++
++INLINE_FUN
++const gsl_complex_float *
++gsl_vector_complex_float_const_ptr (const gsl_vector_complex_float * v,
++                                    const size_t i)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(i >= v->size))
++    {
++      GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
++    }
++#endif
++  return GSL_COMPLEX_FLOAT_AT (v, i);
++}
++
++
++#endif /* HAVE_INLINE */
++
++__END_DECLS
++
++#endif /* __GSL_VECTOR_COMPLEX_FLOAT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_lambert.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_lambert.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_lambert.h	(revision 14078)
+@@ -0,0 +1,69 @@
++/* specfunc/gsl_sf_lambert.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 Gerard Jungman
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++/* Author:  G. Jungman */
++
++#ifndef __GSL_SF_LAMBERT_H__
++#define __GSL_SF_LAMBERT_H__
++
++#include <gsl/gsl_sf_result.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++
++/* Lambert's Function W_0(x)
++ *
++ * W_0(x) is the principal branch of the
++ * implicit function defined by W e^W = x.
++ *
++ * -1/E < x < \infty
++ *
++ * exceptions: GSL_EMAXITER;
++ */
++int     gsl_sf_lambert_W0_e(double x, gsl_sf_result * result);
++double  gsl_sf_lambert_W0(double x);
++
++
++/* Lambert's Function W_{-1}(x)
++ *
++ * W_{-1}(x) is the second real branch of the
++ * implicit function defined by W e^W = x.
++ * It agrees with W_0(x) when x >= 0.
++ *
++ * -1/E < x < \infty
++ *
++ * exceptions: GSL_MAXITER;
++ */
++int     gsl_sf_lambert_Wm1_e(double x, gsl_sf_result * result);
++double  gsl_sf_lambert_Wm1(double x);
++
++
++__END_DECLS
++
++#endif /* __GSL_SF_LAMBERT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_char.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_char.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_char.h	(revision 14078)
+@@ -0,0 +1,44 @@
++/* permutation/gsl_permute_char.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_PERMUTE_CHAR_H__
++#define __GSL_PERMUTE_CHAR_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_permutation.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++int gsl_permute_char (const size_t * p, char * data, const size_t stride, const size_t n);
++int gsl_permute_char_inverse (const size_t * p, char * data, const size_t stride, const size_t n);
++
++__END_DECLS
++
++#endif /* __GSL_PERMUTE_CHAR_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_float.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_float.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_float.h	(revision 14078)
+@@ -0,0 +1,65 @@
++/* block/gsl_block_float.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_BLOCK_FLOAT_H__
++#define __GSL_BLOCK_FLOAT_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++struct gsl_block_float_struct
++{
++  size_t size;
++  float *data;
++};
++
++typedef struct gsl_block_float_struct gsl_block_float;
++
++gsl_block_float *gsl_block_float_alloc (const size_t n);
++gsl_block_float *gsl_block_float_calloc (const size_t n);
++void gsl_block_float_free (gsl_block_float * b);
++
++int gsl_block_float_fread (FILE * stream, gsl_block_float * b);
++int gsl_block_float_fwrite (FILE * stream, const gsl_block_float * b);
++int gsl_block_float_fscanf (FILE * stream, gsl_block_float * b);
++int gsl_block_float_fprintf (FILE * stream, const gsl_block_float * b, const char *format);
++
++int gsl_block_float_raw_fread (FILE * stream, float * b, const size_t n, const size_t stride);
++int gsl_block_float_raw_fwrite (FILE * stream, const float * b, const size_t n, const size_t stride);
++int gsl_block_float_raw_fscanf (FILE * stream, float * b, const size_t n, const size_t stride);
++int gsl_block_float_raw_fprintf (FILE * stream, const float * b, const size_t n, const size_t stride, const char *format);
++
++size_t gsl_block_float_size (const gsl_block_float * b);
++float * gsl_block_float_data (const gsl_block_float * b);
++
++__END_DECLS
++
++#endif /* __GSL_BLOCK_FLOAT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_monte_miser.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_monte_miser.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_monte_miser.h	(revision 14078)
+@@ -0,0 +1,97 @@
++/* monte/gsl_monte_miser.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Michael Booth
++ * Copyright (C) 2009 Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++/* Author: MJB */
++
++#ifndef __GSL_MONTE_MISER_H__
++#define __GSL_MONTE_MISER_H__
++
++#include <gsl/gsl_rng.h>
++#include <gsl/gsl_monte.h>
++#include <gsl/gsl_monte_plain.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++typedef struct {
++  size_t min_calls;
++  size_t min_calls_per_bisection;
++  double dither;
++  double estimate_frac;
++  double alpha;
++  size_t dim;
++  int estimate_style;
++  int depth;
++  int verbose;
++  double * x;
++  double * xmid;
++  double * sigma_l;
++  double * sigma_r;
++  double * fmax_l;
++  double * fmax_r;
++  double * fmin_l;
++  double * fmin_r;
++  double * fsum_l;
++  double * fsum_r;
++  double * fsum2_l;
++  double * fsum2_r;
++  size_t * hits_l;
++  size_t * hits_r;
++} gsl_monte_miser_state; 
++
++int gsl_monte_miser_integrate(gsl_monte_function * f, 
++                              const double xl[], const double xh[], 
++                              size_t dim, size_t calls, 
++                              gsl_rng *r, 
++                              gsl_monte_miser_state* state,
++                              double *result, double *abserr);
++
++gsl_monte_miser_state* gsl_monte_miser_alloc(size_t dim);
++
++int gsl_monte_miser_init(gsl_monte_miser_state* state);
++
++void gsl_monte_miser_free(gsl_monte_miser_state* state);
++
++typedef struct {
++  double estimate_frac;
++  size_t min_calls;
++  size_t min_calls_per_bisection;
++  double alpha;
++  double dither;
++} gsl_monte_miser_params;
++
++void gsl_monte_miser_params_get (const gsl_monte_miser_state * state,
++				 gsl_monte_miser_params * params);
++
++void gsl_monte_miser_params_set (gsl_monte_miser_state * state,
++				 const gsl_monte_miser_params * params);
++
++__END_DECLS
++
++#endif /* __GSL_MONTE_MISER_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_int.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_int.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_int.h	(revision 14078)
+@@ -0,0 +1,51 @@
++/* sort/gsl_sort_vector_int.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_SORT_VECTOR_INT_H__
++#define __GSL_SORT_VECTOR_INT_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_permutation.h>
++#include <gsl/gsl_vector_int.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++void gsl_sort_vector_int (gsl_vector_int * v);
++int gsl_sort_vector_int_index (gsl_permutation * p, const gsl_vector_int * v);
++
++int gsl_sort_vector_int_smallest (int * dest, const size_t k, const gsl_vector_int * v);
++int gsl_sort_vector_int_largest (int * dest, const size_t k, const gsl_vector_int * v);
++
++int gsl_sort_vector_int_smallest_index (size_t * p, const size_t k, const gsl_vector_int * v);
++int gsl_sort_vector_int_largest_index (size_t * p, const size_t k, const gsl_vector_int * v);
++
++__END_DECLS
++
++#endif /* __GSL_SORT_VECTOR_INT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_short.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_short.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_short.h	(revision 14078)
+@@ -0,0 +1,350 @@
++/* matrix/gsl_matrix_short.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_MATRIX_SHORT_H__
++#define __GSL_MATRIX_SHORT_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_types.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_inline.h>
++#include <gsl/gsl_check_range.h>
++#include <gsl/gsl_vector_short.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++typedef struct 
++{
++  size_t size1;
++  size_t size2;
++  size_t tda;
++  short * data;
++  gsl_block_short * block;
++  int owner;
++} gsl_matrix_short;
++
++typedef struct
++{
++  gsl_matrix_short matrix;
++} _gsl_matrix_short_view;
++
++typedef _gsl_matrix_short_view gsl_matrix_short_view;
++
++typedef struct
++{
++  gsl_matrix_short matrix;
++} _gsl_matrix_short_const_view;
++
++typedef const _gsl_matrix_short_const_view gsl_matrix_short_const_view;
++
++/* Allocation */
++
++gsl_matrix_short * 
++gsl_matrix_short_alloc (const size_t n1, const size_t n2);
++
++gsl_matrix_short * 
++gsl_matrix_short_calloc (const size_t n1, const size_t n2);
++
++gsl_matrix_short * 
++gsl_matrix_short_alloc_from_block (gsl_block_short * b, 
++                                   const size_t offset, 
++                                   const size_t n1, 
++                                   const size_t n2, 
++                                   const size_t d2);
++
++gsl_matrix_short * 
++gsl_matrix_short_alloc_from_matrix (gsl_matrix_short * m,
++                                    const size_t k1, 
++                                    const size_t k2,
++                                    const size_t n1, 
++                                    const size_t n2);
++
++gsl_vector_short * 
++gsl_vector_short_alloc_row_from_matrix (gsl_matrix_short * m,
++                                        const size_t i);
++
++gsl_vector_short * 
++gsl_vector_short_alloc_col_from_matrix (gsl_matrix_short * m,
++                                        const size_t j);
++
++void gsl_matrix_short_free (gsl_matrix_short * m);
++
++/* Views */
++
++_gsl_matrix_short_view 
++gsl_matrix_short_submatrix (gsl_matrix_short * m, 
++                            const size_t i, const size_t j, 
++                            const size_t n1, const size_t n2);
++
++_gsl_vector_short_view 
++gsl_matrix_short_row (gsl_matrix_short * m, const size_t i);
++
++_gsl_vector_short_view 
++gsl_matrix_short_column (gsl_matrix_short * m, const size_t j);
++
++_gsl_vector_short_view 
++gsl_matrix_short_diagonal (gsl_matrix_short * m);
++
++_gsl_vector_short_view 
++gsl_matrix_short_subdiagonal (gsl_matrix_short * m, const size_t k);
++
++_gsl_vector_short_view 
++gsl_matrix_short_superdiagonal (gsl_matrix_short * m, const size_t k);
++
++_gsl_vector_short_view
++gsl_matrix_short_subrow (gsl_matrix_short * m, const size_t i,
++                         const size_t offset, const size_t n);
++
++_gsl_vector_short_view
++gsl_matrix_short_subcolumn (gsl_matrix_short * m, const size_t j,
++                            const size_t offset, const size_t n);
++
++_gsl_matrix_short_view
++gsl_matrix_short_view_array (short * base,
++                             const size_t n1, 
++                             const size_t n2);
++
++_gsl_matrix_short_view
++gsl_matrix_short_view_array_with_tda (short * base, 
++                                      const size_t n1, 
++                                      const size_t n2,
++                                      const size_t tda);
++
++
++_gsl_matrix_short_view
++gsl_matrix_short_view_vector (gsl_vector_short * v,
++                              const size_t n1, 
++                              const size_t n2);
++
++_gsl_matrix_short_view
++gsl_matrix_short_view_vector_with_tda (gsl_vector_short * v,
++                                       const size_t n1, 
++                                       const size_t n2,
++                                       const size_t tda);
++
++
++_gsl_matrix_short_const_view 
++gsl_matrix_short_const_submatrix (const gsl_matrix_short * m, 
++                                  const size_t i, const size_t j, 
++                                  const size_t n1, const size_t n2);
++
++_gsl_vector_short_const_view 
++gsl_matrix_short_const_row (const gsl_matrix_short * m, 
++                            const size_t i);
++
++_gsl_vector_short_const_view 
++gsl_matrix_short_const_column (const gsl_matrix_short * m, 
++                               const size_t j);
++
++_gsl_vector_short_const_view
++gsl_matrix_short_const_diagonal (const gsl_matrix_short * m);
++
++_gsl_vector_short_const_view 
++gsl_matrix_short_const_subdiagonal (const gsl_matrix_short * m, 
++                                    const size_t k);
++
++_gsl_vector_short_const_view 
++gsl_matrix_short_const_superdiagonal (const gsl_matrix_short * m, 
++                                      const size_t k);
++
++_gsl_vector_short_const_view
++gsl_matrix_short_const_subrow (const gsl_matrix_short * m, const size_t i,
++                               const size_t offset, const size_t n);
++
++_gsl_vector_short_const_view
++gsl_matrix_short_const_subcolumn (const gsl_matrix_short * m, const size_t j,
++                                  const size_t offset, const size_t n);
++
++_gsl_matrix_short_const_view
++gsl_matrix_short_const_view_array (const short * base,
++                                   const size_t n1, 
++                                   const size_t n2);
++
++_gsl_matrix_short_const_view
++gsl_matrix_short_const_view_array_with_tda (const short * base, 
++                                            const size_t n1, 
++                                            const size_t n2,
++                                            const size_t tda);
++
++_gsl_matrix_short_const_view
++gsl_matrix_short_const_view_vector (const gsl_vector_short * v,
++                                    const size_t n1, 
++                                    const size_t n2);
++
++_gsl_matrix_short_const_view
++gsl_matrix_short_const_view_vector_with_tda (const gsl_vector_short * v,
++                                             const size_t n1, 
++                                             const size_t n2,
++                                             const size_t tda);
++
++/* Operations */
++
++void gsl_matrix_short_set_zero (gsl_matrix_short * m);
++void gsl_matrix_short_set_identity (gsl_matrix_short * m);
++void gsl_matrix_short_set_all (gsl_matrix_short * m, short x);
++
++int gsl_matrix_short_fread (FILE * stream, gsl_matrix_short * m) ;
++int gsl_matrix_short_fwrite (FILE * stream, const gsl_matrix_short * m) ;
++int gsl_matrix_short_fscanf (FILE * stream, gsl_matrix_short * m);
++int gsl_matrix_short_fprintf (FILE * stream, const gsl_matrix_short * m, const char * format);
++ 
++int gsl_matrix_short_memcpy(gsl_matrix_short * dest, const gsl_matrix_short * src);
++int gsl_matrix_short_swap(gsl_matrix_short * m1, gsl_matrix_short * m2);
++
++int gsl_matrix_short_swap_rows(gsl_matrix_short * m, const size_t i, const size_t j);
++int gsl_matrix_short_swap_columns(gsl_matrix_short * m, const size_t i, const size_t j);
++int gsl_matrix_short_swap_rowcol(gsl_matrix_short * m, const size_t i, const size_t j);
++int gsl_matrix_short_transpose (gsl_matrix_short * m);
++int gsl_matrix_short_transpose_memcpy (gsl_matrix_short * dest, const gsl_matrix_short * src);
++
++short gsl_matrix_short_max (const gsl_matrix_short * m);
++short gsl_matrix_short_min (const gsl_matrix_short * m);
++void gsl_matrix_short_minmax (const gsl_matrix_short * m, short * min_out, short * max_out);
++
++void gsl_matrix_short_max_index (const gsl_matrix_short * m, size_t * imax, size_t *jmax);
++void gsl_matrix_short_min_index (const gsl_matrix_short * m, size_t * imin, size_t *jmin);
++void gsl_matrix_short_minmax_index (const gsl_matrix_short * m, size_t * imin, size_t * jmin, size_t * imax, size_t * jmax);
++
++int gsl_matrix_short_equal (const gsl_matrix_short * a, const gsl_matrix_short * b);
++
++int gsl_matrix_short_isnull (const gsl_matrix_short * m);
++int gsl_matrix_short_ispos (const gsl_matrix_short * m);
++int gsl_matrix_short_isneg (const gsl_matrix_short * m);
++int gsl_matrix_short_isnonneg (const gsl_matrix_short * m);
++
++int gsl_matrix_short_add (gsl_matrix_short * a, const gsl_matrix_short * b);
++int gsl_matrix_short_sub (gsl_matrix_short * a, const gsl_matrix_short * b);
++int gsl_matrix_short_mul_elements (gsl_matrix_short * a, const gsl_matrix_short * b);
++int gsl_matrix_short_div_elements (gsl_matrix_short * a, const gsl_matrix_short * b);
++int gsl_matrix_short_scale (gsl_matrix_short * a, const double x);
++int gsl_matrix_short_add_constant (gsl_matrix_short * a, const double x);
++int gsl_matrix_short_add_diagonal (gsl_matrix_short * a, const double x);
++
++/***********************************************************************/
++/* The functions below are obsolete                                    */
++/***********************************************************************/
++int gsl_matrix_short_get_row(gsl_vector_short * v, const gsl_matrix_short * m, const size_t i);
++int gsl_matrix_short_get_col(gsl_vector_short * v, const gsl_matrix_short * m, const size_t j);
++int gsl_matrix_short_set_row(gsl_matrix_short * m, const size_t i, const gsl_vector_short * v);
++int gsl_matrix_short_set_col(gsl_matrix_short * m, const size_t j, const gsl_vector_short * v);
++/***********************************************************************/
++
++/* inline functions if you are using GCC */
++
++INLINE_DECL short   gsl_matrix_short_get(const gsl_matrix_short * m, const size_t i, const size_t j);
++INLINE_DECL void    gsl_matrix_short_set(gsl_matrix_short * m, const size_t i, const size_t j, const short x);
++INLINE_DECL short * gsl_matrix_short_ptr(gsl_matrix_short * m, const size_t i, const size_t j);
++INLINE_DECL const short * gsl_matrix_short_const_ptr(const gsl_matrix_short * m, const size_t i, const size_t j);
++
++#ifdef HAVE_INLINE
++INLINE_FUN 
++short
++gsl_matrix_short_get(const gsl_matrix_short * m, const size_t i, const size_t j)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(1)) 
++    {
++      if (i >= m->size1)
++        {
++          GSL_ERROR_VAL("first index out of range", GSL_EINVAL, 0) ;
++        }
++      else if (j >= m->size2)
++        {
++          GSL_ERROR_VAL("second index out of range", GSL_EINVAL, 0) ;
++        }
++    }
++#endif
++  return m->data[i * m->tda + j] ;
++} 
++
++INLINE_FUN 
++void
++gsl_matrix_short_set(gsl_matrix_short * m, const size_t i, const size_t j, const short x)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(1)) 
++    {
++      if (i >= m->size1)
++        {
++          GSL_ERROR_VOID("first index out of range", GSL_EINVAL) ;
++        }
++      else if (j >= m->size2)
++        {
++          GSL_ERROR_VOID("second index out of range", GSL_EINVAL) ;
++        }
++    }
++#endif
++  m->data[i * m->tda + j] = x ;
++}
++
++INLINE_FUN 
++short *
++gsl_matrix_short_ptr(gsl_matrix_short * m, const size_t i, const size_t j)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(1)) 
++    {
++      if (i >= m->size1)
++        {
++          GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
++        }
++      else if (j >= m->size2)
++        {
++          GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
++        }
++    }
++#endif
++  return (short *) (m->data + (i * m->tda + j)) ;
++} 
++
++INLINE_FUN 
++const short *
++gsl_matrix_short_const_ptr(const gsl_matrix_short * m, const size_t i, const size_t j)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(1)) 
++    {
++      if (i >= m->size1)
++        {
++          GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
++        }
++      else if (j >= m->size2)
++        {
++          GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
++        }
++    }
++#endif
++  return (const short *) (m->data + (i * m->tda + j)) ;
++} 
++
++#endif
++
++__END_DECLS
++
++#endif /* __GSL_MATRIX_SHORT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_double.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_double.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_double.h	(revision 14078)
+@@ -0,0 +1,65 @@
++/* block/gsl_block_double.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_BLOCK_DOUBLE_H__
++#define __GSL_BLOCK_DOUBLE_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++struct gsl_block_struct
++{
++  size_t size;
++  double *data;
++};
++
++typedef struct gsl_block_struct gsl_block;
++
++gsl_block *gsl_block_alloc (const size_t n);
++gsl_block *gsl_block_calloc (const size_t n);
++void gsl_block_free (gsl_block * b);
++
++int gsl_block_fread (FILE * stream, gsl_block * b);
++int gsl_block_fwrite (FILE * stream, const gsl_block * b);
++int gsl_block_fscanf (FILE * stream, gsl_block * b);
++int gsl_block_fprintf (FILE * stream, const gsl_block * b, const char *format);
++
++int gsl_block_raw_fread (FILE * stream, double * b, const size_t n, const size_t stride);
++int gsl_block_raw_fwrite (FILE * stream, const double * b, const size_t n, const size_t stride);
++int gsl_block_raw_fscanf (FILE * stream, double * b, const size_t n, const size_t stride);
++int gsl_block_raw_fprintf (FILE * stream, const double * b, const size_t n, const size_t stride, const char *format);
++
++size_t gsl_block_size (const gsl_block * b);
++double * gsl_block_data (const gsl_block * b);
++
++__END_DECLS
++
++#endif /* __GSL_BLOCK_DOUBLE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_const.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_const.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_const.h	(revision 14078)
+@@ -0,0 +1,31 @@
++/* const/gsl_const.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004, 2007 Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_CONST__
++#define __GSL_CONST__
++
++#include <gsl/gsl_const_num.h>
++
++#include <gsl/gsl_const_cgs.h>
++#include <gsl/gsl_const_mks.h>
++
++#include <gsl/gsl_const_cgsm.h>
++#include <gsl/gsl_const_mksa.h>
++
++#endif /* __GSL_CONST__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_uint.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_uint.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_uint.h	(revision 14078)
+@@ -0,0 +1,79 @@
++/* statistics/gsl_statistics_uint.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_STATISTICS_UINT_H__
++#define __GSL_STATISTICS_UINT_H__
++
++#include <stddef.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++double gsl_stats_uint_mean (const unsigned int data[], const size_t stride, const size_t n);
++double gsl_stats_uint_variance (const unsigned int data[], const size_t stride, const size_t n);
++double gsl_stats_uint_sd (const unsigned int data[], const size_t stride, const size_t n);
++double gsl_stats_uint_variance_with_fixed_mean (const unsigned int data[], const size_t stride, const size_t n, const double mean);
++double gsl_stats_uint_sd_with_fixed_mean (const unsigned int data[], const size_t stride, const size_t n, const double mean);
++double gsl_stats_uint_tss (const unsigned int data[], const size_t stride, const size_t n);
++double gsl_stats_uint_tss_m (const unsigned int data[], const size_t stride, const size_t n, const double mean);
++
++double gsl_stats_uint_absdev (const unsigned int data[], const size_t stride, const size_t n);
++double gsl_stats_uint_skew (const unsigned int data[], const size_t stride, const size_t n);
++double gsl_stats_uint_kurtosis (const unsigned int data[], const size_t stride, const size_t n);
++double gsl_stats_uint_lag1_autocorrelation (const unsigned int data[], const size_t stride, const size_t n);
++
++double gsl_stats_uint_covariance (const unsigned int data1[], const size_t stride1,const unsigned int data2[], const size_t stride2, const size_t n);
++double gsl_stats_uint_correlation (const unsigned int data1[], const size_t stride1,const unsigned int data2[], const size_t stride2, const size_t n);
++
++double gsl_stats_uint_variance_m (const unsigned int data[], const size_t stride, const size_t n, const double mean);
++double gsl_stats_uint_sd_m (const unsigned int data[], const size_t stride, const size_t n, const double mean);
++double gsl_stats_uint_absdev_m (const unsigned int data[], const size_t stride, const size_t n, const double mean);
++double gsl_stats_uint_skew_m_sd (const unsigned int data[], const size_t stride, const size_t n, const double mean, const double sd);
++double gsl_stats_uint_kurtosis_m_sd (const unsigned int data[], const size_t stride, const size_t n, const double mean, const double sd);
++double gsl_stats_uint_lag1_autocorrelation_m (const unsigned int data[], const size_t stride, const size_t n, const double mean);
++
++double gsl_stats_uint_covariance_m (const unsigned int data1[], const size_t stride1,const unsigned int data2[], const size_t stride2, const size_t n, const double mean1, const double mean2);
++
++
++double gsl_stats_uint_pvariance (const unsigned int data1[], const size_t stride1, const size_t n1, const unsigned int data2[], const size_t stride2, const size_t n2);
++double gsl_stats_uint_ttest (const unsigned int data1[], const size_t stride1, const size_t n1, const unsigned int data2[], const size_t stride2, const size_t n2);
++
++unsigned int gsl_stats_uint_max (const unsigned int data[], const size_t stride, const size_t n);
++unsigned int gsl_stats_uint_min (const unsigned int data[], const size_t stride, const size_t n);
++void gsl_stats_uint_minmax (unsigned int * min, unsigned int * max, const unsigned int data[], const size_t stride, const size_t n);
++
++size_t gsl_stats_uint_max_index (const unsigned int data[], const size_t stride, const size_t n);
++size_t gsl_stats_uint_min_index (const unsigned int data[], const size_t stride, const size_t n);
++void gsl_stats_uint_minmax_index (size_t * min_index, size_t * max_index, const unsigned int data[], const size_t stride, const size_t n);
++
++double gsl_stats_uint_median_from_sorted_data (const unsigned int sorted_data[], const size_t stride, const size_t n) ;
++double gsl_stats_uint_quantile_from_sorted_data (const unsigned int sorted_data[], const size_t stride, const size_t n, const double f) ;
++
++__END_DECLS
++
++#endif /* __GSL_STATISTICS_UINT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_minmax.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_minmax.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_minmax.h	(revision 14078)
+@@ -0,0 +1,102 @@
++/* gsl_minmax.h
++ * 
++ * Copyright (C) 2008 Gerard Jungman, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_MINMAX_H__
++#define __GSL_MINMAX_H__
++#include <gsl/gsl_inline.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++/* Define MAX and MIN macros/functions if they don't exist. */
++
++/* plain old macros for general use */
++#define GSL_MAX(a,b) ((a) > (b) ? (a) : (b))
++#define GSL_MIN(a,b) ((a) < (b) ? (a) : (b))
++
++/* function versions of the above, in case they are needed */
++double gsl_max (double a, double b);
++double gsl_min (double a, double b);
++
++/* inline-friendly strongly typed versions */
++#ifdef HAVE_INLINE
++
++INLINE_FUN int GSL_MAX_INT (int a, int b);
++INLINE_FUN int GSL_MIN_INT (int a, int b);
++INLINE_FUN double GSL_MAX_DBL (double a, double b);
++INLINE_FUN double GSL_MIN_DBL (double a, double b);
++INLINE_FUN long double GSL_MAX_LDBL (long double a, long double b);
++INLINE_FUN long double GSL_MIN_LDBL (long double a, long double b);
++
++INLINE_FUN int
++GSL_MAX_INT (int a, int b)
++{
++  return GSL_MAX (a, b);
++}
++
++INLINE_FUN int
++GSL_MIN_INT (int a, int b)
++{
++  return GSL_MIN (a, b);
++}
++
++INLINE_FUN double
++GSL_MAX_DBL (double a, double b)
++{
++  return GSL_MAX (a, b);
++}
++
++INLINE_FUN double
++GSL_MIN_DBL (double a, double b)
++{
++  return GSL_MIN (a, b);
++}
++
++INLINE_FUN long double
++GSL_MAX_LDBL (long double a, long double b)
++{
++  return GSL_MAX (a, b);
++}
++
++INLINE_FUN long double
++GSL_MIN_LDBL (long double a, long double b)
++{
++  return GSL_MIN (a, b);
++}
++#else
++#define GSL_MAX_INT(a,b)   GSL_MAX(a,b)
++#define GSL_MIN_INT(a,b)   GSL_MIN(a,b)
++#define GSL_MAX_DBL(a,b)   GSL_MAX(a,b)
++#define GSL_MIN_DBL(a,b)   GSL_MIN(a,b)
++#define GSL_MAX_LDBL(a,b)  GSL_MAX(a,b)
++#define GSL_MIN_LDBL(a,b)  GSL_MIN(a,b)
++#endif /* HAVE_INLINE */
++
++__END_DECLS
++
++#endif /* __GSL_POW_INT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_long_double.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_long_double.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_long_double.h	(revision 14078)
+@@ -0,0 +1,44 @@
++/* permutation/gsl_permute_long_double.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_PERMUTE_LONG_DOUBLE_H__
++#define __GSL_PERMUTE_LONG_DOUBLE_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_permutation.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++int gsl_permute_long_double (const size_t * p, long double * data, const size_t stride, const size_t n);
++int gsl_permute_long_double_inverse (const size_t * p, long double * data, const size_t stride, const size_t n);
++
++__END_DECLS
++
++#endif /* __GSL_PERMUTE_LONG_DOUBLE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_uchar.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_uchar.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_uchar.h	(revision 14078)
+@@ -0,0 +1,51 @@
++/* sort/gsl_sort_vector_uchar.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_SORT_VECTOR_UCHAR_H__
++#define __GSL_SORT_VECTOR_UCHAR_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_permutation.h>
++#include <gsl/gsl_vector_uchar.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++void gsl_sort_vector_uchar (gsl_vector_uchar * v);
++int gsl_sort_vector_uchar_index (gsl_permutation * p, const gsl_vector_uchar * v);
++
++int gsl_sort_vector_uchar_smallest (unsigned char * dest, const size_t k, const gsl_vector_uchar * v);
++int gsl_sort_vector_uchar_largest (unsigned char * dest, const size_t k, const gsl_vector_uchar * v);
++
++int gsl_sort_vector_uchar_smallest_index (size_t * p, const size_t k, const gsl_vector_uchar * v);
++int gsl_sort_vector_uchar_largest_index (size_t * p, const size_t k, const gsl_vector_uchar * v);
++
++__END_DECLS
++
++#endif /* __GSL_SORT_VECTOR_UCHAR_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_double.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_double.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_double.h	(revision 14078)
+@@ -0,0 +1,45 @@
++/* permutation/gsl_permute_vector_double.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_PERMUTE_VECTOR_DOUBLE_H__
++#define __GSL_PERMUTE_VECTOR_DOUBLE_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_permutation.h>
++#include <gsl/gsl_vector_double.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++int gsl_permute_vector (const gsl_permutation * p, gsl_vector * v);
++int gsl_permute_vector_inverse (const gsl_permutation * p, gsl_vector * v);
++
++__END_DECLS
++
++#endif /* __GSL_PERMUTE_VECTOR_DOUBLE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_expint.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_expint.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_expint.h	(revision 14078)
+@@ -0,0 +1,167 @@
++/* specfunc/gsl_sf_expint.h
++ * 
++ * Copyright (C) 2007 Brian Gough
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002 Gerard Jungman
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++/* Author: G. Jungman */
++
++#ifndef __GSL_SF_EXPINT_H__
++#define __GSL_SF_EXPINT_H__
++
++#include <gsl/gsl_sf_result.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++
++/* E_1(x) := Re[ Integrate[ Exp[-xt]/t, {t,1,Infinity}] ]
++ *
++ * x != 0.0
++ * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW
++ */
++int     gsl_sf_expint_E1_e(const double x, gsl_sf_result * result);
++double  gsl_sf_expint_E1(const double x);
++
++
++/* E_2(x) := Re[ Integrate[ Exp[-xt]/t^2, {t,1,Infinity}] ]
++ *
++ * x != 0.0
++ * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW
++ */
++int     gsl_sf_expint_E2_e(const double x, gsl_sf_result * result);
++double  gsl_sf_expint_E2(const double x);
++
++
++/* E_n(x) := Re[ Integrate[ Exp[-xt]/t^n, {t,1,Infinity}] ]
++ *
++ * x != 0.0
++ * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW
++ */
++int     gsl_sf_expint_En_e(const int n, const double x, gsl_sf_result * result);
++double  gsl_sf_expint_En(const int n, const double x);
++
++
++/* E_1_scaled(x) := exp(x) E_1(x)
++ *
++ * x != 0.0
++ * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW
++ */
++int     gsl_sf_expint_E1_scaled_e(const double x, gsl_sf_result * result);
++double  gsl_sf_expint_E1_scaled(const double x);
++
++
++/* E_2_scaled(x) := exp(x) E_2(x)
++ *
++ * x != 0.0
++ * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW
++ */
++int     gsl_sf_expint_E2_scaled_e(const double x, gsl_sf_result * result);
++double  gsl_sf_expint_E2_scaled(const double x);
++
++/* E_n_scaled(x) := exp(x) E_n(x)
++ *
++ * x != 0.0
++ * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW
++ */
++int     gsl_sf_expint_En_scaled_e(const int n, const double x, gsl_sf_result * result);
++double  gsl_sf_expint_En_scaled(const int n, const double x);
++
++
++/* Ei(x) := - PV Integrate[ Exp[-t]/t, {t,-x,Infinity}]
++ *       :=   PV Integrate[ Exp[t]/t, {t,-Infinity,x}]
++ *
++ * x != 0.0
++ * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW
++ */
++int     gsl_sf_expint_Ei_e(const double x, gsl_sf_result * result);
++double  gsl_sf_expint_Ei(const double x);
++
++
++/* Ei_scaled(x) := exp(-x) Ei(x)
++ *
++ * x != 0.0
++ * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW
++ */
++int     gsl_sf_expint_Ei_scaled_e(const double x, gsl_sf_result * result);
++double  gsl_sf_expint_Ei_scaled(const double x);
++
++
++/* Shi(x) := Integrate[ Sinh[t]/t, {t,0,x}]
++ *
++ * exceptions: GSL_EOVRFLW, GSL_EUNDRFLW
++ */
++int     gsl_sf_Shi_e(const double x, gsl_sf_result * result);
++double  gsl_sf_Shi(const double x);
++
++
++/* Chi(x) := Re[ M_EULER + log(x) + Integrate[(Cosh[t]-1)/t, {t,0,x}] ]
++ *
++ * x != 0.0
++ * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW
++ */
++int     gsl_sf_Chi_e(const double x, gsl_sf_result * result);
++double  gsl_sf_Chi(const double x);
++
++
++/* Ei_3(x) := Integral[ Exp[-t^3], {t,0,x}]
++ *
++ * x >= 0.0
++ * exceptions: GSL_EDOM
++ */
++int     gsl_sf_expint_3_e(const double x, gsl_sf_result * result);
++double  gsl_sf_expint_3(double x);
++
++
++/* Si(x) := Integrate[ Sin[t]/t, {t,0,x}]
++ *
++ * exceptions: none
++ */
++int     gsl_sf_Si_e(const double x, gsl_sf_result * result);
++double  gsl_sf_Si(const double x);
++
++
++/* Ci(x) := -Integrate[ Cos[t]/t, {t,x,Infinity}]
++ *
++ * x > 0.0
++ * exceptions: GSL_EDOM 
++ */
++int     gsl_sf_Ci_e(const double x, gsl_sf_result * result);
++double  gsl_sf_Ci(const double x);
++
++
++/* AtanInt(x) := Integral[ Arctan[t]/t, {t,0,x}]
++ *
++ *
++ * exceptions:
++ */
++int     gsl_sf_atanint_e(const double x, gsl_sf_result * result);
++double  gsl_sf_atanint(const double x);
++
++
++__END_DECLS
++
++#endif /* __GSL_SF_EXPINT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_short.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_short.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_short.h	(revision 14078)
+@@ -0,0 +1,44 @@
++/* permutation/gsl_permute_short.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_PERMUTE_SHORT_H__
++#define __GSL_PERMUTE_SHORT_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_permutation.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++int gsl_permute_short (const size_t * p, short * data, const size_t stride, const size_t n);
++int gsl_permute_short_inverse (const size_t * p, short * data, const size_t stride, const size_t n);
++
++__END_DECLS
++
++#endif /* __GSL_PERMUTE_SHORT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_fft_halfcomplex.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_fft_halfcomplex.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_fft_halfcomplex.h	(revision 14078)
+@@ -0,0 +1,86 @@
++/* fft/gsl_fft_halfcomplex.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_FFT_HALFCOMPLEX_H__
++#define __GSL_FFT_HALFCOMPLEX_H__
++
++#include <stddef.h>
++
++#include <gsl/gsl_math.h>
++#include <gsl/gsl_complex.h>
++#include <gsl/gsl_fft.h>
++#include <gsl/gsl_fft_real.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++int gsl_fft_halfcomplex_radix2_backward (double data[], const size_t stride, const size_t n);
++int gsl_fft_halfcomplex_radix2_inverse (double data[], const size_t stride, const size_t n);
++int gsl_fft_halfcomplex_radix2_transform (double data[], const size_t stride, const size_t n);
++
++typedef struct
++  {
++    size_t n;
++    size_t nf;
++    size_t factor[64];
++    gsl_complex *twiddle[64];
++    gsl_complex *trig;
++  }
++gsl_fft_halfcomplex_wavetable;
++
++gsl_fft_halfcomplex_wavetable * gsl_fft_halfcomplex_wavetable_alloc (size_t n);
++
++void
++gsl_fft_halfcomplex_wavetable_free (gsl_fft_halfcomplex_wavetable * wavetable);
++
++
++int gsl_fft_halfcomplex_backward (double data[], const size_t stride, const size_t n,
++                                  const gsl_fft_halfcomplex_wavetable * wavetable,
++                                  gsl_fft_real_workspace * work);
++
++int gsl_fft_halfcomplex_inverse (double data[], const size_t stride, const size_t n,
++                                 const gsl_fft_halfcomplex_wavetable * wavetable,
++                                 gsl_fft_real_workspace * work);
++
++int gsl_fft_halfcomplex_transform (double data[], const size_t stride, const size_t n,
++                                   const gsl_fft_halfcomplex_wavetable * wavetable,
++                                   gsl_fft_real_workspace * work);
++
++int
++gsl_fft_halfcomplex_unpack (const double halfcomplex_coefficient[],
++                            double complex_coefficient[],
++                            const size_t stride, const size_t n);
++
++int
++gsl_fft_halfcomplex_radix2_unpack (const double halfcomplex_coefficient[],
++                                   double complex_coefficient[],
++                                   const size_t stride, const size_t n);
++
++__END_DECLS
++
++#endif /* __GSL_FFT_HALFCOMPLEX_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_char.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_char.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_char.h	(revision 14078)
+@@ -0,0 +1,51 @@
++/* sort/gsl_sort_vector_char.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_SORT_VECTOR_CHAR_H__
++#define __GSL_SORT_VECTOR_CHAR_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_permutation.h>
++#include <gsl/gsl_vector_char.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++void gsl_sort_vector_char (gsl_vector_char * v);
++int gsl_sort_vector_char_index (gsl_permutation * p, const gsl_vector_char * v);
++
++int gsl_sort_vector_char_smallest (char * dest, const size_t k, const gsl_vector_char * v);
++int gsl_sort_vector_char_largest (char * dest, const size_t k, const gsl_vector_char * v);
++
++int gsl_sort_vector_char_smallest_index (size_t * p, const size_t k, const gsl_vector_char * v);
++int gsl_sort_vector_char_largest_index (size_t * p, const size_t k, const gsl_vector_char * v);
++
++__END_DECLS
++
++#endif /* __GSL_SORT_VECTOR_CHAR_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_complex.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_complex.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_complex.h	(revision 14078)
+@@ -0,0 +1,103 @@
++/* complex/gsl_complex.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_COMPLEX_H__
++#define __GSL_COMPLEX_H__
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++
++/* two consecutive built-in types as a complex number */
++typedef double *       gsl_complex_packed ;
++typedef float *        gsl_complex_packed_float  ;
++typedef long double *  gsl_complex_packed_long_double ;
++
++typedef const double *       gsl_const_complex_packed ;
++typedef const float *        gsl_const_complex_packed_float  ;
++typedef const long double *  gsl_const_complex_packed_long_double ;
++
++
++/* 2N consecutive built-in types as N complex numbers */
++typedef double *       gsl_complex_packed_array ;
++typedef float *        gsl_complex_packed_array_float  ;
++typedef long double *  gsl_complex_packed_array_long_double ;
++
++typedef const double *       gsl_const_complex_packed_array ;
++typedef const float *        gsl_const_complex_packed_array_float  ;
++typedef const long double *  gsl_const_complex_packed_array_long_double ;
++
++
++/* Yes... this seems weird. Trust us. The point is just that
++   sometimes you want to make it obvious that something is
++   an output value. The fact that it lacks a 'const' may not
++   be enough of a clue for people in some contexts.
++ */
++typedef double *       gsl_complex_packed_ptr ;
++typedef float *        gsl_complex_packed_float_ptr  ;
++typedef long double *  gsl_complex_packed_long_double_ptr ;
++
++typedef const double *       gsl_const_complex_packed_ptr ;
++typedef const float *        gsl_const_complex_packed_float_ptr  ;
++typedef const long double *  gsl_const_complex_packed_long_double_ptr ;
++
++
++typedef struct
++  {
++    long double dat[2];
++  }
++gsl_complex_long_double;
++
++typedef struct
++  {
++    double dat[2];
++  }
++gsl_complex;
++
++typedef struct
++  {
++    float dat[2];
++  }
++gsl_complex_float;
++
++#define GSL_REAL(z)     ((z).dat[0])
++#define GSL_IMAG(z)     ((z).dat[1])
++#define GSL_COMPLEX_P(zp) ((zp)->dat)
++#define GSL_COMPLEX_P_REAL(zp)  ((zp)->dat[0])
++#define GSL_COMPLEX_P_IMAG(zp)  ((zp)->dat[1])
++#define GSL_COMPLEX_EQ(z1,z2) (((z1).dat[0] == (z2).dat[0]) && ((z1).dat[1] == (z2).dat[1]))
++
++#define GSL_SET_COMPLEX(zp,x,y) do {(zp)->dat[0]=(x); (zp)->dat[1]=(y);} while(0)
++#define GSL_SET_REAL(zp,x) do {(zp)->dat[0]=(x);} while(0)
++#define GSL_SET_IMAG(zp,y) do {(zp)->dat[1]=(y);} while(0)
++
++#define GSL_SET_COMPLEX_PACKED(zp,n,x,y) do {*((zp)+2*(n))=(x); *((zp)+(2*(n)+1))=(y);} while(0)
++
++__END_DECLS
++
++#endif /* __GSL_COMPLEX_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_log.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_log.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_log.h	(revision 14078)
+@@ -0,0 +1,82 @@
++/* specfunc/gsl_sf_log.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004 Gerard Jungman
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++/* Author:  G. Jungman */
++
++#ifndef __GSL_SF_LOG_H__
++#define __GSL_SF_LOG_H__
++
++#include <gsl/gsl_sf_result.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++
++/* Provide a logarithm function with GSL semantics.
++ *
++ * exceptions: GSL_EDOM
++ */
++int gsl_sf_log_e(const double x, gsl_sf_result * result);
++double gsl_sf_log(const double x);
++
++
++/* Log(|x|)
++ *
++ * exceptions: GSL_EDOM
++ */
++int gsl_sf_log_abs_e(const double x, gsl_sf_result * result);
++double gsl_sf_log_abs(const double x);
++
++
++/* Complex Logarithm
++ *   exp(lnr + I theta) = zr + I zi
++ * Returns argument in [-pi,pi].
++ *
++ * exceptions: GSL_EDOM
++ */
++int gsl_sf_complex_log_e(const double zr, const double zi, gsl_sf_result * lnr, gsl_sf_result * theta);
++
++
++/* Log(1 + x)
++ *
++ * exceptions: GSL_EDOM
++ */
++int gsl_sf_log_1plusx_e(const double x, gsl_sf_result * result);
++double gsl_sf_log_1plusx(const double x);
++
++
++/* Log(1 + x) - x
++ *
++ * exceptions: GSL_EDOM
++ */
++int gsl_sf_log_1plusx_mx_e(const double x, gsl_sf_result * result);
++double gsl_sf_log_1plusx_mx(const double x);
++
++__END_DECLS
++
++#endif /* __GSL_SF_LOG_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_long.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_long.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_long.h	(revision 14078)
+@@ -0,0 +1,79 @@
++/* statistics/gsl_statistics_long.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_STATISTICS_LONG_H__
++#define __GSL_STATISTICS_LONG_H__
++
++#include <stddef.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++double gsl_stats_long_mean (const long data[], const size_t stride, const size_t n);
++double gsl_stats_long_variance (const long data[], const size_t stride, const size_t n);
++double gsl_stats_long_sd (const long data[], const size_t stride, const size_t n);
++double gsl_stats_long_variance_with_fixed_mean (const long data[], const size_t stride, const size_t n, const double mean);
++double gsl_stats_long_sd_with_fixed_mean (const long data[], const size_t stride, const size_t n, const double mean);
++double gsl_stats_long_tss (const long data[], const size_t stride, const size_t n);
++double gsl_stats_long_tss_m (const long data[], const size_t stride, const size_t n, const double mean);
++
++double gsl_stats_long_absdev (const long data[], const size_t stride, const size_t n);
++double gsl_stats_long_skew (const long data[], const size_t stride, const size_t n);
++double gsl_stats_long_kurtosis (const long data[], const size_t stride, const size_t n);
++double gsl_stats_long_lag1_autocorrelation (const long data[], const size_t stride, const size_t n);
++
++double gsl_stats_long_covariance (const long data1[], const size_t stride1,const long data2[], const size_t stride2, const size_t n);
++double gsl_stats_long_correlation (const long data1[], const size_t stride1,const long data2[], const size_t stride2, const size_t n);
++
++double gsl_stats_long_variance_m (const long data[], const size_t stride, const size_t n, const double mean);
++double gsl_stats_long_sd_m (const long data[], const size_t stride, const size_t n, const double mean);
++double gsl_stats_long_absdev_m (const long data[], const size_t stride, const size_t n, const double mean);
++double gsl_stats_long_skew_m_sd (const long data[], const size_t stride, const size_t n, const double mean, const double sd);
++double gsl_stats_long_kurtosis_m_sd (const long data[], const size_t stride, const size_t n, const double mean, const double sd);
++double gsl_stats_long_lag1_autocorrelation_m (const long data[], const size_t stride, const size_t n, const double mean);
++
++double gsl_stats_long_covariance_m (const long data1[], const size_t stride1,const long data2[], const size_t stride2, const size_t n, const double mean1, const double mean2);
++
++
++double gsl_stats_long_pvariance (const long data1[], const size_t stride1, const size_t n1, const long data2[], const size_t stride2, const size_t n2);
++double gsl_stats_long_ttest (const long data1[], const size_t stride1, const size_t n1, const long data2[], const size_t stride2, const size_t n2);
++
++long gsl_stats_long_max (const long data[], const size_t stride, const size_t n);
++long gsl_stats_long_min (const long data[], const size_t stride, const size_t n);
++void gsl_stats_long_minmax (long * min, long * max, const long data[], const size_t stride, const size_t n);
++
++size_t gsl_stats_long_max_index (const long data[], const size_t stride, const size_t n);
++size_t gsl_stats_long_min_index (const long data[], const size_t stride, const size_t n);
++void gsl_stats_long_minmax_index (size_t * min_index, size_t * max_index, const long data[], const size_t stride, const size_t n);
++
++double gsl_stats_long_median_from_sorted_data (const long sorted_data[], const size_t stride, const size_t n) ;
++double gsl_stats_long_quantile_from_sorted_data (const long sorted_data[], const size_t stride, const size_t n, const double f) ;
++
++__END_DECLS
++
++#endif /* __GSL_STATISTICS_LONG_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_complex_double.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_complex_double.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_complex_double.h	(revision 14078)
+@@ -0,0 +1,65 @@
++/* block/gsl_block_complex_double.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_BLOCK_COMPLEX_DOUBLE_H__
++#define __GSL_BLOCK_COMPLEX_DOUBLE_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++struct gsl_block_complex_struct
++{
++  size_t size;
++  double *data;
++};
++
++typedef struct gsl_block_complex_struct gsl_block_complex;
++
++gsl_block_complex *gsl_block_complex_alloc (const size_t n);
++gsl_block_complex *gsl_block_complex_calloc (const size_t n);
++void gsl_block_complex_free (gsl_block_complex * b);
++
++int gsl_block_complex_fread (FILE * stream, gsl_block_complex * b);
++int gsl_block_complex_fwrite (FILE * stream, const gsl_block_complex * b);
++int gsl_block_complex_fscanf (FILE * stream, gsl_block_complex * b);
++int gsl_block_complex_fprintf (FILE * stream, const gsl_block_complex * b, const char *format);
++
++int gsl_block_complex_raw_fread (FILE * stream, double * b, const size_t n, const size_t stride);
++int gsl_block_complex_raw_fwrite (FILE * stream, const double * b, const size_t n, const size_t stride);
++int gsl_block_complex_raw_fscanf (FILE * stream, double * b, const size_t n, const size_t stride);
++int gsl_block_complex_raw_fprintf (FILE * stream, const double * b, const size_t n, const size_t stride, const char *format);
++
++size_t gsl_block_complex_size (const gsl_block_complex * b);
++double * gsl_block_complex_data (const gsl_block_complex * b);
++
++__END_DECLS
++
++#endif /* __GSL_BLOCK_COMPLEX_DOUBLE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_long_double.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_long_double.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_long_double.h	(revision 14078)
+@@ -0,0 +1,45 @@
++/* permutation/gsl_permute_vector_long_double.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_PERMUTE_VECTOR_LONG_DOUBLE_H__
++#define __GSL_PERMUTE_VECTOR_LONG_DOUBLE_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_permutation.h>
++#include <gsl/gsl_vector_long_double.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++int gsl_permute_vector_long_double (const gsl_permutation * p, gsl_vector_long_double * v);
++int gsl_permute_vector_long_double_inverse (const gsl_permutation * p, gsl_vector_long_double * v);
++
++__END_DECLS
++
++#endif /* __GSL_PERMUTE_VECTOR_LONG_DOUBLE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_int.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_int.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_int.h	(revision 14078)
+@@ -0,0 +1,230 @@
++/* vector/gsl_vector_int.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_VECTOR_INT_H__
++#define __GSL_VECTOR_INT_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_types.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_inline.h>
++#include <gsl/gsl_check_range.h>
++#include <gsl/gsl_block_int.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++typedef struct 
++{
++  size_t size;
++  size_t stride;
++  int *data;
++  gsl_block_int *block;
++  int owner;
++} 
++gsl_vector_int;
++
++typedef struct
++{
++  gsl_vector_int vector;
++} _gsl_vector_int_view;
++
++typedef _gsl_vector_int_view gsl_vector_int_view;
++
++typedef struct
++{
++  gsl_vector_int vector;
++} _gsl_vector_int_const_view;
++
++typedef const _gsl_vector_int_const_view gsl_vector_int_const_view;
++
++
++/* Allocation */
++
++gsl_vector_int *gsl_vector_int_alloc (const size_t n);
++gsl_vector_int *gsl_vector_int_calloc (const size_t n);
++
++gsl_vector_int *gsl_vector_int_alloc_from_block (gsl_block_int * b,
++                                                     const size_t offset, 
++                                                     const size_t n, 
++                                                     const size_t stride);
++
++gsl_vector_int *gsl_vector_int_alloc_from_vector (gsl_vector_int * v,
++                                                      const size_t offset, 
++                                                      const size_t n, 
++                                                      const size_t stride);
++
++void gsl_vector_int_free (gsl_vector_int * v);
++
++/* Views */
++
++_gsl_vector_int_view 
++gsl_vector_int_view_array (int *v, size_t n);
++
++_gsl_vector_int_view 
++gsl_vector_int_view_array_with_stride (int *base,
++                                         size_t stride,
++                                         size_t n);
++
++_gsl_vector_int_const_view 
++gsl_vector_int_const_view_array (const int *v, size_t n);
++
++_gsl_vector_int_const_view 
++gsl_vector_int_const_view_array_with_stride (const int *base,
++                                               size_t stride,
++                                               size_t n);
++
++_gsl_vector_int_view 
++gsl_vector_int_subvector (gsl_vector_int *v, 
++                            size_t i, 
++                            size_t n);
++
++_gsl_vector_int_view 
++gsl_vector_int_subvector_with_stride (gsl_vector_int *v, 
++                                        size_t i,
++                                        size_t stride,
++                                        size_t n);
++
++_gsl_vector_int_const_view 
++gsl_vector_int_const_subvector (const gsl_vector_int *v, 
++                                  size_t i, 
++                                  size_t n);
++
++_gsl_vector_int_const_view 
++gsl_vector_int_const_subvector_with_stride (const gsl_vector_int *v, 
++                                              size_t i, 
++                                              size_t stride,
++                                              size_t n);
++
++/* Operations */
++
++void gsl_vector_int_set_zero (gsl_vector_int * v);
++void gsl_vector_int_set_all (gsl_vector_int * v, int x);
++int gsl_vector_int_set_basis (gsl_vector_int * v, size_t i);
++
++int gsl_vector_int_fread (FILE * stream, gsl_vector_int * v);
++int gsl_vector_int_fwrite (FILE * stream, const gsl_vector_int * v);
++int gsl_vector_int_fscanf (FILE * stream, gsl_vector_int * v);
++int gsl_vector_int_fprintf (FILE * stream, const gsl_vector_int * v,
++                              const char *format);
++
++int gsl_vector_int_memcpy (gsl_vector_int * dest, const gsl_vector_int * src);
++
++int gsl_vector_int_reverse (gsl_vector_int * v);
++
++int gsl_vector_int_swap (gsl_vector_int * v, gsl_vector_int * w);
++int gsl_vector_int_swap_elements (gsl_vector_int * v, const size_t i, const size_t j);
++
++int gsl_vector_int_max (const gsl_vector_int * v);
++int gsl_vector_int_min (const gsl_vector_int * v);
++void gsl_vector_int_minmax (const gsl_vector_int * v, int * min_out, int * max_out);
++
++size_t gsl_vector_int_max_index (const gsl_vector_int * v);
++size_t gsl_vector_int_min_index (const gsl_vector_int * v);
++void gsl_vector_int_minmax_index (const gsl_vector_int * v, size_t * imin, size_t * imax);
++
++int gsl_vector_int_add (gsl_vector_int * a, const gsl_vector_int * b);
++int gsl_vector_int_sub (gsl_vector_int * a, const gsl_vector_int * b);
++int gsl_vector_int_mul (gsl_vector_int * a, const gsl_vector_int * b);
++int gsl_vector_int_div (gsl_vector_int * a, const gsl_vector_int * b);
++int gsl_vector_int_scale (gsl_vector_int * a, const double x);
++int gsl_vector_int_add_constant (gsl_vector_int * a, const double x);
++
++int gsl_vector_int_equal (const gsl_vector_int * u, 
++                            const gsl_vector_int * v);
++
++int gsl_vector_int_isnull (const gsl_vector_int * v);
++int gsl_vector_int_ispos (const gsl_vector_int * v);
++int gsl_vector_int_isneg (const gsl_vector_int * v);
++int gsl_vector_int_isnonneg (const gsl_vector_int * v);
++
++INLINE_DECL int gsl_vector_int_get (const gsl_vector_int * v, const size_t i);
++INLINE_DECL void gsl_vector_int_set (gsl_vector_int * v, const size_t i, int x);
++INLINE_DECL int * gsl_vector_int_ptr (gsl_vector_int * v, const size_t i);
++INLINE_DECL const int * gsl_vector_int_const_ptr (const gsl_vector_int * v, const size_t i);
++
++#ifdef HAVE_INLINE
++
++INLINE_FUN
++int
++gsl_vector_int_get (const gsl_vector_int * v, const size_t i)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(i >= v->size))
++    {
++      GSL_ERROR_VAL ("index out of range", GSL_EINVAL, 0);
++    }
++#endif
++  return v->data[i * v->stride];
++}
++
++INLINE_FUN
++void
++gsl_vector_int_set (gsl_vector_int * v, const size_t i, int x)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(i >= v->size))
++    {
++      GSL_ERROR_VOID ("index out of range", GSL_EINVAL);
++    }
++#endif
++  v->data[i * v->stride] = x;
++}
++
++INLINE_FUN
++int *
++gsl_vector_int_ptr (gsl_vector_int * v, const size_t i)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(i >= v->size))
++    {
++      GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
++    }
++#endif
++  return (int *) (v->data + i * v->stride);
++}
++
++INLINE_FUN
++const int *
++gsl_vector_int_const_ptr (const gsl_vector_int * v, const size_t i)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(i >= v->size))
++    {
++      GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
++    }
++#endif
++  return (const int *) (v->data + i * v->stride);
++}
++#endif /* HAVE_INLINE */
++
++__END_DECLS
++
++#endif /* __GSL_VECTOR_INT_H__ */
++
++
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_inline.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_inline.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_inline.h	(revision 14078)
+@@ -0,0 +1,67 @@
++/* gsl_inline.h
++ * 
++ * Copyright (C) 2008, 2009 Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_INLINE_H__
++#define __GSL_INLINE_H__
++
++/* In recent versiions of GCC, the inline keyword has two different
++   forms: GNU and C99.
++
++   In GNU mode we can use 'extern inline' to make inline functions
++   work like macros.  The function is only inlined--it is never output
++   as a definition in an object file.
++
++   In the new C99 mode 'extern inline' has a different meaning--it
++   causes the definition of the function to be output in each object
++   file where it is used.  This will result in multiple-definition
++   errors on linking.  The 'inline' keyword on its own (without
++   extern) has the same behavior as the original GNU 'extern inline'.
++
++   The C99 style is the default with -std=c99 in GCC 4.3.  
++
++   This header file allows either form of inline to be used by
++   redefining the macros INLINE_DECL and INLINE_FUN.  These are used
++   in the public header files as
++
++        INLINE_DECL double gsl_foo (double x);
++	#ifdef HAVE_INLINE
++	INLINE_FUN double gsl_foo (double x) { return x+1.0; } ;
++        #endif
++   
++*/
++
++#ifdef HAVE_INLINE
++#  if defined(__GNUC_STDC_INLINE__) || defined(GSL_C99_INLINE) || defined(HAVE_C99_INLINE)
++#    define INLINE_DECL inline  /* use C99 inline */
++#    define INLINE_FUN inline
++#  else
++#    define INLINE_DECL         /* use GNU extern inline */
++#    define INLINE_FUN extern inline
++#  endif
++#else
++#  define INLINE_DECL /* */
++#endif
++
++/* Range checking conditions in headers do not require any run-time
++   tests of the global variable gsl_check_range.  They are enabled or
++   disabled in user code at compile time with GSL_RANGE_CHECK macro.
++   See also build.h. */
++#define GSL_RANGE_COND(x) (x)
++
++#endif /* __GSL_INLINE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_int.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_int.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_int.h	(revision 14078)
+@@ -0,0 +1,350 @@
++/* matrix/gsl_matrix_int.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_MATRIX_INT_H__
++#define __GSL_MATRIX_INT_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_types.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_inline.h>
++#include <gsl/gsl_check_range.h>
++#include <gsl/gsl_vector_int.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++typedef struct 
++{
++  size_t size1;
++  size_t size2;
++  size_t tda;
++  int * data;
++  gsl_block_int * block;
++  int owner;
++} gsl_matrix_int;
++
++typedef struct
++{
++  gsl_matrix_int matrix;
++} _gsl_matrix_int_view;
++
++typedef _gsl_matrix_int_view gsl_matrix_int_view;
++
++typedef struct
++{
++  gsl_matrix_int matrix;
++} _gsl_matrix_int_const_view;
++
++typedef const _gsl_matrix_int_const_view gsl_matrix_int_const_view;
++
++/* Allocation */
++
++gsl_matrix_int * 
++gsl_matrix_int_alloc (const size_t n1, const size_t n2);
++
++gsl_matrix_int * 
++gsl_matrix_int_calloc (const size_t n1, const size_t n2);
++
++gsl_matrix_int * 
++gsl_matrix_int_alloc_from_block (gsl_block_int * b, 
++                                   const size_t offset, 
++                                   const size_t n1, 
++                                   const size_t n2, 
++                                   const size_t d2);
++
++gsl_matrix_int * 
++gsl_matrix_int_alloc_from_matrix (gsl_matrix_int * m,
++                                    const size_t k1, 
++                                    const size_t k2,
++                                    const size_t n1, 
++                                    const size_t n2);
++
++gsl_vector_int * 
++gsl_vector_int_alloc_row_from_matrix (gsl_matrix_int * m,
++                                        const size_t i);
++
++gsl_vector_int * 
++gsl_vector_int_alloc_col_from_matrix (gsl_matrix_int * m,
++                                        const size_t j);
++
++void gsl_matrix_int_free (gsl_matrix_int * m);
++
++/* Views */
++
++_gsl_matrix_int_view 
++gsl_matrix_int_submatrix (gsl_matrix_int * m, 
++                            const size_t i, const size_t j, 
++                            const size_t n1, const size_t n2);
++
++_gsl_vector_int_view 
++gsl_matrix_int_row (gsl_matrix_int * m, const size_t i);
++
++_gsl_vector_int_view 
++gsl_matrix_int_column (gsl_matrix_int * m, const size_t j);
++
++_gsl_vector_int_view 
++gsl_matrix_int_diagonal (gsl_matrix_int * m);
++
++_gsl_vector_int_view 
++gsl_matrix_int_subdiagonal (gsl_matrix_int * m, const size_t k);
++
++_gsl_vector_int_view 
++gsl_matrix_int_superdiagonal (gsl_matrix_int * m, const size_t k);
++
++_gsl_vector_int_view
++gsl_matrix_int_subrow (gsl_matrix_int * m, const size_t i,
++                         const size_t offset, const size_t n);
++
++_gsl_vector_int_view
++gsl_matrix_int_subcolumn (gsl_matrix_int * m, const size_t j,
++                            const size_t offset, const size_t n);
++
++_gsl_matrix_int_view
++gsl_matrix_int_view_array (int * base,
++                             const size_t n1, 
++                             const size_t n2);
++
++_gsl_matrix_int_view
++gsl_matrix_int_view_array_with_tda (int * base, 
++                                      const size_t n1, 
++                                      const size_t n2,
++                                      const size_t tda);
++
++
++_gsl_matrix_int_view
++gsl_matrix_int_view_vector (gsl_vector_int * v,
++                              const size_t n1, 
++                              const size_t n2);
++
++_gsl_matrix_int_view
++gsl_matrix_int_view_vector_with_tda (gsl_vector_int * v,
++                                       const size_t n1, 
++                                       const size_t n2,
++                                       const size_t tda);
++
++
++_gsl_matrix_int_const_view 
++gsl_matrix_int_const_submatrix (const gsl_matrix_int * m, 
++                                  const size_t i, const size_t j, 
++                                  const size_t n1, const size_t n2);
++
++_gsl_vector_int_const_view 
++gsl_matrix_int_const_row (const gsl_matrix_int * m, 
++                            const size_t i);
++
++_gsl_vector_int_const_view 
++gsl_matrix_int_const_column (const gsl_matrix_int * m, 
++                               const size_t j);
++
++_gsl_vector_int_const_view
++gsl_matrix_int_const_diagonal (const gsl_matrix_int * m);
++
++_gsl_vector_int_const_view 
++gsl_matrix_int_const_subdiagonal (const gsl_matrix_int * m, 
++                                    const size_t k);
++
++_gsl_vector_int_const_view 
++gsl_matrix_int_const_superdiagonal (const gsl_matrix_int * m, 
++                                      const size_t k);
++
++_gsl_vector_int_const_view
++gsl_matrix_int_const_subrow (const gsl_matrix_int * m, const size_t i,
++                               const size_t offset, const size_t n);
++
++_gsl_vector_int_const_view
++gsl_matrix_int_const_subcolumn (const gsl_matrix_int * m, const size_t j,
++                                  const size_t offset, const size_t n);
++
++_gsl_matrix_int_const_view
++gsl_matrix_int_const_view_array (const int * base,
++                                   const size_t n1, 
++                                   const size_t n2);
++
++_gsl_matrix_int_const_view
++gsl_matrix_int_const_view_array_with_tda (const int * base, 
++                                            const size_t n1, 
++                                            const size_t n2,
++                                            const size_t tda);
++
++_gsl_matrix_int_const_view
++gsl_matrix_int_const_view_vector (const gsl_vector_int * v,
++                                    const size_t n1, 
++                                    const size_t n2);
++
++_gsl_matrix_int_const_view
++gsl_matrix_int_const_view_vector_with_tda (const gsl_vector_int * v,
++                                             const size_t n1, 
++                                             const size_t n2,
++                                             const size_t tda);
++
++/* Operations */
++
++void gsl_matrix_int_set_zero (gsl_matrix_int * m);
++void gsl_matrix_int_set_identity (gsl_matrix_int * m);
++void gsl_matrix_int_set_all (gsl_matrix_int * m, int x);
++
++int gsl_matrix_int_fread (FILE * stream, gsl_matrix_int * m) ;
++int gsl_matrix_int_fwrite (FILE * stream, const gsl_matrix_int * m) ;
++int gsl_matrix_int_fscanf (FILE * stream, gsl_matrix_int * m);
++int gsl_matrix_int_fprintf (FILE * stream, const gsl_matrix_int * m, const char * format);
++ 
++int gsl_matrix_int_memcpy(gsl_matrix_int * dest, const gsl_matrix_int * src);
++int gsl_matrix_int_swap(gsl_matrix_int * m1, gsl_matrix_int * m2);
++
++int gsl_matrix_int_swap_rows(gsl_matrix_int * m, const size_t i, const size_t j);
++int gsl_matrix_int_swap_columns(gsl_matrix_int * m, const size_t i, const size_t j);
++int gsl_matrix_int_swap_rowcol(gsl_matrix_int * m, const size_t i, const size_t j);
++int gsl_matrix_int_transpose (gsl_matrix_int * m);
++int gsl_matrix_int_transpose_memcpy (gsl_matrix_int * dest, const gsl_matrix_int * src);
++
++int gsl_matrix_int_max (const gsl_matrix_int * m);
++int gsl_matrix_int_min (const gsl_matrix_int * m);
++void gsl_matrix_int_minmax (const gsl_matrix_int * m, int * min_out, int * max_out);
++
++void gsl_matrix_int_max_index (const gsl_matrix_int * m, size_t * imax, size_t *jmax);
++void gsl_matrix_int_min_index (const gsl_matrix_int * m, size_t * imin, size_t *jmin);
++void gsl_matrix_int_minmax_index (const gsl_matrix_int * m, size_t * imin, size_t * jmin, size_t * imax, size_t * jmax);
++
++int gsl_matrix_int_equal (const gsl_matrix_int * a, const gsl_matrix_int * b);
++
++int gsl_matrix_int_isnull (const gsl_matrix_int * m);
++int gsl_matrix_int_ispos (const gsl_matrix_int * m);
++int gsl_matrix_int_isneg (const gsl_matrix_int * m);
++int gsl_matrix_int_isnonneg (const gsl_matrix_int * m);
++
++int gsl_matrix_int_add (gsl_matrix_int * a, const gsl_matrix_int * b);
++int gsl_matrix_int_sub (gsl_matrix_int * a, const gsl_matrix_int * b);
++int gsl_matrix_int_mul_elements (gsl_matrix_int * a, const gsl_matrix_int * b);
++int gsl_matrix_int_div_elements (gsl_matrix_int * a, const gsl_matrix_int * b);
++int gsl_matrix_int_scale (gsl_matrix_int * a, const double x);
++int gsl_matrix_int_add_constant (gsl_matrix_int * a, const double x);
++int gsl_matrix_int_add_diagonal (gsl_matrix_int * a, const double x);
++
++/***********************************************************************/
++/* The functions below are obsolete                                    */
++/***********************************************************************/
++int gsl_matrix_int_get_row(gsl_vector_int * v, const gsl_matrix_int * m, const size_t i);
++int gsl_matrix_int_get_col(gsl_vector_int * v, const gsl_matrix_int * m, const size_t j);
++int gsl_matrix_int_set_row(gsl_matrix_int * m, const size_t i, const gsl_vector_int * v);
++int gsl_matrix_int_set_col(gsl_matrix_int * m, const size_t j, const gsl_vector_int * v);
++/***********************************************************************/
++
++/* inline functions if you are using GCC */
++
++INLINE_DECL int   gsl_matrix_int_get(const gsl_matrix_int * m, const size_t i, const size_t j);
++INLINE_DECL void    gsl_matrix_int_set(gsl_matrix_int * m, const size_t i, const size_t j, const int x);
++INLINE_DECL int * gsl_matrix_int_ptr(gsl_matrix_int * m, const size_t i, const size_t j);
++INLINE_DECL const int * gsl_matrix_int_const_ptr(const gsl_matrix_int * m, const size_t i, const size_t j);
++
++#ifdef HAVE_INLINE
++INLINE_FUN 
++int
++gsl_matrix_int_get(const gsl_matrix_int * m, const size_t i, const size_t j)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(1)) 
++    {
++      if (i >= m->size1)
++        {
++          GSL_ERROR_VAL("first index out of range", GSL_EINVAL, 0) ;
++        }
++      else if (j >= m->size2)
++        {
++          GSL_ERROR_VAL("second index out of range", GSL_EINVAL, 0) ;
++        }
++    }
++#endif
++  return m->data[i * m->tda + j] ;
++} 
++
++INLINE_FUN 
++void
++gsl_matrix_int_set(gsl_matrix_int * m, const size_t i, const size_t j, const int x)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(1)) 
++    {
++      if (i >= m->size1)
++        {
++          GSL_ERROR_VOID("first index out of range", GSL_EINVAL) ;
++        }
++      else if (j >= m->size2)
++        {
++          GSL_ERROR_VOID("second index out of range", GSL_EINVAL) ;
++        }
++    }
++#endif
++  m->data[i * m->tda + j] = x ;
++}
++
++INLINE_FUN 
++int *
++gsl_matrix_int_ptr(gsl_matrix_int * m, const size_t i, const size_t j)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(1)) 
++    {
++      if (i >= m->size1)
++        {
++          GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
++        }
++      else if (j >= m->size2)
++        {
++          GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
++        }
++    }
++#endif
++  return (int *) (m->data + (i * m->tda + j)) ;
++} 
++
++INLINE_FUN 
++const int *
++gsl_matrix_int_const_ptr(const gsl_matrix_int * m, const size_t i, const size_t j)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(1)) 
++    {
++      if (i >= m->size1)
++        {
++          GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
++        }
++      else if (j >= m->size2)
++        {
++          GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
++        }
++    }
++#endif
++  return (const int *) (m->data + (i * m->tda + j)) ;
++} 
++
++#endif
++
++__END_DECLS
++
++#endif /* __GSL_MATRIX_INT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_complex_float.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_complex_float.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_complex_float.h	(revision 14078)
+@@ -0,0 +1,45 @@
++/* permutation/gsl_permute_vector_complex_float.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_PERMUTE_VECTOR_COMPLEX_FLOAT_H__
++#define __GSL_PERMUTE_VECTOR_COMPLEX_FLOAT_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_permutation.h>
++#include <gsl/gsl_vector_complex_float.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++int gsl_permute_vector_complex_float (const gsl_permutation * p, gsl_vector_complex_float * v);
++int gsl_permute_vector_complex_float_inverse (const gsl_permutation * p, gsl_vector_complex_float * v);
++
++__END_DECLS
++
++#endif /* __GSL_PERMUTE_VECTOR_COMPLEX_FLOAT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_dht.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_dht.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_dht.h	(revision 14078)
+@@ -0,0 +1,87 @@
++/* dht/gsl_dht.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++/* Author:  G. Jungman
++ */
++#ifndef __GSL_DHT_H__
++#define __GSL_DHT_H__
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++
++struct gsl_dht_struct {
++  size_t    size;  /* size of the sample arrays to be transformed    */
++  double    nu;    /* Bessel function order                          */
++  double    xmax;  /* the upper limit to the x-sampling domain       */
++  double    kmax;  /* the upper limit to the k-sampling domain       */
++  double *  j;     /* array of computed J_nu zeros, j_{nu,s} = j[s]  */
++  double *  Jjj;   /* transform numerator, J_nu(j_i j_m / j_N)       */
++  double *  J2;    /* transform denominator, J_{nu+1}^2(j_m)         */
++};
++typedef struct gsl_dht_struct gsl_dht;
++
++
++/* Create a new transform object for a given size
++ * sampling array on the domain [0, xmax].
++ */
++gsl_dht * gsl_dht_alloc(size_t size);
++gsl_dht * gsl_dht_new(size_t size, double nu, double xmax);
++
++/* Recalculate a transform object for given values of nu, xmax.
++ * You cannot change the size of the object since the internal
++ * allocation is reused.
++ */
++int gsl_dht_init(gsl_dht * t, double nu, double xmax);
++
++/* The n'th computed x sample point for a given transform.
++ * 0 <= n <= size-1
++ */
++double gsl_dht_x_sample(const gsl_dht * t, int n);
++
++
++/* The n'th computed k sample point for a given transform.
++ * 0 <= n <= size-1
++ */
++double gsl_dht_k_sample(const gsl_dht * t, int n);
++
++
++/* Free a transform object.
++ */
++void gsl_dht_free(gsl_dht * t);
++
++
++/* Perform a transform on a sampled array.
++ * f_in[0] ... f_in[size-1] and similarly for f_out[]
++ */
++int gsl_dht_apply(const gsl_dht * t, double * f_in, double * f_out);
++
++
++__END_DECLS
++
++#endif /* __GSL_DHT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_monte.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_monte.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_monte.h	(revision 14078)
+@@ -0,0 +1,55 @@
++/* monte/gsl_monte.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Michael Booth
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++/* Some things common to all the Monte-Carlo implementations */
++/* Author: MJB */
++
++#ifndef __GSL_MONTE_H__
++#define __GSL_MONTE_H__
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++/* Hide the function type in a typedef so that we can use it in all our
++   integration functions, and make it easy to change things.
++*/
++
++struct gsl_monte_function_struct {
++  double (*f)(double * x_array, size_t dim, void * params);
++  size_t dim;
++  void * params;
++};
++
++typedef struct gsl_monte_function_struct gsl_monte_function;
++
++#define GSL_MONTE_FN_EVAL(F,x) (*((F)->f))(x,(F)->dim,(F)->params)
++
++
++__END_DECLS
++
++#endif /* __GSL_MONTE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_clausen.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_clausen.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_clausen.h	(revision 14078)
+@@ -0,0 +1,52 @@
++/* specfunc/gsl_sf_clausen.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++/* Author:  G. Jungman */
++
++#ifndef __GSL_SF_CLAUSEN_H__
++#define __GSL_SF_CLAUSEN_H__
++
++#include <gsl/gsl_sf_result.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++
++/* Calculate the Clausen integral:
++ *   Cl_2(x) := Integrate[-Log[2 Sin[t/2]], {t,0,x}]
++ *
++ * Relation to dilogarithm:
++ *   Cl_2(theta) = Im[ Li_2(e^(i theta)) ]
++ */
++int gsl_sf_clausen_e(double x, gsl_sf_result * result);
++double gsl_sf_clausen(const double x);
++
++
++__END_DECLS
++
++#endif /* __GSL_SF_CLAUSEN_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_long_double.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_long_double.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_long_double.h	(revision 14078)
+@@ -0,0 +1,51 @@
++/* sort/gsl_sort_vector_long_double.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_SORT_VECTOR_LONG_DOUBLE_H__
++#define __GSL_SORT_VECTOR_LONG_DOUBLE_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_permutation.h>
++#include <gsl/gsl_vector_long_double.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++void gsl_sort_vector_long_double (gsl_vector_long_double * v);
++int gsl_sort_vector_long_double_index (gsl_permutation * p, const gsl_vector_long_double * v);
++
++int gsl_sort_vector_long_double_smallest (long double * dest, const size_t k, const gsl_vector_long_double * v);
++int gsl_sort_vector_long_double_largest (long double * dest, const size_t k, const gsl_vector_long_double * v);
++
++int gsl_sort_vector_long_double_smallest_index (size_t * p, const size_t k, const gsl_vector_long_double * v);
++int gsl_sort_vector_long_double_largest_index (size_t * p, const size_t k, const gsl_vector_long_double * v);
++
++__END_DECLS
++
++#endif /* __GSL_SORT_VECTOR_LONG_DOUBLE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_dawson.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_dawson.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_dawson.h	(revision 14078)
+@@ -0,0 +1,52 @@
++/* specfunc/gsl_sf_dawson.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++/* Author:  G. Jungman */
++
++#ifndef __GSL_SF_DAWSON_H__
++#define __GSL_SF_DAWSON_H__
++
++#include <gsl/gsl_sf_result.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++
++/* Dawson's integral:
++ *
++ *   Exp[-x^2] Integral[ Exp[t^2], {t,0,x}]
++ *
++ * exceptions: GSL_EUNDRFLW;
++ */
++int     gsl_sf_dawson_e(double x, gsl_sf_result * result);
++double     gsl_sf_dawson(double x);
++
++
++__END_DECLS
++
++#endif /* __GSL_SF_DAWSON_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_psi.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_psi.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_psi.h	(revision 14078)
+@@ -0,0 +1,113 @@
++/* specfunc/gsl_sf_psi.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004 Gerard Jungman
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++/* Author:  G. Jungman */
++
++#ifndef __GSL_SF_PSI_H__
++#define __GSL_SF_PSI_H__
++
++#include <gsl/gsl_sf_result.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++
++/* Poly-Gamma Functions
++ *
++ * psi(m,x) := (d/dx)^m psi(0,x) = (d/dx)^{m+1} log(gamma(x))
++ */
++
++
++/* Di-Gamma Function  psi(n) = psi(0,n)
++ *
++ * n > 0
++ * exceptions: GSL_EDOM
++ */
++int     gsl_sf_psi_int_e(const int n, gsl_sf_result * result);
++double  gsl_sf_psi_int(const int n);
++
++
++/* Di-Gamma Function psi(x) = psi(0, x)
++ *
++ * x != 0.0, -1.0, -2.0, ...
++ * exceptions: GSL_EDOM, GSL_ELOSS
++ */
++int     gsl_sf_psi_e(const double x, gsl_sf_result * result);
++double  gsl_sf_psi(const double x);
++
++
++/* Di-Gamma Function Re[psi(1 + I y)]
++ *
++ * exceptions: none
++ */
++int     gsl_sf_psi_1piy_e(const double y, gsl_sf_result * result);
++double  gsl_sf_psi_1piy(const double y);
++
++
++/* Di-Gamma Function psi(z) for general complex argument z = x + iy
++ *
++ * exceptions: GSL_EDOM
++ */
++int gsl_sf_complex_psi_e(
++  const double x,
++  const double y,
++  gsl_sf_result * result_re,
++  gsl_sf_result * result_im
++  );
++
++
++/* Tri-Gamma Function psi^(1)(n)
++ *
++ * n > 0
++ * exceptions: GSL_EDOM
++ */
++int     gsl_sf_psi_1_int_e(const int n, gsl_sf_result * result);
++double  gsl_sf_psi_1_int(const int n);
++
++
++/* Tri-Gamma Function psi^(1)(x)
++ *
++ * x != 0.0, -1.0, -2.0, ...
++ * exceptions: GSL_EDOM, GSL_ELOSS
++ */
++int     gsl_sf_psi_1_e(const double x, gsl_sf_result * result);
++double  gsl_sf_psi_1(const double x);
++
++
++/* Poly-Gamma Function psi^(n)(x)
++ *
++ * n >= 0, x > 0.0
++ * exceptions: GSL_EDOM
++ */
++int     gsl_sf_psi_n_e(const int n, const double x, gsl_sf_result * result);
++double  gsl_sf_psi_n(const int n, const double x);
++
++
++__END_DECLS
++
++#endif /* __GSL_SF_PSI_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_complex_double.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_complex_double.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_complex_double.h	(revision 14078)
+@@ -0,0 +1,45 @@
++/* permutation/gsl_permute_vector_complex_double.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_PERMUTE_VECTOR_COMPLEX_DOUBLE_H__
++#define __GSL_PERMUTE_VECTOR_COMPLEX_DOUBLE_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_permutation.h>
++#include <gsl/gsl_vector_complex_double.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++int gsl_permute_vector_complex (const gsl_permutation * p, gsl_vector_complex * v);
++int gsl_permute_vector_complex_inverse (const gsl_permutation * p, gsl_vector_complex * v);
++
++__END_DECLS
++
++#endif /* __GSL_PERMUTE_VECTOR_COMPLEX_DOUBLE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_message.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_message.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_message.h	(revision 14078)
+@@ -0,0 +1,80 @@
++/* err/gsl_message.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_MESSAGE_H__
++#define __GSL_MESSAGE_H__
++#include <gsl/gsl_types.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++/* Provide a general messaging service for client use.  Messages can
++ * be selectively turned off at compile time by defining an
++ * appropriate message mask. Client code which uses the GSL_MESSAGE()
++ * macro must provide a mask which is or'ed with the GSL_MESSAGE_MASK.
++ *
++ * The messaging service can be completely turned off
++ * by defining GSL_MESSAGING_OFF.  */
++
++void gsl_message(const char * message, const char * file, int line,
++                 unsigned int mask);
++
++#ifndef GSL_MESSAGE_MASK
++#define GSL_MESSAGE_MASK 0xffffffffu /* default all messages allowed */
++#endif
++
++GSL_VAR unsigned int gsl_message_mask ;
++
++/* Provide some symolic masks for client ease of use. */
++
++enum {
++  GSL_MESSAGE_MASK_A = 1,
++  GSL_MESSAGE_MASK_B = 2,
++  GSL_MESSAGE_MASK_C = 4,
++  GSL_MESSAGE_MASK_D = 8,
++  GSL_MESSAGE_MASK_E = 16,
++  GSL_MESSAGE_MASK_F = 32,
++  GSL_MESSAGE_MASK_G = 64,
++  GSL_MESSAGE_MASK_H = 128
++} ;
++
++#ifdef GSL_MESSAGING_OFF        /* throw away messages */ 
++#define GSL_MESSAGE(message, mask) do { } while(0)
++#else                           /* output all messages */
++#define GSL_MESSAGE(message, mask) \
++       do { \
++       if (mask & GSL_MESSAGE_MASK) \
++         gsl_message (message, __FILE__, __LINE__, mask) ; \
++       } while (0)
++#endif
++
++__END_DECLS
++
++#endif /* __GSL_MESSAGE_H__ */
++
++
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_transport.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_transport.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_transport.h	(revision 14078)
+@@ -0,0 +1,78 @@
++/* specfunc/gsl_sf_transport.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++/* Author:  G. Jungman */
++
++#ifndef __GSL_SF_TRANSPORT_H__
++#define __GSL_SF_TRANSPORT_H__
++
++#include <gsl/gsl_sf_result.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++
++/* Transport function:
++ *   J(n,x) := Integral[ t^n e^t /(e^t - 1)^2, {t,0,x}]
++ */
++
++/* J(2,x)
++ *
++ * exceptions: GSL_EDOM
++ */
++int     gsl_sf_transport_2_e(const double x, gsl_sf_result * result);
++double     gsl_sf_transport_2(const double x);
++
++
++/* J(3,x)
++ *
++ * exceptions: GSL_EDOM, GSL_EUNDRFLW
++ */
++int     gsl_sf_transport_3_e(const double x, gsl_sf_result * result);
++double     gsl_sf_transport_3(const double x);
++
++
++/* J(4,x)
++ *
++ * exceptions: GSL_EDOM, GSL_EUNDRFLW
++ */
++int     gsl_sf_transport_4_e(const double x, gsl_sf_result * result);
++double     gsl_sf_transport_4(const double x);
++
++
++/* J(5,x)
++ *
++ * exceptions: GSL_EDOM, GSL_EUNDRFLW
++ */
++int     gsl_sf_transport_5_e(const double x, gsl_sf_result * result);
++double     gsl_sf_transport_5(const double x);
++
++
++__END_DECLS
++
++#endif /* __GSL_SF_TRANSPORT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_rng.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_rng.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_rng.h	(revision 14078)
+@@ -0,0 +1,217 @@
++/* rng/gsl_rng.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004, 2007 James Theiler, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_RNG_H__
++#define __GSL_RNG_H__
++#include <stdlib.h>
++#include <gsl/gsl_types.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_inline.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++typedef struct
++  {
++    const char *name;
++    unsigned long int max;
++    unsigned long int min;
++    size_t size;
++    void (*set) (void *state, unsigned long int seed);
++    unsigned long int (*get) (void *state);
++    double (*get_double) (void *state);
++  }
++gsl_rng_type;
++
++typedef struct
++  {
++    const gsl_rng_type * type;
++    void *state;
++  }
++gsl_rng;
++
++
++/* These structs also need to appear in default.c so you can select
++   them via the environment variable GSL_RNG_TYPE */
++
++GSL_VAR const gsl_rng_type *gsl_rng_borosh13;
++GSL_VAR const gsl_rng_type *gsl_rng_coveyou;
++GSL_VAR const gsl_rng_type *gsl_rng_cmrg;
++GSL_VAR const gsl_rng_type *gsl_rng_fishman18;
++GSL_VAR const gsl_rng_type *gsl_rng_fishman20;
++GSL_VAR const gsl_rng_type *gsl_rng_fishman2x;
++GSL_VAR const gsl_rng_type *gsl_rng_gfsr4;
++GSL_VAR const gsl_rng_type *gsl_rng_knuthran;
++GSL_VAR const gsl_rng_type *gsl_rng_knuthran2;
++GSL_VAR const gsl_rng_type *gsl_rng_knuthran2002;
++GSL_VAR const gsl_rng_type *gsl_rng_lecuyer21;
++GSL_VAR const gsl_rng_type *gsl_rng_minstd;
++GSL_VAR const gsl_rng_type *gsl_rng_mrg;
++GSL_VAR const gsl_rng_type *gsl_rng_mt19937;
++GSL_VAR const gsl_rng_type *gsl_rng_mt19937_1999;
++GSL_VAR const gsl_rng_type *gsl_rng_mt19937_1998;
++GSL_VAR const gsl_rng_type *gsl_rng_r250;
++GSL_VAR const gsl_rng_type *gsl_rng_ran0;
++GSL_VAR const gsl_rng_type *gsl_rng_ran1;
++GSL_VAR const gsl_rng_type *gsl_rng_ran2;
++GSL_VAR const gsl_rng_type *gsl_rng_ran3;
++GSL_VAR const gsl_rng_type *gsl_rng_rand;
++GSL_VAR const gsl_rng_type *gsl_rng_rand48;
++GSL_VAR const gsl_rng_type *gsl_rng_random128_bsd;
++GSL_VAR const gsl_rng_type *gsl_rng_random128_glibc2;
++GSL_VAR const gsl_rng_type *gsl_rng_random128_libc5;
++GSL_VAR const gsl_rng_type *gsl_rng_random256_bsd;
++GSL_VAR const gsl_rng_type *gsl_rng_random256_glibc2;
++GSL_VAR const gsl_rng_type *gsl_rng_random256_libc5;
++GSL_VAR const gsl_rng_type *gsl_rng_random32_bsd;
++GSL_VAR const gsl_rng_type *gsl_rng_random32_glibc2;
++GSL_VAR const gsl_rng_type *gsl_rng_random32_libc5;
++GSL_VAR const gsl_rng_type *gsl_rng_random64_bsd;
++GSL_VAR const gsl_rng_type *gsl_rng_random64_glibc2;
++GSL_VAR const gsl_rng_type *gsl_rng_random64_libc5;
++GSL_VAR const gsl_rng_type *gsl_rng_random8_bsd;
++GSL_VAR const gsl_rng_type *gsl_rng_random8_glibc2;
++GSL_VAR const gsl_rng_type *gsl_rng_random8_libc5;
++GSL_VAR const gsl_rng_type *gsl_rng_random_bsd;
++GSL_VAR const gsl_rng_type *gsl_rng_random_glibc2;
++GSL_VAR const gsl_rng_type *gsl_rng_random_libc5;
++GSL_VAR const gsl_rng_type *gsl_rng_randu;
++GSL_VAR const gsl_rng_type *gsl_rng_ranf;
++GSL_VAR const gsl_rng_type *gsl_rng_ranlux;
++GSL_VAR const gsl_rng_type *gsl_rng_ranlux389;
++GSL_VAR const gsl_rng_type *gsl_rng_ranlxd1;
++GSL_VAR const gsl_rng_type *gsl_rng_ranlxd2;
++GSL_VAR const gsl_rng_type *gsl_rng_ranlxs0;
++GSL_VAR const gsl_rng_type *gsl_rng_ranlxs1;
++GSL_VAR const gsl_rng_type *gsl_rng_ranlxs2;
++GSL_VAR const gsl_rng_type *gsl_rng_ranmar;
++GSL_VAR const gsl_rng_type *gsl_rng_slatec;
++GSL_VAR const gsl_rng_type *gsl_rng_taus;
++GSL_VAR const gsl_rng_type *gsl_rng_taus2;
++GSL_VAR const gsl_rng_type *gsl_rng_taus113;
++GSL_VAR const gsl_rng_type *gsl_rng_transputer;
++GSL_VAR const gsl_rng_type *gsl_rng_tt800;
++GSL_VAR const gsl_rng_type *gsl_rng_uni;
++GSL_VAR const gsl_rng_type *gsl_rng_uni32;
++GSL_VAR const gsl_rng_type *gsl_rng_vax;
++GSL_VAR const gsl_rng_type *gsl_rng_waterman14;
++GSL_VAR const gsl_rng_type *gsl_rng_zuf;
++
++const gsl_rng_type ** gsl_rng_types_setup(void);
++
++GSL_VAR const gsl_rng_type *gsl_rng_default;
++GSL_VAR unsigned long int gsl_rng_default_seed;
++
++gsl_rng *gsl_rng_alloc (const gsl_rng_type * T);
++int gsl_rng_memcpy (gsl_rng * dest, const gsl_rng * src);
++gsl_rng *gsl_rng_clone (const gsl_rng * r);
++
++void gsl_rng_free (gsl_rng * r);
++
++void gsl_rng_set (const gsl_rng * r, unsigned long int seed);
++unsigned long int gsl_rng_max (const gsl_rng * r);
++unsigned long int gsl_rng_min (const gsl_rng * r);
++const char *gsl_rng_name (const gsl_rng * r);
++
++int gsl_rng_fread (FILE * stream, gsl_rng * r);
++int gsl_rng_fwrite (FILE * stream, const gsl_rng * r);
++
++size_t gsl_rng_size (const gsl_rng * r);
++void * gsl_rng_state (const gsl_rng * r);
++
++void gsl_rng_print_state (const gsl_rng * r);
++
++const gsl_rng_type * gsl_rng_env_setup (void);
++
++INLINE_DECL unsigned long int gsl_rng_get (const gsl_rng * r);
++INLINE_DECL double gsl_rng_uniform (const gsl_rng * r);
++INLINE_DECL double gsl_rng_uniform_pos (const gsl_rng * r);
++INLINE_DECL unsigned long int gsl_rng_uniform_int (const gsl_rng * r, unsigned long int n);
++
++#ifdef HAVE_INLINE
++
++INLINE_FUN unsigned long int
++gsl_rng_get (const gsl_rng * r)
++{
++  return (r->type->get) (r->state);
++}
++
++INLINE_FUN double
++gsl_rng_uniform (const gsl_rng * r)
++{
++  return (r->type->get_double) (r->state);
++}
++
++INLINE_FUN double
++gsl_rng_uniform_pos (const gsl_rng * r)
++{
++  double x ;
++  do
++    {
++      x = (r->type->get_double) (r->state) ;
++    }
++  while (x == 0) ;
++
++  return x ;
++}
++
++/* Note: to avoid integer overflow in (range+1) we work with scale =
++   range/n = (max-min)/n rather than scale=(max-min+1)/n, this reduces
++   efficiency slightly but avoids having to check for the out of range
++   value.  Note that range is typically O(2^32) so the addition of 1
++   is negligible in most usage. */
++
++INLINE_FUN unsigned long int
++gsl_rng_uniform_int (const gsl_rng * r, unsigned long int n)
++{
++  unsigned long int offset = r->type->min;
++  unsigned long int range = r->type->max - offset;
++  unsigned long int scale;
++  unsigned long int k;
++
++  if (n > range || n == 0) 
++    {
++      GSL_ERROR_VAL ("invalid n, either 0 or exceeds maximum value of generator",
++                     GSL_EINVAL, 0) ;
++    }
++
++  scale = range / n;
++
++  do
++    {
++      k = (((r->type->get) (r->state)) - offset) / scale;
++    }
++  while (k >= n);
++
++  return k;
++}
++#endif /* HAVE_INLINE */
++
++__END_DECLS
++
++#endif /* __GSL_RNG_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_coulomb.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_coulomb.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_coulomb.h	(revision 14078)
+@@ -0,0 +1,128 @@
++/* specfunc/gsl_sf_coulomb.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++/* Author:  G. Jungman */
++
++#ifndef __GSL_SF_COULOMB_H__
++#define __GSL_SF_COULOMB_H__
++
++#include <gsl/gsl_mode.h>
++#include <gsl/gsl_sf_result.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++
++/* Normalized hydrogenic bound states, radial dependence. */
++
++/* R_1 := 2Z sqrt(Z) exp(-Z r)
++ */
++int gsl_sf_hydrogenicR_1_e(const double Z, const double r, gsl_sf_result * result);
++double gsl_sf_hydrogenicR_1(const double Z, const double r);
++
++/* R_n := norm exp(-Z r/n) (2Z/n)^l Laguerre[n-l-1, 2l+1, 2Z/n r]
++ *
++ * normalization such that psi(n,l,r) = R_n Y_{lm}
++ */
++int gsl_sf_hydrogenicR_e(const int n, const int l, const double Z, const double r, gsl_sf_result * result);
++double gsl_sf_hydrogenicR(const int n, const int l, const double Z, const double r);
++
++
++/* Coulomb wave functions F_{lam_F}(eta,x), G_{lam_G}(eta,x)
++ * and their derivatives; lam_G := lam_F - k_lam_G
++ *
++ * lam_F, lam_G > -0.5
++ * x > 0.0
++ *
++ * Conventions of Abramowitz+Stegun.
++ *
++ * Because there can be a large dynamic range of values,
++ * overflows are handled gracefully. If an overflow occurs,
++ * GSL_EOVRFLW is signalled and exponent(s) are returned
++ * through exp_F, exp_G. These are such that
++ *
++ *   F_L(eta,x)  =  fc[k_L] * exp(exp_F)
++ *   G_L(eta,x)  =  gc[k_L] * exp(exp_G)
++ *   F_L'(eta,x) = fcp[k_L] * exp(exp_F)
++ *   G_L'(eta,x) = gcp[k_L] * exp(exp_G)
++ */
++int
++gsl_sf_coulomb_wave_FG_e(const double eta, const double x,
++                            const double lam_F,
++                            const int  k_lam_G,
++                            gsl_sf_result * F, gsl_sf_result * Fp,
++                            gsl_sf_result * G, gsl_sf_result * Gp,
++                            double * exp_F, double * exp_G);
++
++
++/* F_L(eta,x) as array */
++int gsl_sf_coulomb_wave_F_array(
++  double lam_min, int kmax,
++  double eta, double x,
++  double * fc_array,
++  double * F_exponent
++  );
++
++/* F_L(eta,x), G_L(eta,x) as arrays */
++int gsl_sf_coulomb_wave_FG_array(double lam_min, int kmax,
++                                double eta, double x,
++                                double * fc_array, double * gc_array,
++                                double * F_exponent,
++                                double * G_exponent
++                                );
++
++/* F_L(eta,x), G_L(eta,x), F'_L(eta,x), G'_L(eta,x) as arrays */
++int gsl_sf_coulomb_wave_FGp_array(double lam_min, int kmax,
++                                double eta, double x,
++                                double * fc_array, double * fcp_array,
++                                double * gc_array, double * gcp_array,
++                                double * F_exponent,
++                                double * G_exponent
++                                );
++
++/* Coulomb wave function divided by the argument,
++ * F(eta, x)/x. This is the function which reduces to
++ * spherical Bessel functions in the limit eta->0.
++ */
++int gsl_sf_coulomb_wave_sphF_array(double lam_min, int kmax,
++                                        double eta, double x,
++                                        double * fc_array,
++                                        double * F_exponent
++                                        );
++
++
++/* Coulomb wave function normalization constant.
++ * [Abramowitz+Stegun 14.1.8, 14.1.9]
++ */
++int gsl_sf_coulomb_CL_e(double L, double eta, gsl_sf_result * result);
++int gsl_sf_coulomb_CL_array(double Lmin, int kmax, double eta, double * cl);
++
++
++__END_DECLS
++
++#endif /* __GSL_SF_COULOMB_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_short.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_short.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_short.h	(revision 14078)
+@@ -0,0 +1,51 @@
++/* sort/gsl_sort_vector_short.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_SORT_VECTOR_SHORT_H__
++#define __GSL_SORT_VECTOR_SHORT_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_permutation.h>
++#include <gsl/gsl_vector_short.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++void gsl_sort_vector_short (gsl_vector_short * v);
++int gsl_sort_vector_short_index (gsl_permutation * p, const gsl_vector_short * v);
++
++int gsl_sort_vector_short_smallest (short * dest, const size_t k, const gsl_vector_short * v);
++int gsl_sort_vector_short_largest (short * dest, const size_t k, const gsl_vector_short * v);
++
++int gsl_sort_vector_short_smallest_index (size_t * p, const size_t k, const gsl_vector_short * v);
++int gsl_sort_vector_short_largest_index (size_t * p, const size_t k, const gsl_vector_short * v);
++
++__END_DECLS
++
++#endif /* __GSL_SORT_VECTOR_SHORT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_ulong.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_ulong.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_ulong.h	(revision 14078)
+@@ -0,0 +1,79 @@
++/* statistics/gsl_statistics_ulong.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_STATISTICS_ULONG_H__
++#define __GSL_STATISTICS_ULONG_H__
++
++#include <stddef.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++double gsl_stats_ulong_mean (const unsigned long data[], const size_t stride, const size_t n);
++double gsl_stats_ulong_variance (const unsigned long data[], const size_t stride, const size_t n);
++double gsl_stats_ulong_sd (const unsigned long data[], const size_t stride, const size_t n);
++double gsl_stats_ulong_variance_with_fixed_mean (const unsigned long data[], const size_t stride, const size_t n, const double mean);
++double gsl_stats_ulong_sd_with_fixed_mean (const unsigned long data[], const size_t stride, const size_t n, const double mean);
++double gsl_stats_ulong_tss (const unsigned long data[], const size_t stride, const size_t n);
++double gsl_stats_ulong_tss_m (const unsigned long data[], const size_t stride, const size_t n, const double mean);
++
++double gsl_stats_ulong_absdev (const unsigned long data[], const size_t stride, const size_t n);
++double gsl_stats_ulong_skew (const unsigned long data[], const size_t stride, const size_t n);
++double gsl_stats_ulong_kurtosis (const unsigned long data[], const size_t stride, const size_t n);
++double gsl_stats_ulong_lag1_autocorrelation (const unsigned long data[], const size_t stride, const size_t n);
++
++double gsl_stats_ulong_covariance (const unsigned long data1[], const size_t stride1,const unsigned long data2[], const size_t stride2, const size_t n);
++double gsl_stats_ulong_correlation (const unsigned long data1[], const size_t stride1,const unsigned long data2[], const size_t stride2, const size_t n);
++
++double gsl_stats_ulong_variance_m (const unsigned long data[], const size_t stride, const size_t n, const double mean);
++double gsl_stats_ulong_sd_m (const unsigned long data[], const size_t stride, const size_t n, const double mean);
++double gsl_stats_ulong_absdev_m (const unsigned long data[], const size_t stride, const size_t n, const double mean);
++double gsl_stats_ulong_skew_m_sd (const unsigned long data[], const size_t stride, const size_t n, const double mean, const double sd);
++double gsl_stats_ulong_kurtosis_m_sd (const unsigned long data[], const size_t stride, const size_t n, const double mean, const double sd);
++double gsl_stats_ulong_lag1_autocorrelation_m (const unsigned long data[], const size_t stride, const size_t n, const double mean);
++
++double gsl_stats_ulong_covariance_m (const unsigned long data1[], const size_t stride1,const unsigned long data2[], const size_t stride2, const size_t n, const double mean1, const double mean2);
++
++
++double gsl_stats_ulong_pvariance (const unsigned long data1[], const size_t stride1, const size_t n1, const unsigned long data2[], const size_t stride2, const size_t n2);
++double gsl_stats_ulong_ttest (const unsigned long data1[], const size_t stride1, const size_t n1, const unsigned long data2[], const size_t stride2, const size_t n2);
++
++unsigned long gsl_stats_ulong_max (const unsigned long data[], const size_t stride, const size_t n);
++unsigned long gsl_stats_ulong_min (const unsigned long data[], const size_t stride, const size_t n);
++void gsl_stats_ulong_minmax (unsigned long * min, unsigned long * max, const unsigned long data[], const size_t stride, const size_t n);
++
++size_t gsl_stats_ulong_max_index (const unsigned long data[], const size_t stride, const size_t n);
++size_t gsl_stats_ulong_min_index (const unsigned long data[], const size_t stride, const size_t n);
++void gsl_stats_ulong_minmax_index (size_t * min_index, size_t * max_index, const unsigned long data[], const size_t stride, const size_t n);
++
++double gsl_stats_ulong_median_from_sorted_data (const unsigned long sorted_data[], const size_t stride, const size_t n) ;
++double gsl_stats_ulong_quantile_from_sorted_data (const unsigned long sorted_data[], const size_t stride, const size_t n, const double f) ;
++
++__END_DECLS
++
++#endif /* __GSL_STATISTICS_ULONG_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_combination.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_combination.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_combination.h	(revision 14078)
+@@ -0,0 +1,92 @@
++/* combination/gsl_combination.h
++ * based on permutation/gsl_permutation.h by Brian Gough
++ * 
++ * Copyright (C) 2001 Szymon Jaroszewicz
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_COMBINATION_H__
++#define __GSL_COMBINATION_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_types.h>
++#include <gsl/gsl_inline.h>
++#include <gsl/gsl_check_range.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++struct gsl_combination_struct
++{
++  size_t n;
++  size_t k;
++  size_t *data;
++};
++
++typedef struct gsl_combination_struct gsl_combination;
++
++gsl_combination *gsl_combination_alloc (const size_t n, const size_t k);
++gsl_combination *gsl_combination_calloc (const size_t n, const size_t k);
++void gsl_combination_init_first (gsl_combination * c);
++void gsl_combination_init_last (gsl_combination * c);
++void gsl_combination_free (gsl_combination * c);
++int gsl_combination_memcpy (gsl_combination * dest, const gsl_combination * src); 
++
++int gsl_combination_fread (FILE * stream, gsl_combination * c);
++int gsl_combination_fwrite (FILE * stream, const gsl_combination * c);
++int gsl_combination_fscanf (FILE * stream, gsl_combination * c);
++int gsl_combination_fprintf (FILE * stream, const gsl_combination * c, const char *format);
++
++size_t gsl_combination_n (const gsl_combination * c);
++size_t gsl_combination_k (const gsl_combination * c);
++size_t * gsl_combination_data (const gsl_combination * c);
++
++int gsl_combination_valid (gsl_combination * c);
++int gsl_combination_next (gsl_combination * c);
++int gsl_combination_prev (gsl_combination * c);
++
++INLINE_DECL size_t gsl_combination_get (const gsl_combination * c, const size_t i);
++
++#ifdef HAVE_INLINE
++
++INLINE_FUN
++size_t
++gsl_combination_get (const gsl_combination * c, const size_t i)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(i >= c->k)) /* size_t is unsigned, can't be negative */
++    {
++      GSL_ERROR_VAL ("index out of range", GSL_EINVAL, 0);
++    }
++#endif
++  return c->data[i];
++}
++
++#endif /* HAVE_INLINE */
++
++__END_DECLS
++
++#endif /* __GSL_COMBINATION_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_const_num.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_const_num.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_const_num.h	(revision 14078)
+@@ -0,0 +1,43 @@
++/* const/gsl_const_num.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
++ * 2006, 2007, 2008, 2009 Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_CONST_NUM__
++#define __GSL_CONST_NUM__
++
++#define GSL_CONST_NUM_FINE_STRUCTURE (7.297352533e-3) /* 1 */
++#define GSL_CONST_NUM_AVOGADRO (6.02214199e23) /* 1 / mol */
++#define GSL_CONST_NUM_YOTTA (1e24) /* 1 */
++#define GSL_CONST_NUM_ZETTA (1e21) /* 1 */
++#define GSL_CONST_NUM_EXA (1e18) /* 1 */
++#define GSL_CONST_NUM_PETA (1e15) /* 1 */
++#define GSL_CONST_NUM_TERA (1e12) /* 1 */
++#define GSL_CONST_NUM_GIGA (1e9) /* 1 */
++#define GSL_CONST_NUM_MEGA (1e6) /* 1 */
++#define GSL_CONST_NUM_KILO (1e3) /* 1 */
++#define GSL_CONST_NUM_MILLI (1e-3) /* 1 */
++#define GSL_CONST_NUM_MICRO (1e-6) /* 1 */
++#define GSL_CONST_NUM_NANO (1e-9) /* 1 */
++#define GSL_CONST_NUM_PICO (1e-12) /* 1 */
++#define GSL_CONST_NUM_FEMTO (1e-15) /* 1 */
++#define GSL_CONST_NUM_ATTO (1e-18) /* 1 */
++#define GSL_CONST_NUM_ZEPTO (1e-21) /* 1 */
++#define GSL_CONST_NUM_YOCTO (1e-24) /* 1 */
++
++#endif /* __GSL_CONST_NUM__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_complex_float.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_complex_float.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_complex_float.h	(revision 14078)
+@@ -0,0 +1,65 @@
++/* block/gsl_block_complex_float.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_BLOCK_COMPLEX_FLOAT_H__
++#define __GSL_BLOCK_COMPLEX_FLOAT_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++struct gsl_block_complex_float_struct
++{
++  size_t size;
++  float *data;
++};
++
++typedef struct gsl_block_complex_float_struct gsl_block_complex_float;
++
++gsl_block_complex_float *gsl_block_complex_float_alloc (const size_t n);
++gsl_block_complex_float *gsl_block_complex_float_calloc (const size_t n);
++void gsl_block_complex_float_free (gsl_block_complex_float * b);
++
++int gsl_block_complex_float_fread (FILE * stream, gsl_block_complex_float * b);
++int gsl_block_complex_float_fwrite (FILE * stream, const gsl_block_complex_float * b);
++int gsl_block_complex_float_fscanf (FILE * stream, gsl_block_complex_float * b);
++int gsl_block_complex_float_fprintf (FILE * stream, const gsl_block_complex_float * b, const char *format);
++
++int gsl_block_complex_float_raw_fread (FILE * stream, float * b, const size_t n, const size_t stride);
++int gsl_block_complex_float_raw_fwrite (FILE * stream, const float * b, const size_t n, const size_t stride);
++int gsl_block_complex_float_raw_fscanf (FILE * stream, float * b, const size_t n, const size_t stride);
++int gsl_block_complex_float_raw_fprintf (FILE * stream, const float * b, const size_t n, const size_t stride, const char *format);
++
++size_t gsl_block_complex_float_size (const gsl_block_complex_float * b);
++float * gsl_block_complex_float_data (const gsl_block_complex_float * b);
++
++__END_DECLS
++
++#endif /* __GSL_BLOCK_COMPLEX_FLOAT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_ushort.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_ushort.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_ushort.h	(revision 14078)
+@@ -0,0 +1,230 @@
++/* vector/gsl_vector_ushort.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_VECTOR_USHORT_H__
++#define __GSL_VECTOR_USHORT_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_types.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_inline.h>
++#include <gsl/gsl_check_range.h>
++#include <gsl/gsl_block_ushort.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++typedef struct 
++{
++  size_t size;
++  size_t stride;
++  unsigned short *data;
++  gsl_block_ushort *block;
++  int owner;
++} 
++gsl_vector_ushort;
++
++typedef struct
++{
++  gsl_vector_ushort vector;
++} _gsl_vector_ushort_view;
++
++typedef _gsl_vector_ushort_view gsl_vector_ushort_view;
++
++typedef struct
++{
++  gsl_vector_ushort vector;
++} _gsl_vector_ushort_const_view;
++
++typedef const _gsl_vector_ushort_const_view gsl_vector_ushort_const_view;
++
++
++/* Allocation */
++
++gsl_vector_ushort *gsl_vector_ushort_alloc (const size_t n);
++gsl_vector_ushort *gsl_vector_ushort_calloc (const size_t n);
++
++gsl_vector_ushort *gsl_vector_ushort_alloc_from_block (gsl_block_ushort * b,
++                                                     const size_t offset, 
++                                                     const size_t n, 
++                                                     const size_t stride);
++
++gsl_vector_ushort *gsl_vector_ushort_alloc_from_vector (gsl_vector_ushort * v,
++                                                      const size_t offset, 
++                                                      const size_t n, 
++                                                      const size_t stride);
++
++void gsl_vector_ushort_free (gsl_vector_ushort * v);
++
++/* Views */
++
++_gsl_vector_ushort_view 
++gsl_vector_ushort_view_array (unsigned short *v, size_t n);
++
++_gsl_vector_ushort_view 
++gsl_vector_ushort_view_array_with_stride (unsigned short *base,
++                                         size_t stride,
++                                         size_t n);
++
++_gsl_vector_ushort_const_view 
++gsl_vector_ushort_const_view_array (const unsigned short *v, size_t n);
++
++_gsl_vector_ushort_const_view 
++gsl_vector_ushort_const_view_array_with_stride (const unsigned short *base,
++                                               size_t stride,
++                                               size_t n);
++
++_gsl_vector_ushort_view 
++gsl_vector_ushort_subvector (gsl_vector_ushort *v, 
++                            size_t i, 
++                            size_t n);
++
++_gsl_vector_ushort_view 
++gsl_vector_ushort_subvector_with_stride (gsl_vector_ushort *v, 
++                                        size_t i,
++                                        size_t stride,
++                                        size_t n);
++
++_gsl_vector_ushort_const_view 
++gsl_vector_ushort_const_subvector (const gsl_vector_ushort *v, 
++                                  size_t i, 
++                                  size_t n);
++
++_gsl_vector_ushort_const_view 
++gsl_vector_ushort_const_subvector_with_stride (const gsl_vector_ushort *v, 
++                                              size_t i, 
++                                              size_t stride,
++                                              size_t n);
++
++/* Operations */
++
++void gsl_vector_ushort_set_zero (gsl_vector_ushort * v);
++void gsl_vector_ushort_set_all (gsl_vector_ushort * v, unsigned short x);
++int gsl_vector_ushort_set_basis (gsl_vector_ushort * v, size_t i);
++
++int gsl_vector_ushort_fread (FILE * stream, gsl_vector_ushort * v);
++int gsl_vector_ushort_fwrite (FILE * stream, const gsl_vector_ushort * v);
++int gsl_vector_ushort_fscanf (FILE * stream, gsl_vector_ushort * v);
++int gsl_vector_ushort_fprintf (FILE * stream, const gsl_vector_ushort * v,
++                              const char *format);
++
++int gsl_vector_ushort_memcpy (gsl_vector_ushort * dest, const gsl_vector_ushort * src);
++
++int gsl_vector_ushort_reverse (gsl_vector_ushort * v);
++
++int gsl_vector_ushort_swap (gsl_vector_ushort * v, gsl_vector_ushort * w);
++int gsl_vector_ushort_swap_elements (gsl_vector_ushort * v, const size_t i, const size_t j);
++
++unsigned short gsl_vector_ushort_max (const gsl_vector_ushort * v);
++unsigned short gsl_vector_ushort_min (const gsl_vector_ushort * v);
++void gsl_vector_ushort_minmax (const gsl_vector_ushort * v, unsigned short * min_out, unsigned short * max_out);
++
++size_t gsl_vector_ushort_max_index (const gsl_vector_ushort * v);
++size_t gsl_vector_ushort_min_index (const gsl_vector_ushort * v);
++void gsl_vector_ushort_minmax_index (const gsl_vector_ushort * v, size_t * imin, size_t * imax);
++
++int gsl_vector_ushort_add (gsl_vector_ushort * a, const gsl_vector_ushort * b);
++int gsl_vector_ushort_sub (gsl_vector_ushort * a, const gsl_vector_ushort * b);
++int gsl_vector_ushort_mul (gsl_vector_ushort * a, const gsl_vector_ushort * b);
++int gsl_vector_ushort_div (gsl_vector_ushort * a, const gsl_vector_ushort * b);
++int gsl_vector_ushort_scale (gsl_vector_ushort * a, const double x);
++int gsl_vector_ushort_add_constant (gsl_vector_ushort * a, const double x);
++
++int gsl_vector_ushort_equal (const gsl_vector_ushort * u, 
++                            const gsl_vector_ushort * v);
++
++int gsl_vector_ushort_isnull (const gsl_vector_ushort * v);
++int gsl_vector_ushort_ispos (const gsl_vector_ushort * v);
++int gsl_vector_ushort_isneg (const gsl_vector_ushort * v);
++int gsl_vector_ushort_isnonneg (const gsl_vector_ushort * v);
++
++INLINE_DECL unsigned short gsl_vector_ushort_get (const gsl_vector_ushort * v, const size_t i);
++INLINE_DECL void gsl_vector_ushort_set (gsl_vector_ushort * v, const size_t i, unsigned short x);
++INLINE_DECL unsigned short * gsl_vector_ushort_ptr (gsl_vector_ushort * v, const size_t i);
++INLINE_DECL const unsigned short * gsl_vector_ushort_const_ptr (const gsl_vector_ushort * v, const size_t i);
++
++#ifdef HAVE_INLINE
++
++INLINE_FUN
++unsigned short
++gsl_vector_ushort_get (const gsl_vector_ushort * v, const size_t i)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(i >= v->size))
++    {
++      GSL_ERROR_VAL ("index out of range", GSL_EINVAL, 0);
++    }
++#endif
++  return v->data[i * v->stride];
++}
++
++INLINE_FUN
++void
++gsl_vector_ushort_set (gsl_vector_ushort * v, const size_t i, unsigned short x)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(i >= v->size))
++    {
++      GSL_ERROR_VOID ("index out of range", GSL_EINVAL);
++    }
++#endif
++  v->data[i * v->stride] = x;
++}
++
++INLINE_FUN
++unsigned short *
++gsl_vector_ushort_ptr (gsl_vector_ushort * v, const size_t i)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(i >= v->size))
++    {
++      GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
++    }
++#endif
++  return (unsigned short *) (v->data + i * v->stride);
++}
++
++INLINE_FUN
++const unsigned short *
++gsl_vector_ushort_const_ptr (const gsl_vector_ushort * v, const size_t i)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(i >= v->size))
++    {
++      GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
++    }
++#endif
++  return (const unsigned short *) (v->data + i * v->stride);
++}
++#endif /* HAVE_INLINE */
++
++__END_DECLS
++
++#endif /* __GSL_VECTOR_USHORT_H__ */
++
++
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_ulong.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_ulong.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_ulong.h	(revision 14078)
+@@ -0,0 +1,350 @@
++/* matrix/gsl_matrix_ulong.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_MATRIX_ULONG_H__
++#define __GSL_MATRIX_ULONG_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_types.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_inline.h>
++#include <gsl/gsl_check_range.h>
++#include <gsl/gsl_vector_ulong.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++typedef struct 
++{
++  size_t size1;
++  size_t size2;
++  size_t tda;
++  unsigned long * data;
++  gsl_block_ulong * block;
++  int owner;
++} gsl_matrix_ulong;
++
++typedef struct
++{
++  gsl_matrix_ulong matrix;
++} _gsl_matrix_ulong_view;
++
++typedef _gsl_matrix_ulong_view gsl_matrix_ulong_view;
++
++typedef struct
++{
++  gsl_matrix_ulong matrix;
++} _gsl_matrix_ulong_const_view;
++
++typedef const _gsl_matrix_ulong_const_view gsl_matrix_ulong_const_view;
++
++/* Allocation */
++
++gsl_matrix_ulong * 
++gsl_matrix_ulong_alloc (const size_t n1, const size_t n2);
++
++gsl_matrix_ulong * 
++gsl_matrix_ulong_calloc (const size_t n1, const size_t n2);
++
++gsl_matrix_ulong * 
++gsl_matrix_ulong_alloc_from_block (gsl_block_ulong * b, 
++                                   const size_t offset, 
++                                   const size_t n1, 
++                                   const size_t n2, 
++                                   const size_t d2);
++
++gsl_matrix_ulong * 
++gsl_matrix_ulong_alloc_from_matrix (gsl_matrix_ulong * m,
++                                    const size_t k1, 
++                                    const size_t k2,
++                                    const size_t n1, 
++                                    const size_t n2);
++
++gsl_vector_ulong * 
++gsl_vector_ulong_alloc_row_from_matrix (gsl_matrix_ulong * m,
++                                        const size_t i);
++
++gsl_vector_ulong * 
++gsl_vector_ulong_alloc_col_from_matrix (gsl_matrix_ulong * m,
++                                        const size_t j);
++
++void gsl_matrix_ulong_free (gsl_matrix_ulong * m);
++
++/* Views */
++
++_gsl_matrix_ulong_view 
++gsl_matrix_ulong_submatrix (gsl_matrix_ulong * m, 
++                            const size_t i, const size_t j, 
++                            const size_t n1, const size_t n2);
++
++_gsl_vector_ulong_view 
++gsl_matrix_ulong_row (gsl_matrix_ulong * m, const size_t i);
++
++_gsl_vector_ulong_view 
++gsl_matrix_ulong_column (gsl_matrix_ulong * m, const size_t j);
++
++_gsl_vector_ulong_view 
++gsl_matrix_ulong_diagonal (gsl_matrix_ulong * m);
++
++_gsl_vector_ulong_view 
++gsl_matrix_ulong_subdiagonal (gsl_matrix_ulong * m, const size_t k);
++
++_gsl_vector_ulong_view 
++gsl_matrix_ulong_superdiagonal (gsl_matrix_ulong * m, const size_t k);
++
++_gsl_vector_ulong_view
++gsl_matrix_ulong_subrow (gsl_matrix_ulong * m, const size_t i,
++                         const size_t offset, const size_t n);
++
++_gsl_vector_ulong_view
++gsl_matrix_ulong_subcolumn (gsl_matrix_ulong * m, const size_t j,
++                            const size_t offset, const size_t n);
++
++_gsl_matrix_ulong_view
++gsl_matrix_ulong_view_array (unsigned long * base,
++                             const size_t n1, 
++                             const size_t n2);
++
++_gsl_matrix_ulong_view
++gsl_matrix_ulong_view_array_with_tda (unsigned long * base, 
++                                      const size_t n1, 
++                                      const size_t n2,
++                                      const size_t tda);
++
++
++_gsl_matrix_ulong_view
++gsl_matrix_ulong_view_vector (gsl_vector_ulong * v,
++                              const size_t n1, 
++                              const size_t n2);
++
++_gsl_matrix_ulong_view
++gsl_matrix_ulong_view_vector_with_tda (gsl_vector_ulong * v,
++                                       const size_t n1, 
++                                       const size_t n2,
++                                       const size_t tda);
++
++
++_gsl_matrix_ulong_const_view 
++gsl_matrix_ulong_const_submatrix (const gsl_matrix_ulong * m, 
++                                  const size_t i, const size_t j, 
++                                  const size_t n1, const size_t n2);
++
++_gsl_vector_ulong_const_view 
++gsl_matrix_ulong_const_row (const gsl_matrix_ulong * m, 
++                            const size_t i);
++
++_gsl_vector_ulong_const_view 
++gsl_matrix_ulong_const_column (const gsl_matrix_ulong * m, 
++                               const size_t j);
++
++_gsl_vector_ulong_const_view
++gsl_matrix_ulong_const_diagonal (const gsl_matrix_ulong * m);
++
++_gsl_vector_ulong_const_view 
++gsl_matrix_ulong_const_subdiagonal (const gsl_matrix_ulong * m, 
++                                    const size_t k);
++
++_gsl_vector_ulong_const_view 
++gsl_matrix_ulong_const_superdiagonal (const gsl_matrix_ulong * m, 
++                                      const size_t k);
++
++_gsl_vector_ulong_const_view
++gsl_matrix_ulong_const_subrow (const gsl_matrix_ulong * m, const size_t i,
++                               const size_t offset, const size_t n);
++
++_gsl_vector_ulong_const_view
++gsl_matrix_ulong_const_subcolumn (const gsl_matrix_ulong * m, const size_t j,
++                                  const size_t offset, const size_t n);
++
++_gsl_matrix_ulong_const_view
++gsl_matrix_ulong_const_view_array (const unsigned long * base,
++                                   const size_t n1, 
++                                   const size_t n2);
++
++_gsl_matrix_ulong_const_view
++gsl_matrix_ulong_const_view_array_with_tda (const unsigned long * base, 
++                                            const size_t n1, 
++                                            const size_t n2,
++                                            const size_t tda);
++
++_gsl_matrix_ulong_const_view
++gsl_matrix_ulong_const_view_vector (const gsl_vector_ulong * v,
++                                    const size_t n1, 
++                                    const size_t n2);
++
++_gsl_matrix_ulong_const_view
++gsl_matrix_ulong_const_view_vector_with_tda (const gsl_vector_ulong * v,
++                                             const size_t n1, 
++                                             const size_t n2,
++                                             const size_t tda);
++
++/* Operations */
++
++void gsl_matrix_ulong_set_zero (gsl_matrix_ulong * m);
++void gsl_matrix_ulong_set_identity (gsl_matrix_ulong * m);
++void gsl_matrix_ulong_set_all (gsl_matrix_ulong * m, unsigned long x);
++
++int gsl_matrix_ulong_fread (FILE * stream, gsl_matrix_ulong * m) ;
++int gsl_matrix_ulong_fwrite (FILE * stream, const gsl_matrix_ulong * m) ;
++int gsl_matrix_ulong_fscanf (FILE * stream, gsl_matrix_ulong * m);
++int gsl_matrix_ulong_fprintf (FILE * stream, const gsl_matrix_ulong * m, const char * format);
++ 
++int gsl_matrix_ulong_memcpy(gsl_matrix_ulong * dest, const gsl_matrix_ulong * src);
++int gsl_matrix_ulong_swap(gsl_matrix_ulong * m1, gsl_matrix_ulong * m2);
++
++int gsl_matrix_ulong_swap_rows(gsl_matrix_ulong * m, const size_t i, const size_t j);
++int gsl_matrix_ulong_swap_columns(gsl_matrix_ulong * m, const size_t i, const size_t j);
++int gsl_matrix_ulong_swap_rowcol(gsl_matrix_ulong * m, const size_t i, const size_t j);
++int gsl_matrix_ulong_transpose (gsl_matrix_ulong * m);
++int gsl_matrix_ulong_transpose_memcpy (gsl_matrix_ulong * dest, const gsl_matrix_ulong * src);
++
++unsigned long gsl_matrix_ulong_max (const gsl_matrix_ulong * m);
++unsigned long gsl_matrix_ulong_min (const gsl_matrix_ulong * m);
++void gsl_matrix_ulong_minmax (const gsl_matrix_ulong * m, unsigned long * min_out, unsigned long * max_out);
++
++void gsl_matrix_ulong_max_index (const gsl_matrix_ulong * m, size_t * imax, size_t *jmax);
++void gsl_matrix_ulong_min_index (const gsl_matrix_ulong * m, size_t * imin, size_t *jmin);
++void gsl_matrix_ulong_minmax_index (const gsl_matrix_ulong * m, size_t * imin, size_t * jmin, size_t * imax, size_t * jmax);
++
++int gsl_matrix_ulong_equal (const gsl_matrix_ulong * a, const gsl_matrix_ulong * b);
++
++int gsl_matrix_ulong_isnull (const gsl_matrix_ulong * m);
++int gsl_matrix_ulong_ispos (const gsl_matrix_ulong * m);
++int gsl_matrix_ulong_isneg (const gsl_matrix_ulong * m);
++int gsl_matrix_ulong_isnonneg (const gsl_matrix_ulong * m);
++
++int gsl_matrix_ulong_add (gsl_matrix_ulong * a, const gsl_matrix_ulong * b);
++int gsl_matrix_ulong_sub (gsl_matrix_ulong * a, const gsl_matrix_ulong * b);
++int gsl_matrix_ulong_mul_elements (gsl_matrix_ulong * a, const gsl_matrix_ulong * b);
++int gsl_matrix_ulong_div_elements (gsl_matrix_ulong * a, const gsl_matrix_ulong * b);
++int gsl_matrix_ulong_scale (gsl_matrix_ulong * a, const double x);
++int gsl_matrix_ulong_add_constant (gsl_matrix_ulong * a, const double x);
++int gsl_matrix_ulong_add_diagonal (gsl_matrix_ulong * a, const double x);
++
++/***********************************************************************/
++/* The functions below are obsolete                                    */
++/***********************************************************************/
++int gsl_matrix_ulong_get_row(gsl_vector_ulong * v, const gsl_matrix_ulong * m, const size_t i);
++int gsl_matrix_ulong_get_col(gsl_vector_ulong * v, const gsl_matrix_ulong * m, const size_t j);
++int gsl_matrix_ulong_set_row(gsl_matrix_ulong * m, const size_t i, const gsl_vector_ulong * v);
++int gsl_matrix_ulong_set_col(gsl_matrix_ulong * m, const size_t j, const gsl_vector_ulong * v);
++/***********************************************************************/
++
++/* inline functions if you are using GCC */
++
++INLINE_DECL unsigned long   gsl_matrix_ulong_get(const gsl_matrix_ulong * m, const size_t i, const size_t j);
++INLINE_DECL void    gsl_matrix_ulong_set(gsl_matrix_ulong * m, const size_t i, const size_t j, const unsigned long x);
++INLINE_DECL unsigned long * gsl_matrix_ulong_ptr(gsl_matrix_ulong * m, const size_t i, const size_t j);
++INLINE_DECL const unsigned long * gsl_matrix_ulong_const_ptr(const gsl_matrix_ulong * m, const size_t i, const size_t j);
++
++#ifdef HAVE_INLINE
++INLINE_FUN 
++unsigned long
++gsl_matrix_ulong_get(const gsl_matrix_ulong * m, const size_t i, const size_t j)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(1)) 
++    {
++      if (i >= m->size1)
++        {
++          GSL_ERROR_VAL("first index out of range", GSL_EINVAL, 0) ;
++        }
++      else if (j >= m->size2)
++        {
++          GSL_ERROR_VAL("second index out of range", GSL_EINVAL, 0) ;
++        }
++    }
++#endif
++  return m->data[i * m->tda + j] ;
++} 
++
++INLINE_FUN 
++void
++gsl_matrix_ulong_set(gsl_matrix_ulong * m, const size_t i, const size_t j, const unsigned long x)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(1)) 
++    {
++      if (i >= m->size1)
++        {
++          GSL_ERROR_VOID("first index out of range", GSL_EINVAL) ;
++        }
++      else if (j >= m->size2)
++        {
++          GSL_ERROR_VOID("second index out of range", GSL_EINVAL) ;
++        }
++    }
++#endif
++  m->data[i * m->tda + j] = x ;
++}
++
++INLINE_FUN 
++unsigned long *
++gsl_matrix_ulong_ptr(gsl_matrix_ulong * m, const size_t i, const size_t j)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(1)) 
++    {
++      if (i >= m->size1)
++        {
++          GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
++        }
++      else if (j >= m->size2)
++        {
++          GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
++        }
++    }
++#endif
++  return (unsigned long *) (m->data + (i * m->tda + j)) ;
++} 
++
++INLINE_FUN 
++const unsigned long *
++gsl_matrix_ulong_const_ptr(const gsl_matrix_ulong * m, const size_t i, const size_t j)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(1)) 
++    {
++      if (i >= m->size1)
++        {
++          GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
++        }
++      else if (j >= m->size2)
++        {
++          GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
++        }
++    }
++#endif
++  return (const unsigned long *) (m->data + (i * m->tda + j)) ;
++} 
++
++#endif
++
++__END_DECLS
++
++#endif /* __GSL_MATRIX_ULONG_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_deriv.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_deriv.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_deriv.h	(revision 14078)
+@@ -0,0 +1,50 @@
++/* deriv/gsl_deriv.h
++ * 
++ * Copyright (C) 2000 David Morrison
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_DERIV_H__
++#define __GSL_DERIV_H__
++#include <gsl/gsl_math.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++int gsl_deriv_central (const gsl_function *f,
++                       double x, double h,
++                       double *result, double *abserr);
++
++int gsl_deriv_backward (const gsl_function *f,
++                        double x, double h,
++                        double *result, double *abserr);
++
++int gsl_deriv_forward (const gsl_function *f,
++                       double x, double h,
++                       double *result, double *abserr);
++
++__END_DECLS
++
++#endif /* __GSL_DERIV_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_uchar.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_uchar.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_uchar.h	(revision 14078)
+@@ -0,0 +1,50 @@
++/* sort/gsl_sort_uchar.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_SORT_UCHAR_H__
++#define __GSL_SORT_UCHAR_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_permutation.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++void gsl_sort_uchar (unsigned char * data, const size_t stride, const size_t n);
++void gsl_sort_uchar_index (size_t * p, const unsigned char * data, const size_t stride, const size_t n);
++
++int gsl_sort_uchar_smallest (unsigned char * dest, const size_t k, const unsigned char * src, const size_t stride, const size_t n);
++int gsl_sort_uchar_smallest_index (size_t * p, const size_t k, const unsigned char * src, const size_t stride, const size_t n);
++
++int gsl_sort_uchar_largest (unsigned char * dest, const size_t k, const unsigned char * src, const size_t stride, const size_t n);
++int gsl_sort_uchar_largest_index (size_t * p, const size_t k, const unsigned char * src, const size_t stride, const size_t n);
++
++__END_DECLS
++
++#endif /* __GSL_SORT_UCHAR_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_gamma.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_gamma.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_gamma.h	(revision 14078)
+@@ -0,0 +1,293 @@
++/* specfunc/gsl_sf_gamma.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++/* Author:  G. Jungman */
++
++#ifndef __GSL_SF_GAMMA_H__
++#define __GSL_SF_GAMMA_H__
++
++#include <gsl/gsl_sf_result.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++
++/* Log[Gamma(x)], x not a negative integer
++ * Uses real Lanczos method.
++ * Returns the real part of Log[Gamma[x]] when x < 0,
++ * i.e. Log[|Gamma[x]|].
++ *
++ * exceptions: GSL_EDOM, GSL_EROUND
++ */
++int gsl_sf_lngamma_e(double x, gsl_sf_result * result);
++double gsl_sf_lngamma(const double x);
++
++
++/* Log[Gamma(x)], x not a negative integer
++ * Uses real Lanczos method. Determines
++ * the sign of Gamma[x] as well as Log[|Gamma[x]|] for x < 0.
++ * So Gamma[x] = sgn * Exp[result_lg].
++ *
++ * exceptions: GSL_EDOM, GSL_EROUND
++ */
++int gsl_sf_lngamma_sgn_e(double x, gsl_sf_result * result_lg, double *sgn);
++
++
++/* Gamma(x), x not a negative integer
++ * Uses real Lanczos method.
++ *
++ * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EROUND
++ */
++int gsl_sf_gamma_e(const double x, gsl_sf_result * result);
++double gsl_sf_gamma(const double x);
++
++
++/* Regulated Gamma Function, x > 0
++ * Gamma^*(x) = Gamma(x)/(Sqrt[2Pi] x^(x-1/2) exp(-x))
++ *            = (1 + 1/(12x) + ...),  x->Inf
++ * A useful suggestion of Temme.
++ *
++ * exceptions: GSL_EDOM
++ */
++int gsl_sf_gammastar_e(const double x, gsl_sf_result * result);
++double gsl_sf_gammastar(const double x);
++
++
++/* 1/Gamma(x)
++ * Uses real Lanczos method.
++ *
++ * exceptions: GSL_EUNDRFLW, GSL_EROUND
++ */
++int gsl_sf_gammainv_e(const double x, gsl_sf_result * result);
++double gsl_sf_gammainv(const double x);
++
++
++/* Log[Gamma(z)] for z complex, z not a negative integer
++ * Uses complex Lanczos method. Note that the phase part (arg)
++ * is not well-determined when |z| is very large, due
++ * to inevitable roundoff in restricting to (-Pi,Pi].
++ * This will raise the GSL_ELOSS exception when it occurs.
++ * The absolute value part (lnr), however, never suffers.
++ *
++ * Calculates:
++ *   lnr = log|Gamma(z)|
++ *   arg = arg(Gamma(z))  in (-Pi, Pi]
++ *
++ * exceptions: GSL_EDOM, GSL_ELOSS
++ */
++int gsl_sf_lngamma_complex_e(double zr, double zi, gsl_sf_result * lnr, gsl_sf_result * arg);
++
++
++/* x^n / n!
++ *
++ * x >= 0.0, n >= 0
++ * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW
++ */
++int gsl_sf_taylorcoeff_e(const int n, const double x, gsl_sf_result * result);
++double gsl_sf_taylorcoeff(const int n, const double x);
++
++
++/* n!
++ *
++ * exceptions: GSL_EDOM, GSL_EOVRFLW
++ */
++int gsl_sf_fact_e(const unsigned int n, gsl_sf_result * result);
++double gsl_sf_fact(const unsigned int n);
++
++
++/* n!! = n(n-2)(n-4) ... 
++ *
++ * exceptions: GSL_EDOM, GSL_EOVRFLW
++ */
++int gsl_sf_doublefact_e(const unsigned int n, gsl_sf_result * result);
++double gsl_sf_doublefact(const unsigned int n);
++
++
++/* log(n!) 
++ * Faster than ln(Gamma(n+1)) for n < 170; defers for larger n.
++ *
++ * exceptions: none
++ */
++int gsl_sf_lnfact_e(const unsigned int n, gsl_sf_result * result);
++double gsl_sf_lnfact(const unsigned int n);
++
++
++/* log(n!!) 
++ *
++ * exceptions: none
++ */
++int gsl_sf_lndoublefact_e(const unsigned int n, gsl_sf_result * result);
++double gsl_sf_lndoublefact(const unsigned int n);
++
++
++/* log(n choose m)
++ *
++ * exceptions: GSL_EDOM 
++ */
++int gsl_sf_lnchoose_e(unsigned int n, unsigned int m, gsl_sf_result * result);
++double gsl_sf_lnchoose(unsigned int n, unsigned int m);
++
++
++/* n choose m
++ *
++ * exceptions: GSL_EDOM, GSL_EOVRFLW
++ */
++int gsl_sf_choose_e(unsigned int n, unsigned int m, gsl_sf_result * result);
++double gsl_sf_choose(unsigned int n, unsigned int m);
++
++
++/* Logarithm of Pochhammer (Apell) symbol
++ *   log( (a)_x )
++ *   where (a)_x := Gamma[a + x]/Gamma[a]
++ *
++ * a > 0, a+x > 0
++ *
++ * exceptions:  GSL_EDOM
++ */
++int gsl_sf_lnpoch_e(const double a, const double x, gsl_sf_result * result);
++double gsl_sf_lnpoch(const double a, const double x);
++
++
++/* Logarithm of Pochhammer (Apell) symbol, with sign information.
++ *   result = log( |(a)_x| )
++ *   sgn    = sgn( (a)_x )
++ *   where (a)_x := Gamma[a + x]/Gamma[a]
++ *
++ * a != neg integer, a+x != neg integer
++ *
++ * exceptions:  GSL_EDOM
++ */
++int gsl_sf_lnpoch_sgn_e(const double a, const double x, gsl_sf_result * result, double * sgn);
++
++
++/* Pochhammer (Apell) symbol
++ *   (a)_x := Gamma[a + x]/Gamma[x]
++ *
++ * a != neg integer, a+x != neg integer
++ *
++ * exceptions:  GSL_EDOM, GSL_EOVRFLW
++ */
++int gsl_sf_poch_e(const double a, const double x, gsl_sf_result * result);
++double gsl_sf_poch(const double a, const double x);
++
++
++/* Relative Pochhammer (Apell) symbol
++ *   ((a,x) - 1)/x
++ *   where (a,x) = (a)_x := Gamma[a + x]/Gamma[a]
++ *
++ * exceptions:  GSL_EDOM
++ */
++int gsl_sf_pochrel_e(const double a, const double x, gsl_sf_result * result);
++double gsl_sf_pochrel(const double a, const double x);
++
++
++/* Normalized Incomplete Gamma Function
++ *
++ * Q(a,x) = 1/Gamma(a) Integral[ t^(a-1) e^(-t), {t,x,Infinity} ]
++ *
++ * a >= 0, x >= 0
++ *   Q(a,0) := 1
++ *   Q(0,x) := 0, x != 0
++ *
++ * exceptions: GSL_EDOM
++ */
++int gsl_sf_gamma_inc_Q_e(const double a, const double x, gsl_sf_result * result);
++double gsl_sf_gamma_inc_Q(const double a, const double x);
++
++
++/* Complementary Normalized Incomplete Gamma Function
++ *
++ * P(a,x) = 1/Gamma(a) Integral[ t^(a-1) e^(-t), {t,0,x} ]
++ *
++ * a > 0, x >= 0
++ *
++ * exceptions: GSL_EDOM
++ */
++int gsl_sf_gamma_inc_P_e(const double a, const double x, gsl_sf_result * result);
++double gsl_sf_gamma_inc_P(const double a, const double x);
++
++
++/* Non-normalized Incomplete Gamma Function
++ *
++ * Gamma(a,x) := Integral[ t^(a-1) e^(-t), {t,x,Infinity} ]
++ *
++ * x >= 0.0
++ *   Gamma(a, 0) := Gamma(a)
++ *
++ * exceptions: GSL_EDOM
++ */
++int gsl_sf_gamma_inc_e(const double a, const double x, gsl_sf_result * result);
++double gsl_sf_gamma_inc(const double a, const double x);
++
++
++/* Logarithm of Beta Function
++ * Log[B(a,b)]
++ *
++ * a > 0, b > 0
++ * exceptions: GSL_EDOM
++ */
++int gsl_sf_lnbeta_e(const double a, const double b, gsl_sf_result * result);
++double gsl_sf_lnbeta(const double a, const double b);
++
++int gsl_sf_lnbeta_sgn_e(const double x, const double y, gsl_sf_result * result, double * sgn);
++
++
++/* Beta Function
++ * B(a,b)
++ *
++ * a > 0, b > 0
++ * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW
++ */
++int gsl_sf_beta_e(const double a, const double b, gsl_sf_result * result);
++double gsl_sf_beta(const double a, const double b);
++
++
++/* Normalized Incomplete Beta Function
++ * B_x(a,b)/B(a,b)
++ *
++ * a > 0, b > 0, 0 <= x <= 1
++ * exceptions: GSL_EDOM, GSL_EUNDRFLW
++ */
++int gsl_sf_beta_inc_e(const double a, const double b, const double x, gsl_sf_result * result);
++double gsl_sf_beta_inc(const double a, const double b, const double x);
++
++
++/* The maximum x such that gamma(x) is not
++ * considered an overflow.
++ */
++#define GSL_SF_GAMMA_XMAX  171.0
++
++/* The maximum n such that gsl_sf_fact(n) does not give an overflow. */
++#define GSL_SF_FACT_NMAX 170
++
++/* The maximum n such that gsl_sf_doublefact(n) does not give an overflow. */
++#define GSL_SF_DOUBLEFACT_NMAX 297
++
++__END_DECLS
++
++#endif /* __GSL_SF_GAMMA_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_long_double.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_long_double.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_long_double.h	(revision 14078)
+@@ -0,0 +1,230 @@
++/* vector/gsl_vector_long_double.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_VECTOR_LONG_DOUBLE_H__
++#define __GSL_VECTOR_LONG_DOUBLE_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_types.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_inline.h>
++#include <gsl/gsl_check_range.h>
++#include <gsl/gsl_block_long_double.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++typedef struct 
++{
++  size_t size;
++  size_t stride;
++  long double *data;
++  gsl_block_long_double *block;
++  int owner;
++} 
++gsl_vector_long_double;
++
++typedef struct
++{
++  gsl_vector_long_double vector;
++} _gsl_vector_long_double_view;
++
++typedef _gsl_vector_long_double_view gsl_vector_long_double_view;
++
++typedef struct
++{
++  gsl_vector_long_double vector;
++} _gsl_vector_long_double_const_view;
++
++typedef const _gsl_vector_long_double_const_view gsl_vector_long_double_const_view;
++
++
++/* Allocation */
++
++gsl_vector_long_double *gsl_vector_long_double_alloc (const size_t n);
++gsl_vector_long_double *gsl_vector_long_double_calloc (const size_t n);
++
++gsl_vector_long_double *gsl_vector_long_double_alloc_from_block (gsl_block_long_double * b,
++                                                     const size_t offset, 
++                                                     const size_t n, 
++                                                     const size_t stride);
++
++gsl_vector_long_double *gsl_vector_long_double_alloc_from_vector (gsl_vector_long_double * v,
++                                                      const size_t offset, 
++                                                      const size_t n, 
++                                                      const size_t stride);
++
++void gsl_vector_long_double_free (gsl_vector_long_double * v);
++
++/* Views */
++
++_gsl_vector_long_double_view 
++gsl_vector_long_double_view_array (long double *v, size_t n);
++
++_gsl_vector_long_double_view 
++gsl_vector_long_double_view_array_with_stride (long double *base,
++                                         size_t stride,
++                                         size_t n);
++
++_gsl_vector_long_double_const_view 
++gsl_vector_long_double_const_view_array (const long double *v, size_t n);
++
++_gsl_vector_long_double_const_view 
++gsl_vector_long_double_const_view_array_with_stride (const long double *base,
++                                               size_t stride,
++                                               size_t n);
++
++_gsl_vector_long_double_view 
++gsl_vector_long_double_subvector (gsl_vector_long_double *v, 
++                            size_t i, 
++                            size_t n);
++
++_gsl_vector_long_double_view 
++gsl_vector_long_double_subvector_with_stride (gsl_vector_long_double *v, 
++                                        size_t i,
++                                        size_t stride,
++                                        size_t n);
++
++_gsl_vector_long_double_const_view 
++gsl_vector_long_double_const_subvector (const gsl_vector_long_double *v, 
++                                  size_t i, 
++                                  size_t n);
++
++_gsl_vector_long_double_const_view 
++gsl_vector_long_double_const_subvector_with_stride (const gsl_vector_long_double *v, 
++                                              size_t i, 
++                                              size_t stride,
++                                              size_t n);
++
++/* Operations */
++
++void gsl_vector_long_double_set_zero (gsl_vector_long_double * v);
++void gsl_vector_long_double_set_all (gsl_vector_long_double * v, long double x);
++int gsl_vector_long_double_set_basis (gsl_vector_long_double * v, size_t i);
++
++int gsl_vector_long_double_fread (FILE * stream, gsl_vector_long_double * v);
++int gsl_vector_long_double_fwrite (FILE * stream, const gsl_vector_long_double * v);
++int gsl_vector_long_double_fscanf (FILE * stream, gsl_vector_long_double * v);
++int gsl_vector_long_double_fprintf (FILE * stream, const gsl_vector_long_double * v,
++                              const char *format);
++
++int gsl_vector_long_double_memcpy (gsl_vector_long_double * dest, const gsl_vector_long_double * src);
++
++int gsl_vector_long_double_reverse (gsl_vector_long_double * v);
++
++int gsl_vector_long_double_swap (gsl_vector_long_double * v, gsl_vector_long_double * w);
++int gsl_vector_long_double_swap_elements (gsl_vector_long_double * v, const size_t i, const size_t j);
++
++long double gsl_vector_long_double_max (const gsl_vector_long_double * v);
++long double gsl_vector_long_double_min (const gsl_vector_long_double * v);
++void gsl_vector_long_double_minmax (const gsl_vector_long_double * v, long double * min_out, long double * max_out);
++
++size_t gsl_vector_long_double_max_index (const gsl_vector_long_double * v);
++size_t gsl_vector_long_double_min_index (const gsl_vector_long_double * v);
++void gsl_vector_long_double_minmax_index (const gsl_vector_long_double * v, size_t * imin, size_t * imax);
++
++int gsl_vector_long_double_add (gsl_vector_long_double * a, const gsl_vector_long_double * b);
++int gsl_vector_long_double_sub (gsl_vector_long_double * a, const gsl_vector_long_double * b);
++int gsl_vector_long_double_mul (gsl_vector_long_double * a, const gsl_vector_long_double * b);
++int gsl_vector_long_double_div (gsl_vector_long_double * a, const gsl_vector_long_double * b);
++int gsl_vector_long_double_scale (gsl_vector_long_double * a, const double x);
++int gsl_vector_long_double_add_constant (gsl_vector_long_double * a, const double x);
++
++int gsl_vector_long_double_equal (const gsl_vector_long_double * u, 
++                            const gsl_vector_long_double * v);
++
++int gsl_vector_long_double_isnull (const gsl_vector_long_double * v);
++int gsl_vector_long_double_ispos (const gsl_vector_long_double * v);
++int gsl_vector_long_double_isneg (const gsl_vector_long_double * v);
++int gsl_vector_long_double_isnonneg (const gsl_vector_long_double * v);
++
++INLINE_DECL long double gsl_vector_long_double_get (const gsl_vector_long_double * v, const size_t i);
++INLINE_DECL void gsl_vector_long_double_set (gsl_vector_long_double * v, const size_t i, long double x);
++INLINE_DECL long double * gsl_vector_long_double_ptr (gsl_vector_long_double * v, const size_t i);
++INLINE_DECL const long double * gsl_vector_long_double_const_ptr (const gsl_vector_long_double * v, const size_t i);
++
++#ifdef HAVE_INLINE
++
++INLINE_FUN
++long double
++gsl_vector_long_double_get (const gsl_vector_long_double * v, const size_t i)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(i >= v->size))
++    {
++      GSL_ERROR_VAL ("index out of range", GSL_EINVAL, 0);
++    }
++#endif
++  return v->data[i * v->stride];
++}
++
++INLINE_FUN
++void
++gsl_vector_long_double_set (gsl_vector_long_double * v, const size_t i, long double x)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(i >= v->size))
++    {
++      GSL_ERROR_VOID ("index out of range", GSL_EINVAL);
++    }
++#endif
++  v->data[i * v->stride] = x;
++}
++
++INLINE_FUN
++long double *
++gsl_vector_long_double_ptr (gsl_vector_long_double * v, const size_t i)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(i >= v->size))
++    {
++      GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
++    }
++#endif
++  return (long double *) (v->data + i * v->stride);
++}
++
++INLINE_FUN
++const long double *
++gsl_vector_long_double_const_ptr (const gsl_vector_long_double * v, const size_t i)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(i >= v->size))
++    {
++      GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
++    }
++#endif
++  return (const long double *) (v->data + i * v->stride);
++}
++#endif /* HAVE_INLINE */
++
++__END_DECLS
++
++#endif /* __GSL_VECTOR_LONG_DOUBLE_H__ */
++
++
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_double.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_double.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_double.h	(revision 14078)
+@@ -0,0 +1,44 @@
++/* permutation/gsl_permute_double.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_PERMUTE_DOUBLE_H__
++#define __GSL_PERMUTE_DOUBLE_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_permutation.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++int gsl_permute (const size_t * p, double * data, const size_t stride, const size_t n);
++int gsl_permute_inverse (const size_t * p, double * data, const size_t stride, const size_t n);
++
++__END_DECLS
++
++#endif /* __GSL_PERMUTE_DOUBLE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_long_double.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_long_double.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_long_double.h	(revision 14078)
+@@ -0,0 +1,350 @@
++/* matrix/gsl_matrix_long_double.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_MATRIX_LONG_DOUBLE_H__
++#define __GSL_MATRIX_LONG_DOUBLE_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_types.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_inline.h>
++#include <gsl/gsl_check_range.h>
++#include <gsl/gsl_vector_long_double.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++typedef struct 
++{
++  size_t size1;
++  size_t size2;
++  size_t tda;
++  long double * data;
++  gsl_block_long_double * block;
++  int owner;
++} gsl_matrix_long_double;
++
++typedef struct
++{
++  gsl_matrix_long_double matrix;
++} _gsl_matrix_long_double_view;
++
++typedef _gsl_matrix_long_double_view gsl_matrix_long_double_view;
++
++typedef struct
++{
++  gsl_matrix_long_double matrix;
++} _gsl_matrix_long_double_const_view;
++
++typedef const _gsl_matrix_long_double_const_view gsl_matrix_long_double_const_view;
++
++/* Allocation */
++
++gsl_matrix_long_double * 
++gsl_matrix_long_double_alloc (const size_t n1, const size_t n2);
++
++gsl_matrix_long_double * 
++gsl_matrix_long_double_calloc (const size_t n1, const size_t n2);
++
++gsl_matrix_long_double * 
++gsl_matrix_long_double_alloc_from_block (gsl_block_long_double * b, 
++                                   const size_t offset, 
++                                   const size_t n1, 
++                                   const size_t n2, 
++                                   const size_t d2);
++
++gsl_matrix_long_double * 
++gsl_matrix_long_double_alloc_from_matrix (gsl_matrix_long_double * m,
++                                    const size_t k1, 
++                                    const size_t k2,
++                                    const size_t n1, 
++                                    const size_t n2);
++
++gsl_vector_long_double * 
++gsl_vector_long_double_alloc_row_from_matrix (gsl_matrix_long_double * m,
++                                        const size_t i);
++
++gsl_vector_long_double * 
++gsl_vector_long_double_alloc_col_from_matrix (gsl_matrix_long_double * m,
++                                        const size_t j);
++
++void gsl_matrix_long_double_free (gsl_matrix_long_double * m);
++
++/* Views */
++
++_gsl_matrix_long_double_view 
++gsl_matrix_long_double_submatrix (gsl_matrix_long_double * m, 
++                            const size_t i, const size_t j, 
++                            const size_t n1, const size_t n2);
++
++_gsl_vector_long_double_view 
++gsl_matrix_long_double_row (gsl_matrix_long_double * m, const size_t i);
++
++_gsl_vector_long_double_view 
++gsl_matrix_long_double_column (gsl_matrix_long_double * m, const size_t j);
++
++_gsl_vector_long_double_view 
++gsl_matrix_long_double_diagonal (gsl_matrix_long_double * m);
++
++_gsl_vector_long_double_view 
++gsl_matrix_long_double_subdiagonal (gsl_matrix_long_double * m, const size_t k);
++
++_gsl_vector_long_double_view 
++gsl_matrix_long_double_superdiagonal (gsl_matrix_long_double * m, const size_t k);
++
++_gsl_vector_long_double_view
++gsl_matrix_long_double_subrow (gsl_matrix_long_double * m, const size_t i,
++                         const size_t offset, const size_t n);
++
++_gsl_vector_long_double_view
++gsl_matrix_long_double_subcolumn (gsl_matrix_long_double * m, const size_t j,
++                            const size_t offset, const size_t n);
++
++_gsl_matrix_long_double_view
++gsl_matrix_long_double_view_array (long double * base,
++                             const size_t n1, 
++                             const size_t n2);
++
++_gsl_matrix_long_double_view
++gsl_matrix_long_double_view_array_with_tda (long double * base, 
++                                      const size_t n1, 
++                                      const size_t n2,
++                                      const size_t tda);
++
++
++_gsl_matrix_long_double_view
++gsl_matrix_long_double_view_vector (gsl_vector_long_double * v,
++                              const size_t n1, 
++                              const size_t n2);
++
++_gsl_matrix_long_double_view
++gsl_matrix_long_double_view_vector_with_tda (gsl_vector_long_double * v,
++                                       const size_t n1, 
++                                       const size_t n2,
++                                       const size_t tda);
++
++
++_gsl_matrix_long_double_const_view 
++gsl_matrix_long_double_const_submatrix (const gsl_matrix_long_double * m, 
++                                  const size_t i, const size_t j, 
++                                  const size_t n1, const size_t n2);
++
++_gsl_vector_long_double_const_view 
++gsl_matrix_long_double_const_row (const gsl_matrix_long_double * m, 
++                            const size_t i);
++
++_gsl_vector_long_double_const_view 
++gsl_matrix_long_double_const_column (const gsl_matrix_long_double * m, 
++                               const size_t j);
++
++_gsl_vector_long_double_const_view
++gsl_matrix_long_double_const_diagonal (const gsl_matrix_long_double * m);
++
++_gsl_vector_long_double_const_view 
++gsl_matrix_long_double_const_subdiagonal (const gsl_matrix_long_double * m, 
++                                    const size_t k);
++
++_gsl_vector_long_double_const_view 
++gsl_matrix_long_double_const_superdiagonal (const gsl_matrix_long_double * m, 
++                                      const size_t k);
++
++_gsl_vector_long_double_const_view
++gsl_matrix_long_double_const_subrow (const gsl_matrix_long_double * m, const size_t i,
++                               const size_t offset, const size_t n);
++
++_gsl_vector_long_double_const_view
++gsl_matrix_long_double_const_subcolumn (const gsl_matrix_long_double * m, const size_t j,
++                                  const size_t offset, const size_t n);
++
++_gsl_matrix_long_double_const_view
++gsl_matrix_long_double_const_view_array (const long double * base,
++                                   const size_t n1, 
++                                   const size_t n2);
++
++_gsl_matrix_long_double_const_view
++gsl_matrix_long_double_const_view_array_with_tda (const long double * base, 
++                                            const size_t n1, 
++                                            const size_t n2,
++                                            const size_t tda);
++
++_gsl_matrix_long_double_const_view
++gsl_matrix_long_double_const_view_vector (const gsl_vector_long_double * v,
++                                    const size_t n1, 
++                                    const size_t n2);
++
++_gsl_matrix_long_double_const_view
++gsl_matrix_long_double_const_view_vector_with_tda (const gsl_vector_long_double * v,
++                                             const size_t n1, 
++                                             const size_t n2,
++                                             const size_t tda);
++
++/* Operations */
++
++void gsl_matrix_long_double_set_zero (gsl_matrix_long_double * m);
++void gsl_matrix_long_double_set_identity (gsl_matrix_long_double * m);
++void gsl_matrix_long_double_set_all (gsl_matrix_long_double * m, long double x);
++
++int gsl_matrix_long_double_fread (FILE * stream, gsl_matrix_long_double * m) ;
++int gsl_matrix_long_double_fwrite (FILE * stream, const gsl_matrix_long_double * m) ;
++int gsl_matrix_long_double_fscanf (FILE * stream, gsl_matrix_long_double * m);
++int gsl_matrix_long_double_fprintf (FILE * stream, const gsl_matrix_long_double * m, const char * format);
++ 
++int gsl_matrix_long_double_memcpy(gsl_matrix_long_double * dest, const gsl_matrix_long_double * src);
++int gsl_matrix_long_double_swap(gsl_matrix_long_double * m1, gsl_matrix_long_double * m2);
++
++int gsl_matrix_long_double_swap_rows(gsl_matrix_long_double * m, const size_t i, const size_t j);
++int gsl_matrix_long_double_swap_columns(gsl_matrix_long_double * m, const size_t i, const size_t j);
++int gsl_matrix_long_double_swap_rowcol(gsl_matrix_long_double * m, const size_t i, const size_t j);
++int gsl_matrix_long_double_transpose (gsl_matrix_long_double * m);
++int gsl_matrix_long_double_transpose_memcpy (gsl_matrix_long_double * dest, const gsl_matrix_long_double * src);
++
++long double gsl_matrix_long_double_max (const gsl_matrix_long_double * m);
++long double gsl_matrix_long_double_min (const gsl_matrix_long_double * m);
++void gsl_matrix_long_double_minmax (const gsl_matrix_long_double * m, long double * min_out, long double * max_out);
++
++void gsl_matrix_long_double_max_index (const gsl_matrix_long_double * m, size_t * imax, size_t *jmax);
++void gsl_matrix_long_double_min_index (const gsl_matrix_long_double * m, size_t * imin, size_t *jmin);
++void gsl_matrix_long_double_minmax_index (const gsl_matrix_long_double * m, size_t * imin, size_t * jmin, size_t * imax, size_t * jmax);
++
++int gsl_matrix_long_double_equal (const gsl_matrix_long_double * a, const gsl_matrix_long_double * b);
++
++int gsl_matrix_long_double_isnull (const gsl_matrix_long_double * m);
++int gsl_matrix_long_double_ispos (const gsl_matrix_long_double * m);
++int gsl_matrix_long_double_isneg (const gsl_matrix_long_double * m);
++int gsl_matrix_long_double_isnonneg (const gsl_matrix_long_double * m);
++
++int gsl_matrix_long_double_add (gsl_matrix_long_double * a, const gsl_matrix_long_double * b);
++int gsl_matrix_long_double_sub (gsl_matrix_long_double * a, const gsl_matrix_long_double * b);
++int gsl_matrix_long_double_mul_elements (gsl_matrix_long_double * a, const gsl_matrix_long_double * b);
++int gsl_matrix_long_double_div_elements (gsl_matrix_long_double * a, const gsl_matrix_long_double * b);
++int gsl_matrix_long_double_scale (gsl_matrix_long_double * a, const double x);
++int gsl_matrix_long_double_add_constant (gsl_matrix_long_double * a, const double x);
++int gsl_matrix_long_double_add_diagonal (gsl_matrix_long_double * a, const double x);
++
++/***********************************************************************/
++/* The functions below are obsolete                                    */
++/***********************************************************************/
++int gsl_matrix_long_double_get_row(gsl_vector_long_double * v, const gsl_matrix_long_double * m, const size_t i);
++int gsl_matrix_long_double_get_col(gsl_vector_long_double * v, const gsl_matrix_long_double * m, const size_t j);
++int gsl_matrix_long_double_set_row(gsl_matrix_long_double * m, const size_t i, const gsl_vector_long_double * v);
++int gsl_matrix_long_double_set_col(gsl_matrix_long_double * m, const size_t j, const gsl_vector_long_double * v);
++/***********************************************************************/
++
++/* inline functions if you are using GCC */
++
++INLINE_DECL long double   gsl_matrix_long_double_get(const gsl_matrix_long_double * m, const size_t i, const size_t j);
++INLINE_DECL void    gsl_matrix_long_double_set(gsl_matrix_long_double * m, const size_t i, const size_t j, const long double x);
++INLINE_DECL long double * gsl_matrix_long_double_ptr(gsl_matrix_long_double * m, const size_t i, const size_t j);
++INLINE_DECL const long double * gsl_matrix_long_double_const_ptr(const gsl_matrix_long_double * m, const size_t i, const size_t j);
++
++#ifdef HAVE_INLINE
++INLINE_FUN 
++long double
++gsl_matrix_long_double_get(const gsl_matrix_long_double * m, const size_t i, const size_t j)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(1)) 
++    {
++      if (i >= m->size1)
++        {
++          GSL_ERROR_VAL("first index out of range", GSL_EINVAL, 0) ;
++        }
++      else if (j >= m->size2)
++        {
++          GSL_ERROR_VAL("second index out of range", GSL_EINVAL, 0) ;
++        }
++    }
++#endif
++  return m->data[i * m->tda + j] ;
++} 
++
++INLINE_FUN 
++void
++gsl_matrix_long_double_set(gsl_matrix_long_double * m, const size_t i, const size_t j, const long double x)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(1)) 
++    {
++      if (i >= m->size1)
++        {
++          GSL_ERROR_VOID("first index out of range", GSL_EINVAL) ;
++        }
++      else if (j >= m->size2)
++        {
++          GSL_ERROR_VOID("second index out of range", GSL_EINVAL) ;
++        }
++    }
++#endif
++  m->data[i * m->tda + j] = x ;
++}
++
++INLINE_FUN 
++long double *
++gsl_matrix_long_double_ptr(gsl_matrix_long_double * m, const size_t i, const size_t j)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(1)) 
++    {
++      if (i >= m->size1)
++        {
++          GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
++        }
++      else if (j >= m->size2)
++        {
++          GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
++        }
++    }
++#endif
++  return (long double *) (m->data + (i * m->tda + j)) ;
++} 
++
++INLINE_FUN 
++const long double *
++gsl_matrix_long_double_const_ptr(const gsl_matrix_long_double * m, const size_t i, const size_t j)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(1)) 
++    {
++      if (i >= m->size1)
++        {
++          GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
++        }
++      else if (j >= m->size2)
++        {
++          GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
++        }
++    }
++#endif
++  return (const long double *) (m->data + (i * m->tda + j)) ;
++} 
++
++#endif
++
++__END_DECLS
++
++#endif /* __GSL_MATRIX_LONG_DOUBLE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_float.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_float.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_float.h	(revision 14078)
+@@ -0,0 +1,99 @@
++/* statistics/gsl_statistics_float.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_STATISTICS_FLOAT_H__
++#define __GSL_STATISTICS_FLOAT_H__
++
++#include <stddef.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++double gsl_stats_float_mean (const float data[], const size_t stride, const size_t n);
++double gsl_stats_float_variance (const float data[], const size_t stride, const size_t n);
++double gsl_stats_float_sd (const float data[], const size_t stride, const size_t n);
++double gsl_stats_float_variance_with_fixed_mean (const float data[], const size_t stride, const size_t n, const double mean);
++double gsl_stats_float_sd_with_fixed_mean (const float data[], const size_t stride, const size_t n, const double mean);
++double gsl_stats_float_tss (const float data[], const size_t stride, const size_t n);
++double gsl_stats_float_tss_m (const float data[], const size_t stride, const size_t n, const double mean);
++
++double gsl_stats_float_absdev (const float data[], const size_t stride, const size_t n);
++double gsl_stats_float_skew (const float data[], const size_t stride, const size_t n);
++double gsl_stats_float_kurtosis (const float data[], const size_t stride, const size_t n);
++double gsl_stats_float_lag1_autocorrelation (const float data[], const size_t stride, const size_t n);
++
++double gsl_stats_float_covariance (const float data1[], const size_t stride1,const float data2[], const size_t stride2, const size_t n);
++double gsl_stats_float_correlation (const float data1[], const size_t stride1,const float data2[], const size_t stride2, const size_t n);
++
++double gsl_stats_float_variance_m (const float data[], const size_t stride, const size_t n, const double mean);
++double gsl_stats_float_sd_m (const float data[], const size_t stride, const size_t n, const double mean);
++double gsl_stats_float_absdev_m (const float data[], const size_t stride, const size_t n, const double mean);
++double gsl_stats_float_skew_m_sd (const float data[], const size_t stride, const size_t n, const double mean, const double sd);
++double gsl_stats_float_kurtosis_m_sd (const float data[], const size_t stride, const size_t n, const double mean, const double sd);
++double gsl_stats_float_lag1_autocorrelation_m (const float data[], const size_t stride, const size_t n, const double mean);
++
++double gsl_stats_float_covariance_m (const float data1[], const size_t stride1,const float data2[], const size_t stride2, const size_t n, const double mean1, const double mean2);
++
++/* DEFINED FOR FLOATING POINT TYPES ONLY */
++
++double gsl_stats_float_wmean (const float w[], const size_t wstride, const float data[], const size_t stride, const size_t n);
++double gsl_stats_float_wvariance (const float w[], const size_t wstride, const float data[], const size_t stride, const size_t n);
++double gsl_stats_float_wsd (const float w[], const size_t wstride, const float data[], const size_t stride, const size_t n);
++double gsl_stats_float_wvariance_with_fixed_mean (const float w[], const size_t wstride, const float data[], const size_t stride, const size_t n, const double mean);
++double gsl_stats_float_wsd_with_fixed_mean (const float w[], const size_t wstride, const float data[], const size_t stride, const size_t n, const double mean);
++double gsl_stats_float_wtss (const float w[], const size_t wstride, const float data[], const size_t stride, const size_t n);
++double gsl_stats_float_wtss_m (const float w[], const size_t wstride, const float data[], const size_t stride, const size_t n, const double wmean);
++double gsl_stats_float_wabsdev (const float w[], const size_t wstride, const float data[], const size_t stride, const size_t n);
++double gsl_stats_float_wskew (const float w[], const size_t wstride, const float data[], const size_t stride, const size_t n);
++double gsl_stats_float_wkurtosis (const float w[], const size_t wstride, const float data[], const size_t stride, const size_t n);
++
++double gsl_stats_float_wvariance_m (const float w[], const size_t wstride, const float data[], const size_t stride, const size_t n, const double wmean);
++double gsl_stats_float_wsd_m (const float w[], const size_t wstride, const float data[], const size_t stride, const size_t n, const double wmean);
++double gsl_stats_float_wabsdev_m (const float w[], const size_t wstride, const float data[], const size_t stride, const size_t n, const double wmean);
++double gsl_stats_float_wskew_m_sd (const float w[], const size_t wstride, const float data[], const size_t stride, const size_t n, const double wmean, const double wsd);
++double gsl_stats_float_wkurtosis_m_sd (const float w[], const size_t wstride, const float data[], const size_t stride, const size_t n, const double wmean, const double wsd);
++
++/* END OF FLOATING POINT TYPES */
++
++double gsl_stats_float_pvariance (const float data1[], const size_t stride1, const size_t n1, const float data2[], const size_t stride2, const size_t n2);
++double gsl_stats_float_ttest (const float data1[], const size_t stride1, const size_t n1, const float data2[], const size_t stride2, const size_t n2);
++
++float gsl_stats_float_max (const float data[], const size_t stride, const size_t n);
++float gsl_stats_float_min (const float data[], const size_t stride, const size_t n);
++void gsl_stats_float_minmax (float * min, float * max, const float data[], const size_t stride, const size_t n);
++
++size_t gsl_stats_float_max_index (const float data[], const size_t stride, const size_t n);
++size_t gsl_stats_float_min_index (const float data[], const size_t stride, const size_t n);
++void gsl_stats_float_minmax_index (size_t * min_index, size_t * max_index, const float data[], const size_t stride, const size_t n);
++
++double gsl_stats_float_median_from_sorted_data (const float sorted_data[], const size_t stride, const size_t n) ;
++double gsl_stats_float_quantile_from_sorted_data (const float sorted_data[], const size_t stride, const size_t n, const double f) ;
++
++__END_DECLS
++
++#endif /* __GSL_STATISTICS_FLOAT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_uint.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_uint.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_uint.h	(revision 14078)
+@@ -0,0 +1,44 @@
++/* permutation/gsl_permute_uint.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_PERMUTE_UINT_H__
++#define __GSL_PERMUTE_UINT_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_permutation.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++int gsl_permute_uint (const size_t * p, unsigned int * data, const size_t stride, const size_t n);
++int gsl_permute_uint_inverse (const size_t * p, unsigned int * data, const size_t stride, const size_t n);
++
++__END_DECLS
++
++#endif /* __GSL_PERMUTE_UINT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_double.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_double.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_double.h	(revision 14078)
+@@ -0,0 +1,50 @@
++/* sort/gsl_sort_double.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_SORT_DOUBLE_H__
++#define __GSL_SORT_DOUBLE_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_permutation.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++void gsl_sort (double * data, const size_t stride, const size_t n);
++void gsl_sort_index (size_t * p, const double * data, const size_t stride, const size_t n);
++
++int gsl_sort_smallest (double * dest, const size_t k, const double * src, const size_t stride, const size_t n);
++int gsl_sort_smallest_index (size_t * p, const size_t k, const double * src, const size_t stride, const size_t n);
++
++int gsl_sort_largest (double * dest, const size_t k, const double * src, const size_t stride, const size_t n);
++int gsl_sort_largest_index (size_t * p, const size_t k, const double * src, const size_t stride, const size_t n);
++
++__END_DECLS
++
++#endif /* __GSL_SORT_DOUBLE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_double.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_double.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_double.h	(revision 14078)
+@@ -0,0 +1,99 @@
++/* statistics/gsl_statistics_double.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_STATISTICS_DOUBLE_H__
++#define __GSL_STATISTICS_DOUBLE_H__
++
++#include <stddef.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++double gsl_stats_mean (const double data[], const size_t stride, const size_t n);
++double gsl_stats_variance (const double data[], const size_t stride, const size_t n);
++double gsl_stats_sd (const double data[], const size_t stride, const size_t n);
++double gsl_stats_variance_with_fixed_mean (const double data[], const size_t stride, const size_t n, const double mean);
++double gsl_stats_sd_with_fixed_mean (const double data[], const size_t stride, const size_t n, const double mean);
++double gsl_stats_tss (const double data[], const size_t stride, const size_t n);
++double gsl_stats_tss_m (const double data[], const size_t stride, const size_t n, const double mean);
++
++double gsl_stats_absdev (const double data[], const size_t stride, const size_t n);
++double gsl_stats_skew (const double data[], const size_t stride, const size_t n);
++double gsl_stats_kurtosis (const double data[], const size_t stride, const size_t n);
++double gsl_stats_lag1_autocorrelation (const double data[], const size_t stride, const size_t n);
++
++double gsl_stats_covariance (const double data1[], const size_t stride1,const double data2[], const size_t stride2, const size_t n);
++double gsl_stats_correlation (const double data1[], const size_t stride1,const double data2[], const size_t stride2, const size_t n);
++
++double gsl_stats_variance_m (const double data[], const size_t stride, const size_t n, const double mean);
++double gsl_stats_sd_m (const double data[], const size_t stride, const size_t n, const double mean);
++double gsl_stats_absdev_m (const double data[], const size_t stride, const size_t n, const double mean);
++double gsl_stats_skew_m_sd (const double data[], const size_t stride, const size_t n, const double mean, const double sd);
++double gsl_stats_kurtosis_m_sd (const double data[], const size_t stride, const size_t n, const double mean, const double sd);
++double gsl_stats_lag1_autocorrelation_m (const double data[], const size_t stride, const size_t n, const double mean);
++
++double gsl_stats_covariance_m (const double data1[], const size_t stride1,const double data2[], const size_t stride2, const size_t n, const double mean1, const double mean2);
++
++/* DEFINED FOR FLOATING POINT TYPES ONLY */
++
++double gsl_stats_wmean (const double w[], const size_t wstride, const double data[], const size_t stride, const size_t n);
++double gsl_stats_wvariance (const double w[], const size_t wstride, const double data[], const size_t stride, const size_t n);
++double gsl_stats_wsd (const double w[], const size_t wstride, const double data[], const size_t stride, const size_t n);
++double gsl_stats_wvariance_with_fixed_mean (const double w[], const size_t wstride, const double data[], const size_t stride, const size_t n, const double mean);
++double gsl_stats_wsd_with_fixed_mean (const double w[], const size_t wstride, const double data[], const size_t stride, const size_t n, const double mean);
++double gsl_stats_wtss (const double w[], const size_t wstride, const double data[], const size_t stride, const size_t n);
++double gsl_stats_wtss_m (const double w[], const size_t wstride, const double data[], const size_t stride, const size_t n, const double wmean);
++double gsl_stats_wabsdev (const double w[], const size_t wstride, const double data[], const size_t stride, const size_t n);
++double gsl_stats_wskew (const double w[], const size_t wstride, const double data[], const size_t stride, const size_t n);
++double gsl_stats_wkurtosis (const double w[], const size_t wstride, const double data[], const size_t stride, const size_t n);
++
++double gsl_stats_wvariance_m (const double w[], const size_t wstride, const double data[], const size_t stride, const size_t n, const double wmean);
++double gsl_stats_wsd_m (const double w[], const size_t wstride, const double data[], const size_t stride, const size_t n, const double wmean);
++double gsl_stats_wabsdev_m (const double w[], const size_t wstride, const double data[], const size_t stride, const size_t n, const double wmean);
++double gsl_stats_wskew_m_sd (const double w[], const size_t wstride, const double data[], const size_t stride, const size_t n, const double wmean, const double wsd);
++double gsl_stats_wkurtosis_m_sd (const double w[], const size_t wstride, const double data[], const size_t stride, const size_t n, const double wmean, const double wsd);
++
++/* END OF FLOATING POINT TYPES */
++
++double gsl_stats_pvariance (const double data1[], const size_t stride1, const size_t n1, const double data2[], const size_t stride2, const size_t n2);
++double gsl_stats_ttest (const double data1[], const size_t stride1, const size_t n1, const double data2[], const size_t stride2, const size_t n2);
++
++double gsl_stats_max (const double data[], const size_t stride, const size_t n);
++double gsl_stats_min (const double data[], const size_t stride, const size_t n);
++void gsl_stats_minmax (double * min, double * max, const double data[], const size_t stride, const size_t n);
++
++size_t gsl_stats_max_index (const double data[], const size_t stride, const size_t n);
++size_t gsl_stats_min_index (const double data[], const size_t stride, const size_t n);
++void gsl_stats_minmax_index (size_t * min_index, size_t * max_index, const double data[], const size_t stride, const size_t n);
++
++double gsl_stats_median_from_sorted_data (const double sorted_data[], const size_t stride, const size_t n) ;
++double gsl_stats_quantile_from_sorted_data (const double sorted_data[], const size_t stride, const size_t n, const double f) ;
++
++__END_DECLS
++
++#endif /* __GSL_STATISTICS_DOUBLE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_exp.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_exp.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_exp.h	(revision 14078)
+@@ -0,0 +1,134 @@
++/* specfunc/gsl_sf_exp.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004 Gerard Jungman
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++/* Author:  G. Jungman */
++
++#ifndef __GSL_SF_EXP_H__
++#define __GSL_SF_EXP_H__
++
++#include <gsl/gsl_sf_result.h>
++#include <gsl/gsl_precision.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++/* Provide an exp() function with GSL semantics,
++ * i.e. with proper error checking, etc.
++ *
++ * exceptions: GSL_EOVRFLW, GSL_EUNDRFLW
++ */
++int gsl_sf_exp_e(const double x, gsl_sf_result * result);
++double gsl_sf_exp(const double x);
++
++
++/* Exp(x)
++ *
++ * exceptions: GSL_EOVRFLW, GSL_EUNDRFLW
++ */
++int gsl_sf_exp_e10_e(const double x, gsl_sf_result_e10 * result);
++
++
++/* Exponentiate and multiply by a given factor:  y * Exp(x)
++ *
++ * exceptions: GSL_EOVRFLW, GSL_EUNDRFLW
++ */
++int gsl_sf_exp_mult_e(const double x, const double y, gsl_sf_result * result);
++double gsl_sf_exp_mult(const double x, const double y);
++
++
++/* Exponentiate and multiply by a given factor:  y * Exp(x)
++ *
++ * exceptions: GSL_EOVRFLW, GSL_EUNDRFLW
++ */
++int gsl_sf_exp_mult_e10_e(const double x, const double y, gsl_sf_result_e10 * result);
++
++
++/* exp(x)-1
++ *
++ * exceptions: GSL_EOVRFLW
++ */
++int gsl_sf_expm1_e(const double x, gsl_sf_result * result);
++double gsl_sf_expm1(const double x);
++
++
++/* (exp(x)-1)/x = 1 + x/2 + x^2/(2*3) + x^3/(2*3*4) + ...
++ *
++ * exceptions: GSL_EOVRFLW
++ */
++int gsl_sf_exprel_e(const double x, gsl_sf_result * result);
++double gsl_sf_exprel(const double x);
++
++
++/* 2(exp(x)-1-x)/x^2 = 1 + x/3 + x^2/(3*4) + x^3/(3*4*5) + ...
++ *
++ * exceptions: GSL_EOVRFLW
++ */
++int gsl_sf_exprel_2_e(double x, gsl_sf_result * result);
++double gsl_sf_exprel_2(const double x);
++
++
++/* Similarly for the N-th generalization of
++ * the above. The so-called N-relative exponential
++ *
++ * exprel_N(x) = N!/x^N (exp(x) - Sum[x^k/k!, {k,0,N-1}])
++ *             = 1 + x/(N+1) + x^2/((N+1)(N+2)) + ...
++ *             = 1F1(1,1+N,x)
++ */
++int gsl_sf_exprel_n_e(const int n, const double x, gsl_sf_result * result);
++double gsl_sf_exprel_n(const int n, const double x);
++
++int gsl_sf_exprel_n_CF_e(const double n, const double x, gsl_sf_result * result);
++
++
++/* Exponentiate a quantity with an associated error.
++ */
++int gsl_sf_exp_err_e(const double x, const double dx, gsl_sf_result * result);
++
++/* Exponentiate a quantity with an associated error.
++ */
++int gsl_sf_exp_err_e10_e(const double x, const double dx, gsl_sf_result_e10 * result);
++
++
++/* Exponentiate and multiply by a given factor:  y * Exp(x),
++ * for quantities with associated errors.
++ *
++ * exceptions: GSL_EOVRFLW, GSL_EUNDRFLW
++ */
++int gsl_sf_exp_mult_err_e(const double x, const double dx, const double y, const double dy, gsl_sf_result * result);
++
++
++/* Exponentiate and multiply by a given factor:  y * Exp(x),
++ * for quantities with associated errors.
++ *
++ * exceptions: GSL_EOVRFLW, GSL_EUNDRFLW
++ */
++int gsl_sf_exp_mult_err_e10_e(const double x, const double dx, const double y, const double dy, gsl_sf_result_e10 * result);
++
++__END_DECLS
++
++#endif /* __GSL_SF_EXP_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_errno.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_errno.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_errno.h	(revision 14078)
+@@ -0,0 +1,154 @@
++/* err/gsl_errno.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_ERRNO_H__
++#define __GSL_ERRNO_H__
++
++#include <stdio.h>
++#include <errno.h>
++#include <gsl/gsl_types.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++enum { 
++  GSL_SUCCESS  = 0, 
++  GSL_FAILURE  = -1,
++  GSL_CONTINUE = -2,  /* iteration has not converged */
++  GSL_EDOM     = 1,   /* input domain error, e.g sqrt(-1) */
++  GSL_ERANGE   = 2,   /* output range error, e.g. exp(1e100) */
++  GSL_EFAULT   = 3,   /* invalid pointer */
++  GSL_EINVAL   = 4,   /* invalid argument supplied by user */
++  GSL_EFAILED  = 5,   /* generic failure */
++  GSL_EFACTOR  = 6,   /* factorization failed */
++  GSL_ESANITY  = 7,   /* sanity check failed - shouldn't happen */
++  GSL_ENOMEM   = 8,   /* malloc failed */
++  GSL_EBADFUNC = 9,   /* problem with user-supplied function */
++  GSL_ERUNAWAY = 10,  /* iterative process is out of control */
++  GSL_EMAXITER = 11,  /* exceeded max number of iterations */
++  GSL_EZERODIV = 12,  /* tried to divide by zero */
++  GSL_EBADTOL  = 13,  /* user specified an invalid tolerance */
++  GSL_ETOL     = 14,  /* failed to reach the specified tolerance */
++  GSL_EUNDRFLW = 15,  /* underflow */
++  GSL_EOVRFLW  = 16,  /* overflow  */
++  GSL_ELOSS    = 17,  /* loss of accuracy */
++  GSL_EROUND   = 18,  /* failed because of roundoff error */
++  GSL_EBADLEN  = 19,  /* matrix, vector lengths are not conformant */
++  GSL_ENOTSQR  = 20,  /* matrix not square */
++  GSL_ESING    = 21,  /* apparent singularity detected */
++  GSL_EDIVERGE = 22,  /* integral or series is divergent */
++  GSL_EUNSUP   = 23,  /* requested feature is not supported by the hardware */
++  GSL_EUNIMPL  = 24,  /* requested feature not (yet) implemented */
++  GSL_ECACHE   = 25,  /* cache limit exceeded */
++  GSL_ETABLE   = 26,  /* table limit exceeded */
++  GSL_ENOPROG  = 27,  /* iteration is not making progress towards solution */
++  GSL_ENOPROGJ = 28,  /* jacobian evaluations are not improving the solution */
++  GSL_ETOLF    = 29,  /* cannot reach the specified tolerance in F */
++  GSL_ETOLX    = 30,  /* cannot reach the specified tolerance in X */
++  GSL_ETOLG    = 31,  /* cannot reach the specified tolerance in gradient */
++  GSL_EOF      = 32   /* end of file */
++} ;
++
++void gsl_error (const char * reason, const char * file, int line,
++                int gsl_errno);
++
++void gsl_stream_printf (const char *label, const char *file,
++                        int line, const char *reason);
++
++const char * gsl_strerror (const int gsl_errno);
++
++typedef void gsl_error_handler_t (const char * reason, const char * file,
++                                  int line, int gsl_errno);
++
++typedef void gsl_stream_handler_t (const char * label, const char * file,
++                                   int line, const char * reason);
++
++gsl_error_handler_t * 
++gsl_set_error_handler (gsl_error_handler_t * new_handler);
++
++gsl_error_handler_t *
++gsl_set_error_handler_off (void);
++
++gsl_stream_handler_t * 
++gsl_set_stream_handler (gsl_stream_handler_t * new_handler);
++
++FILE * gsl_set_stream (FILE * new_stream);
++
++/* GSL_ERROR: call the error handler, and return the error code */
++
++#define GSL_ERROR(reason, gsl_errno) \
++       do { \
++       gsl_error (reason, __FILE__, __LINE__, gsl_errno) ; \
++       return gsl_errno ; \
++       } while (0)
++
++/* GSL_ERROR_VAL: call the error handler, and return the given value */
++
++#define GSL_ERROR_VAL(reason, gsl_errno, value) \
++       do { \
++       gsl_error (reason, __FILE__, __LINE__, gsl_errno) ; \
++       return value ; \
++       } while (0)
++
++/* GSL_ERROR_VOID: call the error handler, and then return
++   (for void functions which still need to generate an error) */
++
++#define GSL_ERROR_VOID(reason, gsl_errno) \
++       do { \
++       gsl_error (reason, __FILE__, __LINE__, gsl_errno) ; \
++       return ; \
++       } while (0)
++
++/* GSL_ERROR_NULL suitable for out-of-memory conditions */
++
++#define GSL_ERROR_NULL(reason, gsl_errno) GSL_ERROR_VAL(reason, gsl_errno, 0)
++
++/* Sometimes you have several status results returned from
++ * function calls and you want to combine them in some sensible
++ * way. You cannot produce a "total" status condition, but you can
++ * pick one from a set of conditions based on an implied hierarchy.
++ *
++ * In other words:
++ *    you have: status_a, status_b, ...
++ *    you want: status = (status_a if it is bad, or status_b if it is bad,...)
++ *
++ * In this example you consider status_a to be more important and
++ * it is checked first, followed by the others in the order specified.
++ *
++ * Here are some dumb macros to do this.
++ */
++#define GSL_ERROR_SELECT_2(a,b)       ((a) != GSL_SUCCESS ? (a) : ((b) != GSL_SUCCESS ? (b) : GSL_SUCCESS))
++#define GSL_ERROR_SELECT_3(a,b,c)     ((a) != GSL_SUCCESS ? (a) : GSL_ERROR_SELECT_2(b,c))
++#define GSL_ERROR_SELECT_4(a,b,c,d)   ((a) != GSL_SUCCESS ? (a) : GSL_ERROR_SELECT_3(b,c,d))
++#define GSL_ERROR_SELECT_5(a,b,c,d,e) ((a) != GSL_SUCCESS ? (a) : GSL_ERROR_SELECT_4(b,c,d,e))
++
++#define GSL_STATUS_UPDATE(sp, s) do { if ((s) != GSL_SUCCESS) *(sp) = (s);} while(0)
++
++__END_DECLS
++
++#endif /* __GSL_ERRNO_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_ulong.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_ulong.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_ulong.h	(revision 14078)
+@@ -0,0 +1,44 @@
++/* permutation/gsl_permute_ulong.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_PERMUTE_ULONG_H__
++#define __GSL_PERMUTE_ULONG_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_permutation.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++int gsl_permute_ulong (const size_t * p, unsigned long * data, const size_t stride, const size_t n);
++int gsl_permute_ulong_inverse (const size_t * p, unsigned long * data, const size_t stride, const size_t n);
++
++__END_DECLS
++
++#endif /* __GSL_PERMUTE_ULONG_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_complex.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_complex.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_complex.h	(revision 14078)
+@@ -0,0 +1,17 @@
++#ifndef __GSL_VECTOR_COMPLEX_H__
++#define __GSL_VECTOR_COMPLEX_H__
++
++#define  GSL_VECTOR_REAL(z, i)  ((z)->data[2*(i)*(z)->stride])
++#define  GSL_VECTOR_IMAG(z, i)  ((z)->data[2*(i)*(z)->stride + 1])
++
++#if GSL_RANGE_CHECK
++#define GSL_VECTOR_COMPLEX(zv, i) (((i) >= (zv)->size ? (gsl_error ("index out of range", __FILE__, __LINE__, GSL_EINVAL), 0):0 , *GSL_COMPLEX_AT((zv),(i))))
++#else
++#define GSL_VECTOR_COMPLEX(zv, i) (*GSL_COMPLEX_AT((zv),(i)))
++#endif
++
++#define GSL_COMPLEX_AT(zv,i) ((gsl_complex*)&((zv)->data[2*(i)*(zv)->stride]))
++#define GSL_COMPLEX_FLOAT_AT(zv,i) ((gsl_complex_float*)&((zv)->data[2*(i)*(zv)->stride]))
++#define GSL_COMPLEX_LONG_DOUBLE_AT(zv,i) ((gsl_complex_long_double*)&((zv)->data[2*(i)*(zv)->stride]))
++
++#endif /* __GSL_VECTOR_COMPLEX_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_float.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_float.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_float.h	(revision 14078)
+@@ -0,0 +1,350 @@
++/* matrix/gsl_matrix_float.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_MATRIX_FLOAT_H__
++#define __GSL_MATRIX_FLOAT_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_types.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_inline.h>
++#include <gsl/gsl_check_range.h>
++#include <gsl/gsl_vector_float.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++typedef struct 
++{
++  size_t size1;
++  size_t size2;
++  size_t tda;
++  float * data;
++  gsl_block_float * block;
++  int owner;
++} gsl_matrix_float;
++
++typedef struct
++{
++  gsl_matrix_float matrix;
++} _gsl_matrix_float_view;
++
++typedef _gsl_matrix_float_view gsl_matrix_float_view;
++
++typedef struct
++{
++  gsl_matrix_float matrix;
++} _gsl_matrix_float_const_view;
++
++typedef const _gsl_matrix_float_const_view gsl_matrix_float_const_view;
++
++/* Allocation */
++
++gsl_matrix_float * 
++gsl_matrix_float_alloc (const size_t n1, const size_t n2);
++
++gsl_matrix_float * 
++gsl_matrix_float_calloc (const size_t n1, const size_t n2);
++
++gsl_matrix_float * 
++gsl_matrix_float_alloc_from_block (gsl_block_float * b, 
++                                   const size_t offset, 
++                                   const size_t n1, 
++                                   const size_t n2, 
++                                   const size_t d2);
++
++gsl_matrix_float * 
++gsl_matrix_float_alloc_from_matrix (gsl_matrix_float * m,
++                                    const size_t k1, 
++                                    const size_t k2,
++                                    const size_t n1, 
++                                    const size_t n2);
++
++gsl_vector_float * 
++gsl_vector_float_alloc_row_from_matrix (gsl_matrix_float * m,
++                                        const size_t i);
++
++gsl_vector_float * 
++gsl_vector_float_alloc_col_from_matrix (gsl_matrix_float * m,
++                                        const size_t j);
++
++void gsl_matrix_float_free (gsl_matrix_float * m);
++
++/* Views */
++
++_gsl_matrix_float_view 
++gsl_matrix_float_submatrix (gsl_matrix_float * m, 
++                            const size_t i, const size_t j, 
++                            const size_t n1, const size_t n2);
++
++_gsl_vector_float_view 
++gsl_matrix_float_row (gsl_matrix_float * m, const size_t i);
++
++_gsl_vector_float_view 
++gsl_matrix_float_column (gsl_matrix_float * m, const size_t j);
++
++_gsl_vector_float_view 
++gsl_matrix_float_diagonal (gsl_matrix_float * m);
++
++_gsl_vector_float_view 
++gsl_matrix_float_subdiagonal (gsl_matrix_float * m, const size_t k);
++
++_gsl_vector_float_view 
++gsl_matrix_float_superdiagonal (gsl_matrix_float * m, const size_t k);
++
++_gsl_vector_float_view
++gsl_matrix_float_subrow (gsl_matrix_float * m, const size_t i,
++                         const size_t offset, const size_t n);
++
++_gsl_vector_float_view
++gsl_matrix_float_subcolumn (gsl_matrix_float * m, const size_t j,
++                            const size_t offset, const size_t n);
++
++_gsl_matrix_float_view
++gsl_matrix_float_view_array (float * base,
++                             const size_t n1, 
++                             const size_t n2);
++
++_gsl_matrix_float_view
++gsl_matrix_float_view_array_with_tda (float * base, 
++                                      const size_t n1, 
++                                      const size_t n2,
++                                      const size_t tda);
++
++
++_gsl_matrix_float_view
++gsl_matrix_float_view_vector (gsl_vector_float * v,
++                              const size_t n1, 
++                              const size_t n2);
++
++_gsl_matrix_float_view
++gsl_matrix_float_view_vector_with_tda (gsl_vector_float * v,
++                                       const size_t n1, 
++                                       const size_t n2,
++                                       const size_t tda);
++
++
++_gsl_matrix_float_const_view 
++gsl_matrix_float_const_submatrix (const gsl_matrix_float * m, 
++                                  const size_t i, const size_t j, 
++                                  const size_t n1, const size_t n2);
++
++_gsl_vector_float_const_view 
++gsl_matrix_float_const_row (const gsl_matrix_float * m, 
++                            const size_t i);
++
++_gsl_vector_float_const_view 
++gsl_matrix_float_const_column (const gsl_matrix_float * m, 
++                               const size_t j);
++
++_gsl_vector_float_const_view
++gsl_matrix_float_const_diagonal (const gsl_matrix_float * m);
++
++_gsl_vector_float_const_view 
++gsl_matrix_float_const_subdiagonal (const gsl_matrix_float * m, 
++                                    const size_t k);
++
++_gsl_vector_float_const_view 
++gsl_matrix_float_const_superdiagonal (const gsl_matrix_float * m, 
++                                      const size_t k);
++
++_gsl_vector_float_const_view
++gsl_matrix_float_const_subrow (const gsl_matrix_float * m, const size_t i,
++                               const size_t offset, const size_t n);
++
++_gsl_vector_float_const_view
++gsl_matrix_float_const_subcolumn (const gsl_matrix_float * m, const size_t j,
++                                  const size_t offset, const size_t n);
++
++_gsl_matrix_float_const_view
++gsl_matrix_float_const_view_array (const float * base,
++                                   const size_t n1, 
++                                   const size_t n2);
++
++_gsl_matrix_float_const_view
++gsl_matrix_float_const_view_array_with_tda (const float * base, 
++                                            const size_t n1, 
++                                            const size_t n2,
++                                            const size_t tda);
++
++_gsl_matrix_float_const_view
++gsl_matrix_float_const_view_vector (const gsl_vector_float * v,
++                                    const size_t n1, 
++                                    const size_t n2);
++
++_gsl_matrix_float_const_view
++gsl_matrix_float_const_view_vector_with_tda (const gsl_vector_float * v,
++                                             const size_t n1, 
++                                             const size_t n2,
++                                             const size_t tda);
++
++/* Operations */
++
++void gsl_matrix_float_set_zero (gsl_matrix_float * m);
++void gsl_matrix_float_set_identity (gsl_matrix_float * m);
++void gsl_matrix_float_set_all (gsl_matrix_float * m, float x);
++
++int gsl_matrix_float_fread (FILE * stream, gsl_matrix_float * m) ;
++int gsl_matrix_float_fwrite (FILE * stream, const gsl_matrix_float * m) ;
++int gsl_matrix_float_fscanf (FILE * stream, gsl_matrix_float * m);
++int gsl_matrix_float_fprintf (FILE * stream, const gsl_matrix_float * m, const char * format);
++ 
++int gsl_matrix_float_memcpy(gsl_matrix_float * dest, const gsl_matrix_float * src);
++int gsl_matrix_float_swap(gsl_matrix_float * m1, gsl_matrix_float * m2);
++
++int gsl_matrix_float_swap_rows(gsl_matrix_float * m, const size_t i, const size_t j);
++int gsl_matrix_float_swap_columns(gsl_matrix_float * m, const size_t i, const size_t j);
++int gsl_matrix_float_swap_rowcol(gsl_matrix_float * m, const size_t i, const size_t j);
++int gsl_matrix_float_transpose (gsl_matrix_float * m);
++int gsl_matrix_float_transpose_memcpy (gsl_matrix_float * dest, const gsl_matrix_float * src);
++
++float gsl_matrix_float_max (const gsl_matrix_float * m);
++float gsl_matrix_float_min (const gsl_matrix_float * m);
++void gsl_matrix_float_minmax (const gsl_matrix_float * m, float * min_out, float * max_out);
++
++void gsl_matrix_float_max_index (const gsl_matrix_float * m, size_t * imax, size_t *jmax);
++void gsl_matrix_float_min_index (const gsl_matrix_float * m, size_t * imin, size_t *jmin);
++void gsl_matrix_float_minmax_index (const gsl_matrix_float * m, size_t * imin, size_t * jmin, size_t * imax, size_t * jmax);
++
++int gsl_matrix_float_equal (const gsl_matrix_float * a, const gsl_matrix_float * b);
++
++int gsl_matrix_float_isnull (const gsl_matrix_float * m);
++int gsl_matrix_float_ispos (const gsl_matrix_float * m);
++int gsl_matrix_float_isneg (const gsl_matrix_float * m);
++int gsl_matrix_float_isnonneg (const gsl_matrix_float * m);
++
++int gsl_matrix_float_add (gsl_matrix_float * a, const gsl_matrix_float * b);
++int gsl_matrix_float_sub (gsl_matrix_float * a, const gsl_matrix_float * b);
++int gsl_matrix_float_mul_elements (gsl_matrix_float * a, const gsl_matrix_float * b);
++int gsl_matrix_float_div_elements (gsl_matrix_float * a, const gsl_matrix_float * b);
++int gsl_matrix_float_scale (gsl_matrix_float * a, const double x);
++int gsl_matrix_float_add_constant (gsl_matrix_float * a, const double x);
++int gsl_matrix_float_add_diagonal (gsl_matrix_float * a, const double x);
++
++/***********************************************************************/
++/* The functions below are obsolete                                    */
++/***********************************************************************/
++int gsl_matrix_float_get_row(gsl_vector_float * v, const gsl_matrix_float * m, const size_t i);
++int gsl_matrix_float_get_col(gsl_vector_float * v, const gsl_matrix_float * m, const size_t j);
++int gsl_matrix_float_set_row(gsl_matrix_float * m, const size_t i, const gsl_vector_float * v);
++int gsl_matrix_float_set_col(gsl_matrix_float * m, const size_t j, const gsl_vector_float * v);
++/***********************************************************************/
++
++/* inline functions if you are using GCC */
++
++INLINE_DECL float   gsl_matrix_float_get(const gsl_matrix_float * m, const size_t i, const size_t j);
++INLINE_DECL void    gsl_matrix_float_set(gsl_matrix_float * m, const size_t i, const size_t j, const float x);
++INLINE_DECL float * gsl_matrix_float_ptr(gsl_matrix_float * m, const size_t i, const size_t j);
++INLINE_DECL const float * gsl_matrix_float_const_ptr(const gsl_matrix_float * m, const size_t i, const size_t j);
++
++#ifdef HAVE_INLINE
++INLINE_FUN 
++float
++gsl_matrix_float_get(const gsl_matrix_float * m, const size_t i, const size_t j)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(1)) 
++    {
++      if (i >= m->size1)
++        {
++          GSL_ERROR_VAL("first index out of range", GSL_EINVAL, 0) ;
++        }
++      else if (j >= m->size2)
++        {
++          GSL_ERROR_VAL("second index out of range", GSL_EINVAL, 0) ;
++        }
++    }
++#endif
++  return m->data[i * m->tda + j] ;
++} 
++
++INLINE_FUN 
++void
++gsl_matrix_float_set(gsl_matrix_float * m, const size_t i, const size_t j, const float x)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(1)) 
++    {
++      if (i >= m->size1)
++        {
++          GSL_ERROR_VOID("first index out of range", GSL_EINVAL) ;
++        }
++      else if (j >= m->size2)
++        {
++          GSL_ERROR_VOID("second index out of range", GSL_EINVAL) ;
++        }
++    }
++#endif
++  m->data[i * m->tda + j] = x ;
++}
++
++INLINE_FUN 
++float *
++gsl_matrix_float_ptr(gsl_matrix_float * m, const size_t i, const size_t j)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(1)) 
++    {
++      if (i >= m->size1)
++        {
++          GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
++        }
++      else if (j >= m->size2)
++        {
++          GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
++        }
++    }
++#endif
++  return (float *) (m->data + (i * m->tda + j)) ;
++} 
++
++INLINE_FUN 
++const float *
++gsl_matrix_float_const_ptr(const gsl_matrix_float * m, const size_t i, const size_t j)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(1)) 
++    {
++      if (i >= m->size1)
++        {
++          GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
++        }
++      else if (j >= m->size2)
++        {
++          GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
++        }
++    }
++#endif
++  return (const float *) (m->data + (i * m->tda + j)) ;
++} 
++
++#endif
++
++__END_DECLS
++
++#endif /* __GSL_MATRIX_FLOAT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_math.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_math.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_math.h	(revision 14078)
+@@ -0,0 +1,164 @@
++/* gsl_math.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004, 2007 Gerard Jungman, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_MATH_H__
++#define __GSL_MATH_H__
++#include <math.h>
++#include <gsl/gsl_sys.h>
++#include <gsl/gsl_inline.h>
++#include <gsl/gsl_machine.h>
++#include <gsl/gsl_precision.h>
++#include <gsl/gsl_nan.h>
++#include <gsl/gsl_pow_int.h>
++#include <gsl/gsl_minmax.h>
++
++#ifndef M_E
++#define M_E        2.71828182845904523536028747135      /* e */
++#endif
++
++#ifndef M_LOG2E
++#define M_LOG2E    1.44269504088896340735992468100      /* log_2 (e) */
++#endif
++
++#ifndef M_LOG10E
++#define M_LOG10E   0.43429448190325182765112891892      /* log_10 (e) */
++#endif
++
++#ifndef M_SQRT2
++#define M_SQRT2    1.41421356237309504880168872421      /* sqrt(2) */
++#endif
++
++#ifndef M_SQRT1_2
++#define M_SQRT1_2  0.70710678118654752440084436210      /* sqrt(1/2) */
++#endif
++
++
++#ifndef M_SQRT3
++#define M_SQRT3    1.73205080756887729352744634151      /* sqrt(3) */
++#endif
++
++#ifndef M_PI
++#define M_PI       3.14159265358979323846264338328      /* pi */
++#endif
++
++#ifndef M_PI_2
++#define M_PI_2     1.57079632679489661923132169164      /* pi/2 */
++#endif
++
++#ifndef M_PI_4
++#define M_PI_4     0.78539816339744830961566084582     /* pi/4 */
++#endif
++
++#ifndef M_SQRTPI
++#define M_SQRTPI   1.77245385090551602729816748334      /* sqrt(pi) */
++#endif
++
++#ifndef M_2_SQRTPI
++#define M_2_SQRTPI 1.12837916709551257389615890312      /* 2/sqrt(pi) */
++#endif
++
++#ifndef M_1_PI
++#define M_1_PI     0.31830988618379067153776752675      /* 1/pi */
++#endif
++
++#ifndef M_2_PI
++#define M_2_PI     0.63661977236758134307553505349      /* 2/pi */
++#endif
++
++#ifndef M_LN10
++#define M_LN10     2.30258509299404568401799145468      /* ln(10) */
++#endif
++
++#ifndef M_LN2
++#define M_LN2      0.69314718055994530941723212146      /* ln(2) */
++#endif
++
++#ifndef M_LNPI
++#define M_LNPI     1.14472988584940017414342735135      /* ln(pi) */
++#endif
++
++#ifndef M_EULER
++#define M_EULER    0.57721566490153286060651209008      /* Euler constant */
++#endif
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++/* other needlessly compulsive abstractions */
++
++#define GSL_IS_ODD(n)  ((n) & 1)
++#define GSL_IS_EVEN(n) (!(GSL_IS_ODD(n)))
++#define GSL_SIGN(x)    ((x) >= 0.0 ? 1 : -1)
++
++/* Return nonzero if x is a real number, i.e. non NaN or infinite. */
++#define GSL_IS_REAL(x) (gsl_finite(x))
++
++/* Definition of an arbitrary function with parameters */
++
++struct gsl_function_struct 
++{
++  double (* function) (double x, void * params);
++  void * params;
++};
++
++typedef struct gsl_function_struct gsl_function ;
++
++#define GSL_FN_EVAL(F,x) (*((F)->function))(x,(F)->params)
++
++/* Definition of an arbitrary function returning two values, r1, r2 */
++
++struct gsl_function_fdf_struct 
++{
++  double (* f) (double x, void * params);
++  double (* df) (double x, void * params);
++  void (* fdf) (double x, void * params, double * f, double * df);
++  void * params;
++};
++
++typedef struct gsl_function_fdf_struct gsl_function_fdf ;
++
++#define GSL_FN_FDF_EVAL_F(FDF,x) (*((FDF)->f))(x,(FDF)->params)
++#define GSL_FN_FDF_EVAL_DF(FDF,x) (*((FDF)->df))(x,(FDF)->params)
++#define GSL_FN_FDF_EVAL_F_DF(FDF,x,y,dy) (*((FDF)->fdf))(x,(FDF)->params,(y),(dy))
++
++
++/* Definition of an arbitrary vector-valued function with parameters */
++
++struct gsl_function_vec_struct 
++{
++  int (* function) (double x, double y[], void * params);
++  void * params;
++};
++
++typedef struct gsl_function_vec_struct gsl_function_vec ;
++
++#define GSL_FN_VEC_EVAL(F,x,y) (*((F)->function))(x,y,(F)->params)
++
++__END_DECLS
++
++#endif /* __GSL_MATH_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_dft_complex_float.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_dft_complex_float.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_dft_complex_float.h	(revision 14078)
+@@ -0,0 +1,55 @@
++/* fft/gsl_dft_complex_float.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_DFT_COMPLEX_FLOAT_H__
++#define __GSL_DFT_COMPLEX_FLOAT_H__
++
++#include <stddef.h>
++
++#include <gsl/gsl_math.h>
++#include <gsl/gsl_complex.h>
++#include <gsl/gsl_fft.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++int gsl_dft_complex_float_forward (const float data[], const size_t stride, const size_t n,
++                             float result[]);
++
++int gsl_dft_complex_float_backward (const float data[], const size_t stride, const size_t n,
++                              float result[]);
++
++int gsl_dft_complex_float_inverse (const float data[], const size_t stride, const size_t n,
++                             float result[]);
++
++int gsl_dft_complex_float_transform (const float data[], const size_t stride, const size_t n,
++                     float result[], const gsl_fft_direction sign);
++
++__END_DECLS
++
++#endif /* __GSL_DFT_COMPLEX_FLOAT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_zeta.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_zeta.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_zeta.h	(revision 14078)
+@@ -0,0 +1,112 @@
++/* specfunc/gsl_sf_zeta.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004 Gerard Jungman
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++/* Author:  G. Jungman */
++
++#ifndef __GSL_SF_ZETA_H__
++#define __GSL_SF_ZETA_H__
++
++#include <gsl/gsl_sf_result.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++
++/* Riemann Zeta Function
++ * zeta(n) = Sum[ k^(-n), {k,1,Infinity} ]
++ *
++ * n=integer, n != 1
++ * exceptions: GSL_EDOM, GSL_EOVRFLW
++ */
++int gsl_sf_zeta_int_e(const int n, gsl_sf_result * result);
++double gsl_sf_zeta_int(const int n);
++
++
++/* Riemann Zeta Function
++ * zeta(x) = Sum[ k^(-s), {k,1,Infinity} ], s != 1.0
++ *
++ * s != 1.0
++ * exceptions: GSL_EDOM, GSL_EOVRFLW
++ */
++int gsl_sf_zeta_e(const double s, gsl_sf_result * result);
++double gsl_sf_zeta(const double s);
++
++
++/* Riemann Zeta Function minus 1
++ *   useful for evaluating the fractional part
++ *   of Riemann zeta for large argument
++ *
++ * s != 1.0
++ * exceptions: GSL_EDOM, GSL_EOVRFLW
++ */
++int gsl_sf_zetam1_e(const double s, gsl_sf_result * result);
++double gsl_sf_zetam1(const double s);
++
++
++/* Riemann Zeta Function minus 1 for integer arg
++ *   useful for evaluating the fractional part
++ *   of Riemann zeta for large argument
++ *
++ * s != 1.0
++ * exceptions: GSL_EDOM, GSL_EOVRFLW
++ */
++int gsl_sf_zetam1_int_e(const int s, gsl_sf_result * result);
++double gsl_sf_zetam1_int(const int s);
++
++
++/* Hurwitz Zeta Function
++ * zeta(s,q) = Sum[ (k+q)^(-s), {k,0,Infinity} ]
++ *
++ * s > 1.0, q > 0.0
++ * exceptions: GSL_EDOM, GSL_EUNDRFLW, GSL_EOVRFLW
++ */
++int gsl_sf_hzeta_e(const double s, const double q, gsl_sf_result * result);
++double gsl_sf_hzeta(const double s, const double q);
++
++
++/* Eta Function
++ * eta(n) = (1-2^(1-n)) zeta(n)
++ *
++ * exceptions: GSL_EUNDRFLW, GSL_EOVRFLW
++ */
++int gsl_sf_eta_int_e(int n, gsl_sf_result * result);
++double gsl_sf_eta_int(const int n);
++
++
++/* Eta Function
++ * eta(s) = (1-2^(1-s)) zeta(s)
++ *
++ * exceptions: GSL_EUNDRFLW, GSL_EOVRFLW
++ */
++int gsl_sf_eta_e(const double s, gsl_sf_result * result);
++double gsl_sf_eta(const double s);
++
++
++__END_DECLS
++
++#endif /* __GSL_SF_ZETA_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_wavelet2d.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_wavelet2d.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_wavelet2d.h	(revision 14078)
+@@ -0,0 +1,107 @@
++/* wavelet/gsl_wavelet.h
++ * 
++ * Copyright (C) 2004 Ivo Alxneit
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_WAVELET2D_H__
++#define __GSL_WAVELET2D_H__
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_vector_double.h>
++#include <gsl/gsl_matrix_double.h>
++#include <gsl/gsl_wavelet.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS          /* empty */
++# define __END_DECLS            /* empty */
++#endif
++
++__BEGIN_DECLS
++
++int gsl_wavelet2d_transform (const gsl_wavelet * w, 
++                             double *data, 
++                             size_t tda, size_t size1, size_t size2,
++                             gsl_wavelet_direction dir, 
++                             gsl_wavelet_workspace * work);
++
++int gsl_wavelet2d_transform_forward (const gsl_wavelet * w, 
++                                     double *data,
++                                     size_t tda, size_t size1, size_t size2, 
++                                     gsl_wavelet_workspace * work);
++
++int gsl_wavelet2d_transform_inverse (const gsl_wavelet * w, 
++                                     double *data, 
++                                     size_t tda, size_t size1, size_t size2, 
++                                     gsl_wavelet_workspace * work);
++
++int gsl_wavelet2d_nstransform (const gsl_wavelet * w, 
++                               double *data, 
++                               size_t tda, size_t size1, size_t size2, 
++                               gsl_wavelet_direction dir,
++                               gsl_wavelet_workspace * work);
++
++int gsl_wavelet2d_nstransform_forward (const gsl_wavelet * w, 
++                                       double *data, 
++                                       size_t tda, size_t size1, size_t size2,
++                                       gsl_wavelet_workspace * work);
++
++int gsl_wavelet2d_nstransform_inverse (const gsl_wavelet * w, 
++                                       double *data, 
++                                       size_t tda, size_t size1, size_t size2, 
++                                       gsl_wavelet_workspace * work);
++
++int
++gsl_wavelet2d_transform_matrix (const gsl_wavelet * w, 
++                                gsl_matrix * a, 
++                                gsl_wavelet_direction dir, 
++                                gsl_wavelet_workspace * work);
++
++int
++gsl_wavelet2d_transform_matrix_forward (const gsl_wavelet * w, 
++                                        gsl_matrix * a, 
++                                        gsl_wavelet_workspace * work);
++
++int
++gsl_wavelet2d_transform_matrix_inverse (const gsl_wavelet * w, 
++                                        gsl_matrix * a, 
++                                        gsl_wavelet_workspace * work);
++
++
++int
++gsl_wavelet2d_nstransform_matrix (const gsl_wavelet * w, 
++                                  gsl_matrix * a, 
++                                  gsl_wavelet_direction dir, 
++                                  gsl_wavelet_workspace * work);
++
++int
++gsl_wavelet2d_nstransform_matrix_forward (const gsl_wavelet * w, 
++                                          gsl_matrix * a, 
++                                          gsl_wavelet_workspace * work);
++
++int
++gsl_wavelet2d_nstransform_matrix_inverse (const gsl_wavelet * w, 
++                                          gsl_matrix * a, 
++                                          gsl_wavelet_workspace * work);
++
++__END_DECLS
++
++#endif /* __GSL_WAVELET2D_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_histogram.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_histogram.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_histogram.h	(revision 14078)
+@@ -0,0 +1,134 @@
++/* histogram/gsl_histogram.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_HISTOGRAM_H__
++#define __GSL_HISTOGRAM_H__
++
++#include <stdlib.h>
++#include <stdio.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++typedef struct {
++  size_t n ;
++  double * range ;
++  double * bin ;
++} gsl_histogram ;
++
++typedef struct {
++  size_t n ;
++  double * range ;
++  double * sum ;
++} gsl_histogram_pdf ;
++
++gsl_histogram * gsl_histogram_alloc (size_t n);
++
++gsl_histogram * gsl_histogram_calloc (size_t n);
++gsl_histogram * gsl_histogram_calloc_uniform (const size_t n, const double xmin, const double xmax);
++void gsl_histogram_free (gsl_histogram * h);
++int gsl_histogram_increment (gsl_histogram * h, double x);
++int gsl_histogram_accumulate (gsl_histogram * h, double x, double weight);
++int gsl_histogram_find (const gsl_histogram * h, 
++                        const double x, size_t * i);
++
++double gsl_histogram_get (const gsl_histogram * h, size_t i);
++int gsl_histogram_get_range (const gsl_histogram * h, size_t i, 
++                             double * lower, double * upper);
++                                     
++double gsl_histogram_max (const gsl_histogram * h);
++double gsl_histogram_min (const gsl_histogram * h);
++size_t gsl_histogram_bins (const gsl_histogram * h);
++
++void gsl_histogram_reset (gsl_histogram * h);
++
++gsl_histogram * gsl_histogram_calloc_range(size_t n, double * range);
++
++int 
++gsl_histogram_set_ranges (gsl_histogram * h, const double range[], size_t size);
++int 
++gsl_histogram_set_ranges_uniform (gsl_histogram * h, double xmin, double xmax);
++
++
++
++int
++gsl_histogram_memcpy(gsl_histogram * dest, const gsl_histogram * source);
++
++gsl_histogram *
++gsl_histogram_clone(const gsl_histogram * source);
++
++double gsl_histogram_max_val (const gsl_histogram * h);
++
++size_t gsl_histogram_max_bin (const gsl_histogram * h);
++
++double gsl_histogram_min_val (const gsl_histogram * h);
++
++size_t gsl_histogram_min_bin (const gsl_histogram * h);
++
++int 
++gsl_histogram_equal_bins_p(const gsl_histogram *h1, const gsl_histogram *h2);
++
++int 
++gsl_histogram_add(gsl_histogram *h1, const gsl_histogram *h2);
++
++int 
++gsl_histogram_sub(gsl_histogram *h1, const gsl_histogram *h2);
++
++int 
++gsl_histogram_mul(gsl_histogram *h1, const gsl_histogram *h2);
++ 
++int 
++gsl_histogram_div(gsl_histogram *h1, const gsl_histogram *h2);
++
++int 
++gsl_histogram_scale(gsl_histogram *h, double scale);
++
++int 
++gsl_histogram_shift (gsl_histogram * h, double shift);
++
++
++double gsl_histogram_sigma (const gsl_histogram * h);
++
++double gsl_histogram_mean (const gsl_histogram * h);
++
++double gsl_histogram_sum (const gsl_histogram * h);
++
++int gsl_histogram_fwrite (FILE * stream, const gsl_histogram * h) ;
++int gsl_histogram_fread (FILE * stream, gsl_histogram * h);
++int gsl_histogram_fprintf (FILE * stream, const gsl_histogram * h, 
++                           const char * range_format, const char * bin_format);
++int gsl_histogram_fscanf (FILE * stream, gsl_histogram * h);
++
++gsl_histogram_pdf * gsl_histogram_pdf_alloc (const size_t n);
++int gsl_histogram_pdf_init (gsl_histogram_pdf * p, const gsl_histogram * h);
++void gsl_histogram_pdf_free (gsl_histogram_pdf * p);
++double gsl_histogram_pdf_sample (const gsl_histogram_pdf * p, double r);
++
++__END_DECLS
++
++#endif /* __GSL_HISTOGRAM_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_char.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_char.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_char.h	(revision 14078)
+@@ -0,0 +1,230 @@
++/* vector/gsl_vector_char.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_VECTOR_CHAR_H__
++#define __GSL_VECTOR_CHAR_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_types.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_inline.h>
++#include <gsl/gsl_check_range.h>
++#include <gsl/gsl_block_char.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++typedef struct 
++{
++  size_t size;
++  size_t stride;
++  char *data;
++  gsl_block_char *block;
++  int owner;
++} 
++gsl_vector_char;
++
++typedef struct
++{
++  gsl_vector_char vector;
++} _gsl_vector_char_view;
++
++typedef _gsl_vector_char_view gsl_vector_char_view;
++
++typedef struct
++{
++  gsl_vector_char vector;
++} _gsl_vector_char_const_view;
++
++typedef const _gsl_vector_char_const_view gsl_vector_char_const_view;
++
++
++/* Allocation */
++
++gsl_vector_char *gsl_vector_char_alloc (const size_t n);
++gsl_vector_char *gsl_vector_char_calloc (const size_t n);
++
++gsl_vector_char *gsl_vector_char_alloc_from_block (gsl_block_char * b,
++                                                     const size_t offset, 
++                                                     const size_t n, 
++                                                     const size_t stride);
++
++gsl_vector_char *gsl_vector_char_alloc_from_vector (gsl_vector_char * v,
++                                                      const size_t offset, 
++                                                      const size_t n, 
++                                                      const size_t stride);
++
++void gsl_vector_char_free (gsl_vector_char * v);
++
++/* Views */
++
++_gsl_vector_char_view 
++gsl_vector_char_view_array (char *v, size_t n);
++
++_gsl_vector_char_view 
++gsl_vector_char_view_array_with_stride (char *base,
++                                         size_t stride,
++                                         size_t n);
++
++_gsl_vector_char_const_view 
++gsl_vector_char_const_view_array (const char *v, size_t n);
++
++_gsl_vector_char_const_view 
++gsl_vector_char_const_view_array_with_stride (const char *base,
++                                               size_t stride,
++                                               size_t n);
++
++_gsl_vector_char_view 
++gsl_vector_char_subvector (gsl_vector_char *v, 
++                            size_t i, 
++                            size_t n);
++
++_gsl_vector_char_view 
++gsl_vector_char_subvector_with_stride (gsl_vector_char *v, 
++                                        size_t i,
++                                        size_t stride,
++                                        size_t n);
++
++_gsl_vector_char_const_view 
++gsl_vector_char_const_subvector (const gsl_vector_char *v, 
++                                  size_t i, 
++                                  size_t n);
++
++_gsl_vector_char_const_view 
++gsl_vector_char_const_subvector_with_stride (const gsl_vector_char *v, 
++                                              size_t i, 
++                                              size_t stride,
++                                              size_t n);
++
++/* Operations */
++
++void gsl_vector_char_set_zero (gsl_vector_char * v);
++void gsl_vector_char_set_all (gsl_vector_char * v, char x);
++int gsl_vector_char_set_basis (gsl_vector_char * v, size_t i);
++
++int gsl_vector_char_fread (FILE * stream, gsl_vector_char * v);
++int gsl_vector_char_fwrite (FILE * stream, const gsl_vector_char * v);
++int gsl_vector_char_fscanf (FILE * stream, gsl_vector_char * v);
++int gsl_vector_char_fprintf (FILE * stream, const gsl_vector_char * v,
++                              const char *format);
++
++int gsl_vector_char_memcpy (gsl_vector_char * dest, const gsl_vector_char * src);
++
++int gsl_vector_char_reverse (gsl_vector_char * v);
++
++int gsl_vector_char_swap (gsl_vector_char * v, gsl_vector_char * w);
++int gsl_vector_char_swap_elements (gsl_vector_char * v, const size_t i, const size_t j);
++
++char gsl_vector_char_max (const gsl_vector_char * v);
++char gsl_vector_char_min (const gsl_vector_char * v);
++void gsl_vector_char_minmax (const gsl_vector_char * v, char * min_out, char * max_out);
++
++size_t gsl_vector_char_max_index (const gsl_vector_char * v);
++size_t gsl_vector_char_min_index (const gsl_vector_char * v);
++void gsl_vector_char_minmax_index (const gsl_vector_char * v, size_t * imin, size_t * imax);
++
++int gsl_vector_char_add (gsl_vector_char * a, const gsl_vector_char * b);
++int gsl_vector_char_sub (gsl_vector_char * a, const gsl_vector_char * b);
++int gsl_vector_char_mul (gsl_vector_char * a, const gsl_vector_char * b);
++int gsl_vector_char_div (gsl_vector_char * a, const gsl_vector_char * b);
++int gsl_vector_char_scale (gsl_vector_char * a, const double x);
++int gsl_vector_char_add_constant (gsl_vector_char * a, const double x);
++
++int gsl_vector_char_equal (const gsl_vector_char * u, 
++                            const gsl_vector_char * v);
++
++int gsl_vector_char_isnull (const gsl_vector_char * v);
++int gsl_vector_char_ispos (const gsl_vector_char * v);
++int gsl_vector_char_isneg (const gsl_vector_char * v);
++int gsl_vector_char_isnonneg (const gsl_vector_char * v);
++
++INLINE_DECL char gsl_vector_char_get (const gsl_vector_char * v, const size_t i);
++INLINE_DECL void gsl_vector_char_set (gsl_vector_char * v, const size_t i, char x);
++INLINE_DECL char * gsl_vector_char_ptr (gsl_vector_char * v, const size_t i);
++INLINE_DECL const char * gsl_vector_char_const_ptr (const gsl_vector_char * v, const size_t i);
++
++#ifdef HAVE_INLINE
++
++INLINE_FUN
++char
++gsl_vector_char_get (const gsl_vector_char * v, const size_t i)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(i >= v->size))
++    {
++      GSL_ERROR_VAL ("index out of range", GSL_EINVAL, 0);
++    }
++#endif
++  return v->data[i * v->stride];
++}
++
++INLINE_FUN
++void
++gsl_vector_char_set (gsl_vector_char * v, const size_t i, char x)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(i >= v->size))
++    {
++      GSL_ERROR_VOID ("index out of range", GSL_EINVAL);
++    }
++#endif
++  v->data[i * v->stride] = x;
++}
++
++INLINE_FUN
++char *
++gsl_vector_char_ptr (gsl_vector_char * v, const size_t i)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(i >= v->size))
++    {
++      GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
++    }
++#endif
++  return (char *) (v->data + i * v->stride);
++}
++
++INLINE_FUN
++const char *
++gsl_vector_char_const_ptr (const gsl_vector_char * v, const size_t i)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(i >= v->size))
++    {
++      GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
++    }
++#endif
++  return (const char *) (v->data + i * v->stride);
++}
++#endif /* HAVE_INLINE */
++
++__END_DECLS
++
++#endif /* __GSL_VECTOR_CHAR_H__ */
++
++
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_long.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_long.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_long.h	(revision 14078)
+@@ -0,0 +1,44 @@
++/* permutation/gsl_permute_long.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_PERMUTE_LONG_H__
++#define __GSL_PERMUTE_LONG_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_permutation.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++int gsl_permute_long (const size_t * p, long * data, const size_t stride, const size_t n);
++int gsl_permute_long_inverse (const size_t * p, long * data, const size_t stride, const size_t n);
++
++__END_DECLS
++
++#endif /* __GSL_PERMUTE_LONG_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_char.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_char.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_char.h	(revision 14078)
+@@ -0,0 +1,45 @@
++/* permutation/gsl_permute_vector_char.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_PERMUTE_VECTOR_CHAR_H__
++#define __GSL_PERMUTE_VECTOR_CHAR_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_permutation.h>
++#include <gsl/gsl_vector_char.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++int gsl_permute_vector_char (const gsl_permutation * p, gsl_vector_char * v);
++int gsl_permute_vector_char_inverse (const gsl_permutation * p, gsl_vector_char * v);
++
++__END_DECLS
++
++#endif /* __GSL_PERMUTE_VECTOR_CHAR_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector.h	(revision 14078)
+@@ -0,0 +1,25 @@
++#ifndef __GSL_VECTOR_H__
++#define __GSL_VECTOR_H__
++
++#include <gsl/gsl_vector_complex_long_double.h>
++#include <gsl/gsl_vector_complex_double.h>
++#include <gsl/gsl_vector_complex_float.h>
++
++#include <gsl/gsl_vector_long_double.h>
++#include <gsl/gsl_vector_double.h>
++#include <gsl/gsl_vector_float.h>
++
++#include <gsl/gsl_vector_ulong.h>
++#include <gsl/gsl_vector_long.h>
++
++#include <gsl/gsl_vector_uint.h>
++#include <gsl/gsl_vector_int.h>
++
++#include <gsl/gsl_vector_ushort.h>
++#include <gsl/gsl_vector_short.h>
++
++#include <gsl/gsl_vector_uchar.h>
++#include <gsl/gsl_vector_char.h>
++
++
++#endif /* __GSL_VECTOR_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_complex_double.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_complex_double.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_complex_double.h	(revision 14078)
+@@ -0,0 +1,45 @@
++/* permutation/gsl_permute_complex_double.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_PERMUTE_COMPLEX_DOUBLE_H__
++#define __GSL_PERMUTE_COMPLEX_DOUBLE_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_complex.h>
++#include <gsl/gsl_permutation.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++int gsl_permute_complex (const size_t * p, double * data, const size_t stride, const size_t n);
++int gsl_permute_complex_inverse (const size_t * p, double * data, const size_t stride, const size_t n);
++
++__END_DECLS
++
++#endif /* __GSL_PERMUTE_COMPLEX_DOUBLE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_double.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_double.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_double.h	(revision 14078)
+@@ -0,0 +1,51 @@
++/* sort/gsl_sort_vector_double.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_SORT_VECTOR_DOUBLE_H__
++#define __GSL_SORT_VECTOR_DOUBLE_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_permutation.h>
++#include <gsl/gsl_vector_double.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++void gsl_sort_vector (gsl_vector * v);
++int gsl_sort_vector_index (gsl_permutation * p, const gsl_vector * v);
++
++int gsl_sort_vector_smallest (double * dest, const size_t k, const gsl_vector * v);
++int gsl_sort_vector_largest (double * dest, const size_t k, const gsl_vector * v);
++
++int gsl_sort_vector_smallest_index (size_t * p, const size_t k, const gsl_vector * v);
++int gsl_sort_vector_largest_index (size_t * p, const size_t k, const gsl_vector * v);
++
++__END_DECLS
++
++#endif /* __GSL_SORT_VECTOR_DOUBLE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix.h	(revision 14078)
+@@ -0,0 +1,25 @@
++#ifndef __GSL_MATRIX_H__
++#define __GSL_MATRIX_H__
++
++#include <gsl/gsl_matrix_complex_long_double.h>
++#include <gsl/gsl_matrix_complex_double.h>
++#include <gsl/gsl_matrix_complex_float.h>
++
++#include <gsl/gsl_matrix_long_double.h>
++#include <gsl/gsl_matrix_double.h>
++#include <gsl/gsl_matrix_float.h>
++
++#include <gsl/gsl_matrix_ulong.h>
++#include <gsl/gsl_matrix_long.h>
++
++#include <gsl/gsl_matrix_uint.h>
++#include <gsl/gsl_matrix_int.h>
++
++#include <gsl/gsl_matrix_ushort.h>
++#include <gsl/gsl_matrix_short.h>
++
++#include <gsl/gsl_matrix_uchar.h>
++#include <gsl/gsl_matrix_char.h>
++
++
++#endif /* __GSL_MATRIX_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_machine.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_machine.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_machine.h	(revision 14078)
+@@ -0,0 +1,104 @@
++/* Author:  B. Gough and G. Jungman */
++#ifndef __GSL_MACHINE_H__
++#define __GSL_MACHINE_H__
++
++#include <limits.h>
++#include <float.h>
++
++/* magic constants; mostly for the benefit of the implementation */
++
++/* -*-MACHINE CONSTANTS-*-
++ *
++ * PLATFORM: Whiz-O-Matic 9000
++ * FP_PLATFORM: IEEE-Virtual
++ * HOSTNAME: nnn.lanl.gov
++ * DATE: Fri Nov 20 17:53:26 MST 1998
++ */
++#define GSL_DBL_EPSILON        2.2204460492503131e-16
++#define GSL_SQRT_DBL_EPSILON   1.4901161193847656e-08
++#define GSL_ROOT3_DBL_EPSILON  6.0554544523933429e-06
++#define GSL_ROOT4_DBL_EPSILON  1.2207031250000000e-04
++#define GSL_ROOT5_DBL_EPSILON  7.4009597974140505e-04
++#define GSL_ROOT6_DBL_EPSILON  2.4607833005759251e-03
++#define GSL_LOG_DBL_EPSILON   (-3.6043653389117154e+01)
++
++#define GSL_DBL_MIN        2.2250738585072014e-308
++#define GSL_SQRT_DBL_MIN   1.4916681462400413e-154
++#define GSL_ROOT3_DBL_MIN  2.8126442852362996e-103
++#define GSL_ROOT4_DBL_MIN  1.2213386697554620e-77
++#define GSL_ROOT5_DBL_MIN  2.9476022969691763e-62
++#define GSL_ROOT6_DBL_MIN  5.3034368905798218e-52
++#define GSL_LOG_DBL_MIN   (-7.0839641853226408e+02)
++
++#define GSL_DBL_MAX        1.7976931348623157e+308
++#define GSL_SQRT_DBL_MAX   1.3407807929942596e+154
++#define GSL_ROOT3_DBL_MAX  5.6438030941222897e+102
++#define GSL_ROOT4_DBL_MAX  1.1579208923731620e+77
++#define GSL_ROOT5_DBL_MAX  4.4765466227572707e+61
++#define GSL_ROOT6_DBL_MAX  2.3756689782295612e+51
++#define GSL_LOG_DBL_MAX    7.0978271289338397e+02
++
++#define GSL_FLT_EPSILON        1.1920928955078125e-07
++#define GSL_SQRT_FLT_EPSILON   3.4526698300124393e-04
++#define GSL_ROOT3_FLT_EPSILON  4.9215666011518501e-03
++#define GSL_ROOT4_FLT_EPSILON  1.8581361171917516e-02
++#define GSL_ROOT5_FLT_EPSILON  4.1234622211652937e-02
++#define GSL_ROOT6_FLT_EPSILON  7.0153878019335827e-02
++#define GSL_LOG_FLT_EPSILON   (-1.5942385152878742e+01)
++
++#define GSL_FLT_MIN        1.1754943508222875e-38
++#define GSL_SQRT_FLT_MIN   1.0842021724855044e-19
++#define GSL_ROOT3_FLT_MIN  2.2737367544323241e-13
++#define GSL_ROOT4_FLT_MIN  3.2927225399135965e-10
++#define GSL_ROOT5_FLT_MIN  2.5944428542140822e-08
++#define GSL_ROOT6_FLT_MIN  4.7683715820312542e-07
++#define GSL_LOG_FLT_MIN   (-8.7336544750553102e+01)
++
++#define GSL_FLT_MAX        3.4028234663852886e+38
++#define GSL_SQRT_FLT_MAX   1.8446743523953730e+19
++#define GSL_ROOT3_FLT_MAX  6.9814635196223242e+12
++#define GSL_ROOT4_FLT_MAX  4.2949672319999986e+09
++#define GSL_ROOT5_FLT_MAX  5.0859007855960041e+07
++#define GSL_ROOT6_FLT_MAX  2.6422459233807749e+06
++#define GSL_LOG_FLT_MAX    8.8722839052068352e+01
++
++#define GSL_SFLT_EPSILON        4.8828125000000000e-04
++#define GSL_SQRT_SFLT_EPSILON   2.2097086912079612e-02
++#define GSL_ROOT3_SFLT_EPSILON  7.8745065618429588e-02
++#define GSL_ROOT4_SFLT_EPSILON  1.4865088937534013e-01
++#define GSL_ROOT5_SFLT_EPSILON  2.1763764082403100e-01
++#define GSL_ROOT6_SFLT_EPSILON  2.8061551207734325e-01
++#define GSL_LOG_SFLT_EPSILON   (-7.6246189861593985e+00)
++
++/* !MACHINE CONSTANTS! */
++
++
++/* a little internal backwards compatibility */
++#define GSL_MACH_EPS  GSL_DBL_EPSILON
++
++
++
++/* Here are the constants related to or derived from
++ * machine constants. These are not to be confused with
++ * the constants that define various precision levels
++ * for the precision/error system.
++ *
++ * This information is determined at configure time
++ * and is platform dependent. Edit at your own risk.
++ *
++ * PLATFORM: WHIZ-O-MATIC
++ * CONFIG-DATE: Thu Nov 19 19:27:18 MST 1998
++ * CONFIG-HOST: nnn.lanl.gov
++ */
++
++/* machine precision constants */
++/* #define GSL_MACH_EPS         1.0e-15 */
++#define GSL_SQRT_MACH_EPS       3.2e-08
++#define GSL_ROOT3_MACH_EPS      1.0e-05
++#define GSL_ROOT4_MACH_EPS      0.000178
++#define GSL_ROOT5_MACH_EPS      0.00100
++#define GSL_ROOT6_MACH_EPS      0.00316
++#define GSL_LOG_MACH_EPS       (-34.54)
++
++
++#endif /* __GSL_MACHINE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_dft_complex.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_dft_complex.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_dft_complex.h	(revision 14078)
+@@ -0,0 +1,55 @@
++/* fft/gsl_dft_complex.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_DFT_COMPLEX_H__
++#define __GSL_DFT_COMPLEX_H__
++
++#include <stddef.h>
++
++#include <gsl/gsl_math.h>
++#include <gsl/gsl_complex.h>
++#include <gsl/gsl_fft.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++int gsl_dft_complex_forward (const double data[], const size_t stride, const size_t n,
++                             double result[]);
++
++int gsl_dft_complex_backward (const double data[], const size_t stride, const size_t n,
++                              double result[]);
++
++int gsl_dft_complex_inverse (const double data[], const size_t stride, const size_t n,
++                             double result[]);
++
++int gsl_dft_complex_transform (const double data[], const size_t stride, const size_t n,
++                     double result[], const gsl_fft_direction sign);
++
++__END_DECLS
++
++#endif /* __GSL_DFT_COMPLEX_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_int.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_int.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_int.h	(revision 14078)
+@@ -0,0 +1,65 @@
++/* block/gsl_block_int.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_BLOCK_INT_H__
++#define __GSL_BLOCK_INT_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++struct gsl_block_int_struct
++{
++  size_t size;
++  int *data;
++};
++
++typedef struct gsl_block_int_struct gsl_block_int;
++
++gsl_block_int *gsl_block_int_alloc (const size_t n);
++gsl_block_int *gsl_block_int_calloc (const size_t n);
++void gsl_block_int_free (gsl_block_int * b);
++
++int gsl_block_int_fread (FILE * stream, gsl_block_int * b);
++int gsl_block_int_fwrite (FILE * stream, const gsl_block_int * b);
++int gsl_block_int_fscanf (FILE * stream, gsl_block_int * b);
++int gsl_block_int_fprintf (FILE * stream, const gsl_block_int * b, const char *format);
++
++int gsl_block_int_raw_fread (FILE * stream, int * b, const size_t n, const size_t stride);
++int gsl_block_int_raw_fwrite (FILE * stream, const int * b, const size_t n, const size_t stride);
++int gsl_block_int_raw_fscanf (FILE * stream, int * b, const size_t n, const size_t stride);
++int gsl_block_int_raw_fprintf (FILE * stream, const int * b, const size_t n, const size_t stride, const char *format);
++
++size_t gsl_block_int_size (const gsl_block_int * b);
++int * gsl_block_int_data (const gsl_block_int * b);
++
++__END_DECLS
++
++#endif /* __GSL_BLOCK_INT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_short.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_short.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_short.h	(revision 14078)
+@@ -0,0 +1,50 @@
++/* sort/gsl_sort_short.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_SORT_SHORT_H__
++#define __GSL_SORT_SHORT_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_permutation.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++void gsl_sort_short (short * data, const size_t stride, const size_t n);
++void gsl_sort_short_index (size_t * p, const short * data, const size_t stride, const size_t n);
++
++int gsl_sort_short_smallest (short * dest, const size_t k, const short * src, const size_t stride, const size_t n);
++int gsl_sort_short_smallest_index (size_t * p, const size_t k, const short * src, const size_t stride, const size_t n);
++
++int gsl_sort_short_largest (short * dest, const size_t k, const short * src, const size_t stride, const size_t n);
++int gsl_sort_short_largest_index (size_t * p, const size_t k, const short * src, const size_t stride, const size_t n);
++
++__END_DECLS
++
++#endif /* __GSL_SORT_SHORT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_result.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_result.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_result.h	(revision 14078)
+@@ -0,0 +1,59 @@
++/* specfunc/gsl_sf_result.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++/* Author:  G. Jungman */
++
++#ifndef __GSL_SF_RESULT_H__
++#define __GSL_SF_RESULT_H__
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++struct gsl_sf_result_struct {
++  double val;
++  double err;
++};
++typedef struct gsl_sf_result_struct gsl_sf_result;
++
++#define GSL_SF_RESULT_SET(r,v,e) do { (r)->val=(v); (r)->err=(e); } while(0)
++
++
++struct gsl_sf_result_e10_struct {
++  double val;
++  double err;
++  int    e10;
++};
++typedef struct gsl_sf_result_e10_struct gsl_sf_result_e10;
++
++
++int gsl_sf_result_smash_e(const gsl_sf_result_e10 * re, gsl_sf_result * r);
++
++
++__END_DECLS
++
++#endif /* __GSL_SF_RESULT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_fft_complex.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_fft_complex.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_fft_complex.h	(revision 14078)
+@@ -0,0 +1,136 @@
++/* fft/gsl_fft_complex.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_FFT_COMPLEX_H__
++#define __GSL_FFT_COMPLEX_H__
++
++#include <stddef.h>
++
++#include <gsl/gsl_math.h>
++#include <gsl/gsl_complex.h>
++#include <gsl/gsl_fft.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++/*  Power of 2 routines  */
++
++
++int gsl_fft_complex_radix2_forward (gsl_complex_packed_array data,
++                                    const size_t stride,
++                                    const size_t n);
++
++int gsl_fft_complex_radix2_backward (gsl_complex_packed_array data,
++                                     const size_t stride,
++                                     const size_t n);
++
++int gsl_fft_complex_radix2_inverse (gsl_complex_packed_array data,
++                                    const size_t stride,
++                                    const size_t n);
++
++int gsl_fft_complex_radix2_transform (gsl_complex_packed_array data,
++                                      const size_t stride,
++                                      const size_t n,
++                                      const gsl_fft_direction sign);
++
++int gsl_fft_complex_radix2_dif_forward (gsl_complex_packed_array data,
++                                        const size_t stride,
++                                        const size_t n);
++
++int gsl_fft_complex_radix2_dif_backward (gsl_complex_packed_array data,
++                                         const size_t stride,
++                                         const size_t n);
++
++int gsl_fft_complex_radix2_dif_inverse (gsl_complex_packed_array data,
++                                        const size_t stride,
++                                        const size_t n);
++
++int gsl_fft_complex_radix2_dif_transform (gsl_complex_packed_array data,
++                                          const size_t stride,
++                                          const size_t n,
++                                          const gsl_fft_direction sign);
++
++/*  Mixed Radix general-N routines  */
++
++typedef struct
++  {
++    size_t n;
++    size_t nf;
++    size_t factor[64];
++    gsl_complex *twiddle[64];
++    gsl_complex *trig;
++  }
++gsl_fft_complex_wavetable;
++
++typedef struct
++{
++  size_t n;
++  double *scratch;
++}
++gsl_fft_complex_workspace;
++
++
++gsl_fft_complex_wavetable *gsl_fft_complex_wavetable_alloc (size_t n);
++
++void gsl_fft_complex_wavetable_free (gsl_fft_complex_wavetable * wavetable);
++
++gsl_fft_complex_workspace *gsl_fft_complex_workspace_alloc (size_t n);
++
++void gsl_fft_complex_workspace_free (gsl_fft_complex_workspace * workspace);
++
++int gsl_fft_complex_memcpy (gsl_fft_complex_wavetable * dest,
++                            gsl_fft_complex_wavetable * src);
++
++
++int gsl_fft_complex_forward (gsl_complex_packed_array data,
++                             const size_t stride,
++                             const size_t n,
++                             const gsl_fft_complex_wavetable * wavetable,
++                             gsl_fft_complex_workspace * work);
++
++int gsl_fft_complex_backward (gsl_complex_packed_array data,
++                              const size_t stride,
++                              const size_t n,
++                              const gsl_fft_complex_wavetable * wavetable,
++                              gsl_fft_complex_workspace * work);
++
++int gsl_fft_complex_inverse (gsl_complex_packed_array data,
++                             const size_t stride,
++                             const size_t n,
++                             const gsl_fft_complex_wavetable * wavetable,
++                             gsl_fft_complex_workspace * work);
++
++int gsl_fft_complex_transform (gsl_complex_packed_array data,
++                               const size_t stride, const size_t n,
++                               const gsl_fft_complex_wavetable * wavetable,
++                               gsl_fft_complex_workspace * work,
++                               const gsl_fft_direction sign);
++
++__END_DECLS
++
++#endif /* __GSL_FFT_COMPLEX_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_odeiv.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_odeiv.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_odeiv.h	(revision 14078)
+@@ -0,0 +1,230 @@
++/* ode-initval/gsl_odeiv.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++/* Author:  G. Jungman
++ */
++#ifndef __GSL_ODEIV_H__
++#define __GSL_ODEIV_H__
++
++#include <stdio.h>
++#include <stdlib.h>
++#include <gsl/gsl_types.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++
++/* Description of a system of ODEs.
++ *
++ * y' = f(t,y) = dydt(t, y)
++ *
++ * The system is specified by giving the right-hand-side
++ * of the equation and possibly a jacobian function.
++ *
++ * Some methods require the jacobian function, which calculates
++ * the matrix dfdy and the vector dfdt. The matrix dfdy conforms
++ * to the GSL standard, being a continuous range of floating point
++ * values, in row-order.
++ *
++ * As with GSL function objects, user-supplied parameter
++ * data is also present. 
++ */
++
++typedef struct  
++{
++  int (* function) (double t, const double y[], double dydt[], void * params);
++  int (* jacobian) (double t, const double y[], double * dfdy, double dfdt[], void * params);
++  size_t dimension;
++  void * params;
++}
++gsl_odeiv_system;
++
++#define GSL_ODEIV_FN_EVAL(S,t,y,f)  (*((S)->function))(t,y,f,(S)->params)
++#define GSL_ODEIV_JA_EVAL(S,t,y,dfdy,dfdt)  (*((S)->jacobian))(t,y,dfdy,dfdt,(S)->params)
++
++
++/* General stepper object.
++ *
++ * Opaque object for stepping an ODE system from t to t+h.
++ * In general the object has some state which facilitates
++ * iterating the stepping operation.
++ */
++
++typedef struct 
++{
++  const char * name;
++  int can_use_dydt_in;
++  int gives_exact_dydt_out;
++  void * (*alloc) (size_t dim);
++  int  (*apply)  (void * state, size_t dim, double t, double h, double y[], double yerr[], const double dydt_in[], double dydt_out[], const gsl_odeiv_system * dydt);
++  int  (*reset) (void * state, size_t dim);
++  unsigned int  (*order) (void * state);
++  void (*free)  (void * state);
++}
++gsl_odeiv_step_type;
++
++typedef struct {
++  const gsl_odeiv_step_type * type;
++  size_t dimension;
++  void * state;
++}
++gsl_odeiv_step;
++
++
++/* Available stepper types.
++ *
++ * rk2    : embedded 2nd(3rd) Runge-Kutta
++ * rk4    : 4th order (classical) Runge-Kutta
++ * rkck   : embedded 4th(5th) Runge-Kutta, Cash-Karp
++ * rk8pd  : embedded 8th(9th) Runge-Kutta, Prince-Dormand
++ * rk2imp : implicit 2nd order Runge-Kutta at Gaussian points
++ * rk4imp : implicit 4th order Runge-Kutta at Gaussian points
++ * gear1  : M=1 implicit Gear method
++ * gear2  : M=2 implicit Gear method
++ */
++
++GSL_VAR const gsl_odeiv_step_type *gsl_odeiv_step_rk2;
++GSL_VAR const gsl_odeiv_step_type *gsl_odeiv_step_rk4;
++GSL_VAR const gsl_odeiv_step_type *gsl_odeiv_step_rkf45;
++GSL_VAR const gsl_odeiv_step_type *gsl_odeiv_step_rkck;
++GSL_VAR const gsl_odeiv_step_type *gsl_odeiv_step_rk8pd;
++GSL_VAR const gsl_odeiv_step_type *gsl_odeiv_step_rk2imp;
++GSL_VAR const gsl_odeiv_step_type *gsl_odeiv_step_rk2simp;
++GSL_VAR const gsl_odeiv_step_type *gsl_odeiv_step_rk4imp;
++GSL_VAR const gsl_odeiv_step_type *gsl_odeiv_step_bsimp;
++GSL_VAR const gsl_odeiv_step_type *gsl_odeiv_step_gear1;
++GSL_VAR const gsl_odeiv_step_type *gsl_odeiv_step_gear2;
++
++
++/* Constructor for specialized stepper objects.
++ */
++gsl_odeiv_step * gsl_odeiv_step_alloc(const gsl_odeiv_step_type * T, size_t dim);
++int  gsl_odeiv_step_reset(gsl_odeiv_step * s);
++void gsl_odeiv_step_free(gsl_odeiv_step * s);
++
++/* General stepper object methods.
++ */
++const char * gsl_odeiv_step_name(const gsl_odeiv_step * s);
++unsigned int gsl_odeiv_step_order(const gsl_odeiv_step * s);
++
++int  gsl_odeiv_step_apply(gsl_odeiv_step * s, double t, double h, double y[], double yerr[], const double dydt_in[], double dydt_out[], const gsl_odeiv_system * dydt);
++
++/* General step size control object.
++ *
++ * The hadjust() method controls the adjustment of
++ * step size given the result of a step and the error.
++ * Valid hadjust() methods must return one of the codes below.
++ *
++ * The general data can be used by specializations
++ * to store state and control their heuristics.
++ */
++
++typedef struct 
++{
++  const char * name;
++  void * (*alloc) (void);
++  int  (*init) (void * state, double eps_abs, double eps_rel, double a_y, double a_dydt);
++  int  (*hadjust) (void * state, size_t dim, unsigned int ord, const double y[], const double yerr[], const double yp[], double * h);
++  void (*free) (void * state);
++}
++gsl_odeiv_control_type;
++
++typedef struct 
++{
++  const gsl_odeiv_control_type * type;
++  void * state;
++}
++gsl_odeiv_control;
++
++/* Possible return values for an hadjust() evolution method.
++ */
++#define GSL_ODEIV_HADJ_INC   1  /* step was increased */
++#define GSL_ODEIV_HADJ_NIL   0  /* step unchanged     */
++#define GSL_ODEIV_HADJ_DEC (-1) /* step decreased     */
++
++gsl_odeiv_control * gsl_odeiv_control_alloc(const gsl_odeiv_control_type * T);
++int gsl_odeiv_control_init(gsl_odeiv_control * c, double eps_abs, double eps_rel, double a_y, double a_dydt);
++void gsl_odeiv_control_free(gsl_odeiv_control * c);
++int gsl_odeiv_control_hadjust (gsl_odeiv_control * c, gsl_odeiv_step * s, const double y[], const double yerr[], const double dydt[], double * h);
++const char * gsl_odeiv_control_name(const gsl_odeiv_control * c);
++
++/* Available control object constructors.
++ *
++ * The standard control object is a four parameter heuristic
++ * defined as follows:
++ *    D0 = eps_abs + eps_rel * (a_y |y| + a_dydt h |y'|)
++ *    D1 = |yerr|
++ *    q  = consistency order of method (q=4 for 4(5) embedded RK)
++ *    S  = safety factor (0.9 say)
++ *
++ *                      /  (D0/D1)^(1/(q+1))  D0 >= D1
++ *    h_NEW = S h_OLD * |
++ *                      \  (D0/D1)^(1/q)      D0 < D1
++ *
++ * This encompasses all the standard error scaling methods.
++ *
++ * The y method is the standard method with a_y=1, a_dydt=0.
++ * The yp method is the standard method with a_y=0, a_dydt=1.
++ */
++
++gsl_odeiv_control * gsl_odeiv_control_standard_new(double eps_abs, double eps_rel, double a_y, double a_dydt);
++gsl_odeiv_control * gsl_odeiv_control_y_new(double eps_abs, double eps_rel);
++gsl_odeiv_control * gsl_odeiv_control_yp_new(double eps_abs, double eps_rel);
++
++/* This controller computes errors using different absolute errors for
++ * each component
++ *
++ *    D0 = eps_abs * scale_abs[i] + eps_rel * (a_y |y| + a_dydt h |y'|)
++ */
++gsl_odeiv_control * gsl_odeiv_control_scaled_new(double eps_abs, double eps_rel, double a_y, double a_dydt, const double scale_abs[], size_t dim);
++
++/* General evolution object.
++ */
++typedef struct {
++  size_t dimension;
++  double * y0;
++  double * yerr;
++  double * dydt_in;
++  double * dydt_out;
++  double last_step;
++  unsigned long int count;
++  unsigned long int failed_steps;
++}
++gsl_odeiv_evolve;
++
++/* Evolution object methods.
++ */
++gsl_odeiv_evolve * gsl_odeiv_evolve_alloc(size_t dim);
++int gsl_odeiv_evolve_apply(gsl_odeiv_evolve * e, gsl_odeiv_control * con, gsl_odeiv_step * step, const gsl_odeiv_system * dydt, double * t, double t1, double * h, double y[]);
++int gsl_odeiv_evolve_reset(gsl_odeiv_evolve * e);
++void gsl_odeiv_evolve_free(gsl_odeiv_evolve * e);
++
++
++__END_DECLS
++
++#endif /* __GSL_ODEIV_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_float.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_float.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_float.h	(revision 14078)
+@@ -0,0 +1,44 @@
++/* permutation/gsl_permute_float.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_PERMUTE_FLOAT_H__
++#define __GSL_PERMUTE_FLOAT_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_permutation.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++int gsl_permute_float (const size_t * p, float * data, const size_t stride, const size_t n);
++int gsl_permute_float_inverse (const size_t * p, float * data, const size_t stride, const size_t n);
++
++__END_DECLS
++
++#endif /* __GSL_PERMUTE_FLOAT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_fft_real_float.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_fft_real_float.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_fft_real_float.h	(revision 14078)
+@@ -0,0 +1,79 @@
++/* fft/gsl_fft_real_float.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_FFT_REAL_FLOAT_H__
++#define __GSL_FFT_REAL_FLOAT_H__
++
++#include <stddef.h>
++
++#include <gsl/gsl_math.h>
++#include <gsl/gsl_complex.h>
++#include <gsl/gsl_fft.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++int gsl_fft_real_float_radix2_transform (float data[], const size_t stride, const size_t n) ;
++
++typedef struct
++  {
++    size_t n;
++    size_t nf;
++    size_t factor[64];
++    gsl_complex_float *twiddle[64];
++    gsl_complex_float *trig;
++  }
++gsl_fft_real_wavetable_float;
++
++typedef struct
++  {
++    size_t n;
++    float *scratch;
++  }
++gsl_fft_real_workspace_float;
++
++gsl_fft_real_wavetable_float * gsl_fft_real_wavetable_float_alloc (size_t n);
++
++void  gsl_fft_real_wavetable_float_free (gsl_fft_real_wavetable_float * wavetable);
++
++gsl_fft_real_workspace_float * gsl_fft_real_workspace_float_alloc (size_t n);
++
++void  gsl_fft_real_workspace_float_free (gsl_fft_real_workspace_float * workspace);
++
++int gsl_fft_real_float_transform (float data[], const size_t stride, const size_t n,
++                                  const gsl_fft_real_wavetable_float * wavetable,
++                                  gsl_fft_real_workspace_float * work);
++
++
++int gsl_fft_real_float_unpack (const float real_float_coefficient[],
++                               float complex_coefficient[],
++                               const size_t stride, const size_t n);
++
++__END_DECLS
++
++#endif /* __GSL_FFT_REAL_FLOAT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_uint.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_uint.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_uint.h	(revision 14078)
+@@ -0,0 +1,51 @@
++/* sort/gsl_sort_vector_uint.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_SORT_VECTOR_UINT_H__
++#define __GSL_SORT_VECTOR_UINT_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_permutation.h>
++#include <gsl/gsl_vector_uint.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++void gsl_sort_vector_uint (gsl_vector_uint * v);
++int gsl_sort_vector_uint_index (gsl_permutation * p, const gsl_vector_uint * v);
++
++int gsl_sort_vector_uint_smallest (unsigned int * dest, const size_t k, const gsl_vector_uint * v);
++int gsl_sort_vector_uint_largest (unsigned int * dest, const size_t k, const gsl_vector_uint * v);
++
++int gsl_sort_vector_uint_smallest_index (size_t * p, const size_t k, const gsl_vector_uint * v);
++int gsl_sort_vector_uint_largest_index (size_t * p, const size_t k, const gsl_vector_uint * v);
++
++__END_DECLS
++
++#endif /* __GSL_SORT_VECTOR_UINT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_ulong.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_ulong.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_ulong.h	(revision 14078)
+@@ -0,0 +1,51 @@
++/* sort/gsl_sort_vector_ulong.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_SORT_VECTOR_ULONG_H__
++#define __GSL_SORT_VECTOR_ULONG_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_permutation.h>
++#include <gsl/gsl_vector_ulong.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++void gsl_sort_vector_ulong (gsl_vector_ulong * v);
++int gsl_sort_vector_ulong_index (gsl_permutation * p, const gsl_vector_ulong * v);
++
++int gsl_sort_vector_ulong_smallest (unsigned long * dest, const size_t k, const gsl_vector_ulong * v);
++int gsl_sort_vector_ulong_largest (unsigned long * dest, const size_t k, const gsl_vector_ulong * v);
++
++int gsl_sort_vector_ulong_smallest_index (size_t * p, const size_t k, const gsl_vector_ulong * v);
++int gsl_sort_vector_ulong_largest_index (size_t * p, const size_t k, const gsl_vector_ulong * v);
++
++__END_DECLS
++
++#endif /* __GSL_SORT_VECTOR_ULONG_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_multifit_nlin.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_multifit_nlin.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_multifit_nlin.h	(revision 14078)
+@@ -0,0 +1,172 @@
++/* multifit_nlin/gsl_multifit_nlin.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_MULTIFIT_NLIN_H__
++#define __GSL_MULTIFIT_NLIN_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_types.h>
++#include <gsl/gsl_math.h>
++#include <gsl/gsl_vector.h>
++#include <gsl/gsl_matrix.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++int gsl_multifit_gradient (const gsl_matrix * J, const gsl_vector * f,
++                           gsl_vector * g);
++
++int gsl_multifit_covar (const gsl_matrix * J, double epsrel, gsl_matrix * covar);
++
++
++/* Definition of vector-valued functions with parameters based on gsl_vector */
++
++struct gsl_multifit_function_struct
++{
++  int (* f) (const gsl_vector * x, void * params, gsl_vector * f);
++  size_t n;   /* number of functions */
++  size_t p;   /* number of independent variables */
++  void * params;
++};
++
++typedef struct gsl_multifit_function_struct gsl_multifit_function ;
++
++#define GSL_MULTIFIT_FN_EVAL(F,x,y) (*((F)->f))(x,(F)->params,(y))
++
++typedef struct
++  {
++    const char *name;
++    size_t size;
++    int (*alloc) (void *state, size_t n, size_t p);
++    int (*set) (void *state, gsl_multifit_function * function, gsl_vector * x, gsl_vector * f, gsl_vector * dx);
++    int (*iterate) (void *state, gsl_multifit_function * function, gsl_vector * x, gsl_vector * f, gsl_vector * dx);
++    void (*free) (void *state);
++  }
++gsl_multifit_fsolver_type;
++
++typedef struct
++  {
++    const gsl_multifit_fsolver_type * type;
++    gsl_multifit_function * function ;
++    gsl_vector * x ;
++    gsl_vector * f ;
++    gsl_vector * dx ;
++    void *state;
++  }
++gsl_multifit_fsolver;
++
++gsl_multifit_fsolver *
++gsl_multifit_fsolver_alloc (const gsl_multifit_fsolver_type * T, 
++                            size_t n, size_t p);
++
++void gsl_multifit_fsolver_free (gsl_multifit_fsolver * s);
++
++int gsl_multifit_fsolver_set (gsl_multifit_fsolver * s, 
++                                   gsl_multifit_function * f, 
++                                   const gsl_vector * x);
++
++int gsl_multifit_fsolver_iterate (gsl_multifit_fsolver * s);
++
++const char * gsl_multifit_fsolver_name (const gsl_multifit_fsolver * s);
++gsl_vector * gsl_multifit_fsolver_position (const gsl_multifit_fsolver * s);
++
++/* Definition of vector-valued functions and gradient with parameters
++   based on gsl_vector */
++
++struct gsl_multifit_function_fdf_struct
++{
++  int (* f) (const gsl_vector * x, void * params, gsl_vector * f);
++  int (* df) (const gsl_vector * x, void * params, gsl_matrix * df);
++  int (* fdf) (const gsl_vector * x, void * params, gsl_vector * f, gsl_matrix *df);
++  size_t n;   /* number of functions */
++  size_t p;   /* number of independent variables */
++  void * params;
++};
++
++typedef struct gsl_multifit_function_fdf_struct gsl_multifit_function_fdf ;
++
++#define GSL_MULTIFIT_FN_EVAL_F(F,x,y) ((*((F)->f))(x,(F)->params,(y)))
++#define GSL_MULTIFIT_FN_EVAL_DF(F,x,dy) ((*((F)->df))(x,(F)->params,(dy)))
++#define GSL_MULTIFIT_FN_EVAL_F_DF(F,x,y,dy) ((*((F)->fdf))(x,(F)->params,(y),(dy)))
++
++typedef struct
++  {
++    const char *name;
++    size_t size;
++    int (*alloc) (void *state, size_t n, size_t p);
++    int (*set) (void *state, gsl_multifit_function_fdf * fdf, gsl_vector * x, gsl_vector * f, gsl_matrix * J, gsl_vector * dx);
++    int (*iterate) (void *state, gsl_multifit_function_fdf * fdf, gsl_vector * x, gsl_vector * f, gsl_matrix * J, gsl_vector * dx);
++    void (*free) (void *state);
++  }
++gsl_multifit_fdfsolver_type;
++
++typedef struct
++  {
++    const gsl_multifit_fdfsolver_type * type;
++    gsl_multifit_function_fdf * fdf ;
++    gsl_vector * x;
++    gsl_vector * f;
++    gsl_matrix * J;
++    gsl_vector * dx;
++    void *state;
++  }
++gsl_multifit_fdfsolver;
++
++
++gsl_multifit_fdfsolver *
++gsl_multifit_fdfsolver_alloc (const gsl_multifit_fdfsolver_type * T, 
++                              size_t n, size_t p);
++
++int
++gsl_multifit_fdfsolver_set (gsl_multifit_fdfsolver * s, 
++                                 gsl_multifit_function_fdf * fdf,
++                                 const gsl_vector * x);
++
++int
++gsl_multifit_fdfsolver_iterate (gsl_multifit_fdfsolver * s);
++
++void
++gsl_multifit_fdfsolver_free (gsl_multifit_fdfsolver * s);
++
++const char * gsl_multifit_fdfsolver_name (const gsl_multifit_fdfsolver * s);
++gsl_vector * gsl_multifit_fdfsolver_position (const gsl_multifit_fdfsolver * s);
++
++int gsl_multifit_test_delta (const gsl_vector * dx, const gsl_vector * x, 
++                             double epsabs, double epsrel);
++
++int gsl_multifit_test_gradient (const gsl_vector * g, double epsabs);
++
++/* extern const gsl_multifit_fsolver_type * gsl_multifit_fsolver_gradient; */
++
++GSL_VAR const gsl_multifit_fdfsolver_type * gsl_multifit_fdfsolver_lmder;
++GSL_VAR const gsl_multifit_fdfsolver_type * gsl_multifit_fdfsolver_lmsder;
++
++
++__END_DECLS
++
++#endif /* __GSL_MULTIFIT_NLIN_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_test.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_test.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_test.h	(revision 14078)
+@@ -0,0 +1,66 @@
++/* err/gsl_test.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_TEST_H__
++#define __GSL_TEST_H__
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++void
++  gsl_test (int status, const char *test_description, ...);
++
++void
++gsl_test_rel (double result, double expected, double relative_error,
++              const char *test_description, ...) ;
++
++void
++gsl_test_abs (double result, double expected, double absolute_error,
++              const char *test_description, ...) ;
++
++void
++gsl_test_factor (double result, double expected, double factor,
++                 const char *test_description, ...) ;
++
++void
++gsl_test_int (int result, int expected, const char *test_description, ...) ;
++
++void
++gsl_test_str (const char * result, const char * expected, 
++              const char *test_description, ...) ;
++
++void
++  gsl_test_verbose (int verbose) ;
++
++int
++  gsl_test_summary (void) ;
++
++
++__END_DECLS
++
++#endif /* __GSL_TEST_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_fft.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_fft.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_fft.h	(revision 14078)
+@@ -0,0 +1,60 @@
++/* fft/gsl_fft.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_FFT_H__
++#define __GSL_FFT_H__
++
++#include <gsl/gsl_complex.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++#ifndef GSL_DISABLE_DEPRECATED
++typedef enum
++  {
++    forward = -1, backward = +1,
++    gsl_fft_forward = -1, gsl_fft_backward = +1      
++  }
++gsl_fft_direction;
++#else
++typedef enum
++  {
++    gsl_fft_forward = -1, gsl_fft_backward = +1   
++  }
++gsl_fft_direction;
++#endif
++
++/* this gives the sign in the formula
++
++   h(f) = \sum x(t) exp(+/- 2 pi i f t) 
++       
++   where - is the forward transform direction and + the inverse direction */
++
++__END_DECLS
++
++#endif /* __GSL_FFT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_histogram2d.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_histogram2d.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_histogram2d.h	(revision 14078)
+@@ -0,0 +1,172 @@
++/* histogram/gsl_histogram2d.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_HISTOGRAM2D_H__
++#define __GSL_HISTOGRAM2D_H__
++
++#include <stdlib.h>
++#include <stdio.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++typedef struct {
++  size_t nx, ny ;
++  double * xrange ;
++  double * yrange ;
++  double * bin ;
++} gsl_histogram2d ;
++
++typedef struct {
++  size_t nx, ny ;
++  double * xrange ;
++  double * yrange ;
++  double * sum ;
++} gsl_histogram2d_pdf ;
++
++gsl_histogram2d * gsl_histogram2d_alloc (const size_t nx, const size_t ny);
++gsl_histogram2d * gsl_histogram2d_calloc (const size_t nx, const size_t ny);
++gsl_histogram2d * gsl_histogram2d_calloc_uniform (const size_t nx, const size_t ny,
++                                             const double xmin, const double xmax,
++                                             const double ymin, const double ymax);
++
++void gsl_histogram2d_free (gsl_histogram2d * h);
++
++int gsl_histogram2d_increment (gsl_histogram2d * h, double x, double y);
++int gsl_histogram2d_accumulate (gsl_histogram2d * h, 
++                                double x, double y, double weight);
++int gsl_histogram2d_find (const gsl_histogram2d * h, 
++                          const double x, const double y, size_t * i, size_t * j);
++
++double gsl_histogram2d_get (const gsl_histogram2d * h, const size_t i, const size_t j);
++int gsl_histogram2d_get_xrange (const gsl_histogram2d * h, const size_t i,
++                                double * xlower, double * xupper);
++int gsl_histogram2d_get_yrange (const gsl_histogram2d * h, const size_t j,
++                                double * ylower, double * yupper);
++
++                                     
++double gsl_histogram2d_xmax (const gsl_histogram2d * h);
++double gsl_histogram2d_xmin (const gsl_histogram2d * h);
++size_t gsl_histogram2d_nx (const gsl_histogram2d * h);
++
++double gsl_histogram2d_ymax (const gsl_histogram2d * h);
++double gsl_histogram2d_ymin (const gsl_histogram2d * h);
++size_t gsl_histogram2d_ny (const gsl_histogram2d * h);
++
++void gsl_histogram2d_reset (gsl_histogram2d * h);
++
++gsl_histogram2d * 
++gsl_histogram2d_calloc_range(size_t nx, size_t ny, 
++                             double *xrange, double *yrange);
++
++int 
++gsl_histogram2d_set_ranges_uniform (gsl_histogram2d * h, 
++                                    double xmin, double xmax,
++                                    double ymin, double ymax);
++
++int 
++gsl_histogram2d_set_ranges (gsl_histogram2d * h, 
++                            const double xrange[], size_t xsize,
++                            const double yrange[], size_t ysize);
++
++int 
++gsl_histogram2d_memcpy(gsl_histogram2d *dest, const gsl_histogram2d *source);
++
++gsl_histogram2d *
++gsl_histogram2d_clone(const gsl_histogram2d * source);
++
++double
++gsl_histogram2d_max_val(const gsl_histogram2d *h);
++
++void
++gsl_histogram2d_max_bin (const gsl_histogram2d *h, size_t *i, size_t *j);
++
++double
++gsl_histogram2d_min_val(const gsl_histogram2d *h);
++
++void
++gsl_histogram2d_min_bin (const gsl_histogram2d *h, size_t *i, size_t *j);
++
++double
++gsl_histogram2d_xmean (const gsl_histogram2d * h);
++
++double
++gsl_histogram2d_ymean (const gsl_histogram2d * h);
++
++double
++gsl_histogram2d_xsigma (const gsl_histogram2d * h);
++
++double
++gsl_histogram2d_ysigma (const gsl_histogram2d * h);
++
++double
++gsl_histogram2d_cov (const gsl_histogram2d * h);
++
++double
++gsl_histogram2d_sum (const gsl_histogram2d *h);
++
++int 
++gsl_histogram2d_equal_bins_p(const gsl_histogram2d *h1,
++                             const gsl_histogram2d *h2) ;
++
++int
++gsl_histogram2d_add(gsl_histogram2d *h1, const gsl_histogram2d *h2);
++
++int
++gsl_histogram2d_sub(gsl_histogram2d *h1, const gsl_histogram2d *h2);
++
++int
++gsl_histogram2d_mul(gsl_histogram2d *h1, const gsl_histogram2d *h2);
++
++int
++gsl_histogram2d_div(gsl_histogram2d *h1, const gsl_histogram2d *h2);
++
++int
++gsl_histogram2d_scale(gsl_histogram2d *h, double scale);
++
++int
++gsl_histogram2d_shift(gsl_histogram2d *h, double shift);
++
++int gsl_histogram2d_fwrite (FILE * stream, const gsl_histogram2d * h) ;
++int gsl_histogram2d_fread (FILE * stream, gsl_histogram2d * h);
++int gsl_histogram2d_fprintf (FILE * stream, const gsl_histogram2d * h, 
++                             const char * range_format,
++                             const char * bin_format);
++int gsl_histogram2d_fscanf (FILE * stream, gsl_histogram2d * h);
++
++gsl_histogram2d_pdf * gsl_histogram2d_pdf_alloc (const size_t nx, const size_t ny);
++int gsl_histogram2d_pdf_init (gsl_histogram2d_pdf * p, const gsl_histogram2d * h);
++void gsl_histogram2d_pdf_free (gsl_histogram2d_pdf * p);
++int gsl_histogram2d_pdf_sample (const gsl_histogram2d_pdf * p, 
++                                   double r1, double r2, 
++                                   double * x, double * y);
++
++__END_DECLS
++
++#endif /* __GSL_HISTOGRAM2D_H__ */
++
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_uchar.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_uchar.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_uchar.h	(revision 14078)
+@@ -0,0 +1,230 @@
++/* vector/gsl_vector_uchar.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_VECTOR_UCHAR_H__
++#define __GSL_VECTOR_UCHAR_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_types.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_inline.h>
++#include <gsl/gsl_check_range.h>
++#include <gsl/gsl_block_uchar.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++typedef struct 
++{
++  size_t size;
++  size_t stride;
++  unsigned char *data;
++  gsl_block_uchar *block;
++  int owner;
++} 
++gsl_vector_uchar;
++
++typedef struct
++{
++  gsl_vector_uchar vector;
++} _gsl_vector_uchar_view;
++
++typedef _gsl_vector_uchar_view gsl_vector_uchar_view;
++
++typedef struct
++{
++  gsl_vector_uchar vector;
++} _gsl_vector_uchar_const_view;
++
++typedef const _gsl_vector_uchar_const_view gsl_vector_uchar_const_view;
++
++
++/* Allocation */
++
++gsl_vector_uchar *gsl_vector_uchar_alloc (const size_t n);
++gsl_vector_uchar *gsl_vector_uchar_calloc (const size_t n);
++
++gsl_vector_uchar *gsl_vector_uchar_alloc_from_block (gsl_block_uchar * b,
++                                                     const size_t offset, 
++                                                     const size_t n, 
++                                                     const size_t stride);
++
++gsl_vector_uchar *gsl_vector_uchar_alloc_from_vector (gsl_vector_uchar * v,
++                                                      const size_t offset, 
++                                                      const size_t n, 
++                                                      const size_t stride);
++
++void gsl_vector_uchar_free (gsl_vector_uchar * v);
++
++/* Views */
++
++_gsl_vector_uchar_view 
++gsl_vector_uchar_view_array (unsigned char *v, size_t n);
++
++_gsl_vector_uchar_view 
++gsl_vector_uchar_view_array_with_stride (unsigned char *base,
++                                         size_t stride,
++                                         size_t n);
++
++_gsl_vector_uchar_const_view 
++gsl_vector_uchar_const_view_array (const unsigned char *v, size_t n);
++
++_gsl_vector_uchar_const_view 
++gsl_vector_uchar_const_view_array_with_stride (const unsigned char *base,
++                                               size_t stride,
++                                               size_t n);
++
++_gsl_vector_uchar_view 
++gsl_vector_uchar_subvector (gsl_vector_uchar *v, 
++                            size_t i, 
++                            size_t n);
++
++_gsl_vector_uchar_view 
++gsl_vector_uchar_subvector_with_stride (gsl_vector_uchar *v, 
++                                        size_t i,
++                                        size_t stride,
++                                        size_t n);
++
++_gsl_vector_uchar_const_view 
++gsl_vector_uchar_const_subvector (const gsl_vector_uchar *v, 
++                                  size_t i, 
++                                  size_t n);
++
++_gsl_vector_uchar_const_view 
++gsl_vector_uchar_const_subvector_with_stride (const gsl_vector_uchar *v, 
++                                              size_t i, 
++                                              size_t stride,
++                                              size_t n);
++
++/* Operations */
++
++void gsl_vector_uchar_set_zero (gsl_vector_uchar * v);
++void gsl_vector_uchar_set_all (gsl_vector_uchar * v, unsigned char x);
++int gsl_vector_uchar_set_basis (gsl_vector_uchar * v, size_t i);
++
++int gsl_vector_uchar_fread (FILE * stream, gsl_vector_uchar * v);
++int gsl_vector_uchar_fwrite (FILE * stream, const gsl_vector_uchar * v);
++int gsl_vector_uchar_fscanf (FILE * stream, gsl_vector_uchar * v);
++int gsl_vector_uchar_fprintf (FILE * stream, const gsl_vector_uchar * v,
++                              const char *format);
++
++int gsl_vector_uchar_memcpy (gsl_vector_uchar * dest, const gsl_vector_uchar * src);
++
++int gsl_vector_uchar_reverse (gsl_vector_uchar * v);
++
++int gsl_vector_uchar_swap (gsl_vector_uchar * v, gsl_vector_uchar * w);
++int gsl_vector_uchar_swap_elements (gsl_vector_uchar * v, const size_t i, const size_t j);
++
++unsigned char gsl_vector_uchar_max (const gsl_vector_uchar * v);
++unsigned char gsl_vector_uchar_min (const gsl_vector_uchar * v);
++void gsl_vector_uchar_minmax (const gsl_vector_uchar * v, unsigned char * min_out, unsigned char * max_out);
++
++size_t gsl_vector_uchar_max_index (const gsl_vector_uchar * v);
++size_t gsl_vector_uchar_min_index (const gsl_vector_uchar * v);
++void gsl_vector_uchar_minmax_index (const gsl_vector_uchar * v, size_t * imin, size_t * imax);
++
++int gsl_vector_uchar_add (gsl_vector_uchar * a, const gsl_vector_uchar * b);
++int gsl_vector_uchar_sub (gsl_vector_uchar * a, const gsl_vector_uchar * b);
++int gsl_vector_uchar_mul (gsl_vector_uchar * a, const gsl_vector_uchar * b);
++int gsl_vector_uchar_div (gsl_vector_uchar * a, const gsl_vector_uchar * b);
++int gsl_vector_uchar_scale (gsl_vector_uchar * a, const double x);
++int gsl_vector_uchar_add_constant (gsl_vector_uchar * a, const double x);
++
++int gsl_vector_uchar_equal (const gsl_vector_uchar * u, 
++                            const gsl_vector_uchar * v);
++
++int gsl_vector_uchar_isnull (const gsl_vector_uchar * v);
++int gsl_vector_uchar_ispos (const gsl_vector_uchar * v);
++int gsl_vector_uchar_isneg (const gsl_vector_uchar * v);
++int gsl_vector_uchar_isnonneg (const gsl_vector_uchar * v);
++
++INLINE_DECL unsigned char gsl_vector_uchar_get (const gsl_vector_uchar * v, const size_t i);
++INLINE_DECL void gsl_vector_uchar_set (gsl_vector_uchar * v, const size_t i, unsigned char x);
++INLINE_DECL unsigned char * gsl_vector_uchar_ptr (gsl_vector_uchar * v, const size_t i);
++INLINE_DECL const unsigned char * gsl_vector_uchar_const_ptr (const gsl_vector_uchar * v, const size_t i);
++
++#ifdef HAVE_INLINE
++
++INLINE_FUN
++unsigned char
++gsl_vector_uchar_get (const gsl_vector_uchar * v, const size_t i)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(i >= v->size))
++    {
++      GSL_ERROR_VAL ("index out of range", GSL_EINVAL, 0);
++    }
++#endif
++  return v->data[i * v->stride];
++}
++
++INLINE_FUN
++void
++gsl_vector_uchar_set (gsl_vector_uchar * v, const size_t i, unsigned char x)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(i >= v->size))
++    {
++      GSL_ERROR_VOID ("index out of range", GSL_EINVAL);
++    }
++#endif
++  v->data[i * v->stride] = x;
++}
++
++INLINE_FUN
++unsigned char *
++gsl_vector_uchar_ptr (gsl_vector_uchar * v, const size_t i)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(i >= v->size))
++    {
++      GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
++    }
++#endif
++  return (unsigned char *) (v->data + i * v->stride);
++}
++
++INLINE_FUN
++const unsigned char *
++gsl_vector_uchar_const_ptr (const gsl_vector_uchar * v, const size_t i)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(i >= v->size))
++    {
++      GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
++    }
++#endif
++  return (const unsigned char *) (v->data + i * v->stride);
++}
++#endif /* HAVE_INLINE */
++
++__END_DECLS
++
++#endif /* __GSL_VECTOR_UCHAR_H__ */
++
++
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_mathieu.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_mathieu.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_mathieu.h	(revision 14078)
+@@ -0,0 +1,107 @@
++/* specfunc/gsl_sf_mathieu.h
++ * 
++ * Copyright (C) 2002 Lowell Johnson
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
++ */
++
++/* Author:  L. Johnson */
++
++#ifndef __GSL_SF_MATHIEU_H__
++#define __GSL_SF_MATHIEU_H__
++
++#include <gsl/gsl_sf_result.h>
++#include <gsl/gsl_eigen.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++#define GSL_SF_MATHIEU_COEFF 100
++
++typedef struct 
++{
++  size_t size;
++  size_t even_order;
++  size_t odd_order;
++  int extra_values;
++  double qa;   /* allow for caching of results: not implemented yet */
++  double qb;   /* allow for caching of results: not implemented yet */
++  double *aa;
++  double *bb;
++  double *dd;
++  double *ee;
++  double *tt;
++  double *e2;
++  double *zz;
++  gsl_vector *eval;
++  gsl_matrix *evec;
++  gsl_eigen_symmv_workspace *wmat;
++} gsl_sf_mathieu_workspace;
++
++
++/* Compute an array of characteristic (eigen) values from the recurrence
++   matrices for the Mathieu equations. */
++int gsl_sf_mathieu_a_array(int order_min, int order_max, double qq, gsl_sf_mathieu_workspace *work, double result_array[]);
++int gsl_sf_mathieu_b_array(int order_min, int order_max, double qq,  gsl_sf_mathieu_workspace *work, double result_array[]);
++
++/* Compute the characteristic value for a Mathieu function of order n and
++   type ntype. */
++int gsl_sf_mathieu_a(int order, double qq, gsl_sf_result *result);
++int gsl_sf_mathieu_b(int order, double qq, gsl_sf_result *result);
++
++/* Compute the Fourier coefficients for a Mathieu function. */
++int gsl_sf_mathieu_a_coeff(int order, double qq, double aa, double coeff[]);
++int gsl_sf_mathieu_b_coeff(int order, double qq, double aa, double coeff[]);
++
++/* Allocate computational storage space for eigenvalue solution. */
++gsl_sf_mathieu_workspace *gsl_sf_mathieu_alloc(const size_t nn,
++                                               const double qq);
++void gsl_sf_mathieu_free(gsl_sf_mathieu_workspace *workspace);
++
++/* Compute an angular Mathieu function. */
++int gsl_sf_mathieu_ce(int order, double qq, double zz, gsl_sf_result *result);
++int gsl_sf_mathieu_se(int order, double qq, double zz, gsl_sf_result *result);
++int gsl_sf_mathieu_ce_array(int nmin, int nmax, double qq, double zz,
++                            gsl_sf_mathieu_workspace *work,
++                            double result_array[]);
++int gsl_sf_mathieu_se_array(int nmin, int nmax, double qq, double zz,
++                            gsl_sf_mathieu_workspace *work,
++                            double result_array[]);
++
++/* Compute a radial Mathieu function. */
++int gsl_sf_mathieu_Mc(int kind, int order, double qq, double zz,
++                      gsl_sf_result *result);
++int gsl_sf_mathieu_Ms(int kind, int order, double qq, double zz,
++                      gsl_sf_result *result);
++int gsl_sf_mathieu_Mc_array(int kind, int nmin, int nmax, double qq,
++                            double zz, gsl_sf_mathieu_workspace *work,
++                            double result_array[]);
++int gsl_sf_mathieu_Ms_array(int kind, int nmin, int nmax, double qq,
++                            double zz, gsl_sf_mathieu_workspace *work,
++                            double result_array[]);
++
++
++__END_DECLS
++
++#endif /* !__GSL_SF_MATHIEU_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_heapsort.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_heapsort.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_heapsort.h	(revision 14078)
+@@ -0,0 +1,44 @@
++/* sort/gsl_heapsort.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_HEAPSORT_H__
++#define __GSL_HEAPSORT_H__
++
++#include <gsl/gsl_permutation.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++typedef int (*gsl_comparison_fn_t) (const void *, const void *);
++
++void gsl_heapsort (void * array, size_t count, size_t size, gsl_comparison_fn_t compare);
++int gsl_heapsort_index (size_t * p, const void * array, size_t count, size_t size, gsl_comparison_fn_t compare);
++
++__END_DECLS
++
++#endif /* __GSL_HEAPSORT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort.h	(revision 14078)
+@@ -0,0 +1,20 @@
++#ifndef __GSL_SORT_H__
++#define __GSL_SORT_H__
++
++#include <gsl/gsl_sort_long_double.h>
++#include <gsl/gsl_sort_double.h>
++#include <gsl/gsl_sort_float.h>
++
++#include <gsl/gsl_sort_ulong.h>
++#include <gsl/gsl_sort_long.h>
++
++#include <gsl/gsl_sort_uint.h>
++#include <gsl/gsl_sort_int.h>
++
++#include <gsl/gsl_sort_ushort.h>
++#include <gsl/gsl_sort_short.h>
++
++#include <gsl/gsl_sort_uchar.h>
++#include <gsl/gsl_sort_char.h>
++
++#endif /* __GSL_SORT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_eigen.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_eigen.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_eigen.h	(revision 14078)
+@@ -0,0 +1,347 @@
++/* eigen/gsl_eigen.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2006, 2007 Gerard Jungman, Brian Gough, Patrick Alken
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_EIGEN_H__
++#define __GSL_EIGEN_H__
++
++#include <gsl/gsl_vector.h>
++#include <gsl/gsl_matrix.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++typedef struct {
++  size_t size;
++  double * d;
++  double * sd;
++} gsl_eigen_symm_workspace;
++
++gsl_eigen_symm_workspace * gsl_eigen_symm_alloc (const size_t n);
++void gsl_eigen_symm_free (gsl_eigen_symm_workspace * w);
++int gsl_eigen_symm (gsl_matrix * A, gsl_vector * eval, gsl_eigen_symm_workspace * w);
++
++typedef struct {
++  size_t size;
++  double * d;
++  double * sd;
++  double * gc;
++  double * gs;
++} gsl_eigen_symmv_workspace;
++
++gsl_eigen_symmv_workspace * gsl_eigen_symmv_alloc (const size_t n);
++void gsl_eigen_symmv_free (gsl_eigen_symmv_workspace * w);
++int gsl_eigen_symmv (gsl_matrix * A, gsl_vector * eval, gsl_matrix * evec, gsl_eigen_symmv_workspace * w);
++
++typedef struct {
++  size_t size;
++  double * d;
++  double * sd;
++  double * tau;
++} gsl_eigen_herm_workspace;
++
++gsl_eigen_herm_workspace * gsl_eigen_herm_alloc (const size_t n);
++void gsl_eigen_herm_free (gsl_eigen_herm_workspace * w);
++int gsl_eigen_herm (gsl_matrix_complex * A, gsl_vector * eval,
++                         gsl_eigen_herm_workspace * w);
++
++typedef struct {
++  size_t size;
++  double * d;
++  double * sd;
++  double * tau;
++  double * gc;
++  double * gs;
++} gsl_eigen_hermv_workspace;
++
++gsl_eigen_hermv_workspace * gsl_eigen_hermv_alloc (const size_t n);
++void gsl_eigen_hermv_free (gsl_eigen_hermv_workspace * w);
++int gsl_eigen_hermv (gsl_matrix_complex * A, gsl_vector * eval, 
++                           gsl_matrix_complex * evec,
++                           gsl_eigen_hermv_workspace * w);
++
++typedef struct {
++  size_t size;           /* matrix size */
++  size_t max_iterations; /* max iterations since last eigenvalue found */
++  size_t n_iter;         /* number of iterations since last eigenvalue found */
++  size_t n_evals;        /* number of eigenvalues found so far */
++
++  int compute_t;         /* compute Schur form T = Z^t A Z */
++
++  gsl_matrix *H;         /* pointer to Hessenberg matrix */
++  gsl_matrix *Z;         /* pointer to Schur vector matrix */
++} gsl_eigen_francis_workspace;
++
++gsl_eigen_francis_workspace * gsl_eigen_francis_alloc (void);
++void gsl_eigen_francis_free (gsl_eigen_francis_workspace * w);
++void gsl_eigen_francis_T (const int compute_t,
++                          gsl_eigen_francis_workspace * w);
++int gsl_eigen_francis (gsl_matrix * H, gsl_vector_complex * eval,
++                       gsl_eigen_francis_workspace * w);
++int gsl_eigen_francis_Z (gsl_matrix * H, gsl_vector_complex * eval,
++                         gsl_matrix * Z,
++                         gsl_eigen_francis_workspace * w);
++
++typedef struct {
++  size_t size;                 /* size of matrices */
++  gsl_vector *diag;            /* diagonal matrix elements from balancing */
++  gsl_vector *tau;             /* Householder coefficients */
++  gsl_matrix *Z;               /* pointer to Z matrix */
++  int do_balance;              /* perform balancing transformation? */
++  size_t n_evals;              /* number of eigenvalues found */
++
++  gsl_eigen_francis_workspace *francis_workspace_p;
++} gsl_eigen_nonsymm_workspace;
++
++gsl_eigen_nonsymm_workspace * gsl_eigen_nonsymm_alloc (const size_t n);
++void gsl_eigen_nonsymm_free (gsl_eigen_nonsymm_workspace * w);
++void gsl_eigen_nonsymm_params (const int compute_t, const int balance,
++                               gsl_eigen_nonsymm_workspace *w);
++int gsl_eigen_nonsymm (gsl_matrix * A, gsl_vector_complex * eval,
++                       gsl_eigen_nonsymm_workspace * w);
++int gsl_eigen_nonsymm_Z (gsl_matrix * A, gsl_vector_complex * eval,
++                         gsl_matrix * Z, gsl_eigen_nonsymm_workspace * w);
++
++typedef struct {
++  size_t size;                 /* size of matrices */
++  gsl_vector *work;            /* scratch workspace */
++  gsl_vector *work2;           /* scratch workspace */
++  gsl_vector *work3;           /* scratch workspace */
++
++  gsl_matrix *Z;               /* pointer to Schur vectors */
++
++  gsl_eigen_nonsymm_workspace *nonsymm_workspace_p;
++} gsl_eigen_nonsymmv_workspace;
++
++gsl_eigen_nonsymmv_workspace * gsl_eigen_nonsymmv_alloc (const size_t n);
++void gsl_eigen_nonsymmv_free (gsl_eigen_nonsymmv_workspace * w);
++void gsl_eigen_nonsymmv_params (const int balance,
++                                gsl_eigen_nonsymmv_workspace *w);
++int gsl_eigen_nonsymmv (gsl_matrix * A, gsl_vector_complex * eval,
++                        gsl_matrix_complex * evec,
++                        gsl_eigen_nonsymmv_workspace * w);
++int gsl_eigen_nonsymmv_Z (gsl_matrix * A, gsl_vector_complex * eval,
++                          gsl_matrix_complex * evec, gsl_matrix * Z,
++                          gsl_eigen_nonsymmv_workspace * w);
++
++typedef struct {
++  size_t size;            /* size of matrices */
++  gsl_eigen_symm_workspace *symm_workspace_p;
++} gsl_eigen_gensymm_workspace;
++
++gsl_eigen_gensymm_workspace * gsl_eigen_gensymm_alloc (const size_t n);
++void gsl_eigen_gensymm_free (gsl_eigen_gensymm_workspace * w);
++int gsl_eigen_gensymm (gsl_matrix * A, gsl_matrix * B,
++                       gsl_vector * eval, gsl_eigen_gensymm_workspace * w);
++int gsl_eigen_gensymm_standardize (gsl_matrix * A, const gsl_matrix * B);
++
++typedef struct {
++  size_t size;            /* size of matrices */
++  gsl_eigen_symmv_workspace *symmv_workspace_p;
++} gsl_eigen_gensymmv_workspace;
++
++gsl_eigen_gensymmv_workspace * gsl_eigen_gensymmv_alloc (const size_t n);
++void gsl_eigen_gensymmv_free (gsl_eigen_gensymmv_workspace * w);
++int gsl_eigen_gensymmv (gsl_matrix * A, gsl_matrix * B,
++                        gsl_vector * eval, gsl_matrix * evec,
++                        gsl_eigen_gensymmv_workspace * w);
++
++typedef struct {
++  size_t size;            /* size of matrices */
++  gsl_eigen_herm_workspace *herm_workspace_p;
++} gsl_eigen_genherm_workspace;
++
++gsl_eigen_genherm_workspace * gsl_eigen_genherm_alloc (const size_t n);
++void gsl_eigen_genherm_free (gsl_eigen_genherm_workspace * w);
++int gsl_eigen_genherm (gsl_matrix_complex * A, gsl_matrix_complex * B,
++                       gsl_vector * eval, gsl_eigen_genherm_workspace * w);
++int gsl_eigen_genherm_standardize (gsl_matrix_complex * A,
++                                   const gsl_matrix_complex * B);
++
++typedef struct {
++  size_t size;            /* size of matrices */
++  gsl_eigen_hermv_workspace *hermv_workspace_p;
++} gsl_eigen_genhermv_workspace;
++
++gsl_eigen_genhermv_workspace * gsl_eigen_genhermv_alloc (const size_t n);
++void gsl_eigen_genhermv_free (gsl_eigen_genhermv_workspace * w);
++int gsl_eigen_genhermv (gsl_matrix_complex * A, gsl_matrix_complex * B,
++                        gsl_vector * eval, gsl_matrix_complex * evec,
++                        gsl_eigen_genhermv_workspace * w);
++
++typedef struct {
++  size_t size;            /* size of matrices */
++  gsl_vector *work;       /* scratch workspace */
++
++  size_t n_evals;         /* number of eigenvalues found */
++  size_t max_iterations;  /* maximum QZ iterations allowed */
++  size_t n_iter;          /* number of iterations since last eigenvalue found */
++  double eshift;          /* exceptional shift counter */
++
++  int needtop;            /* need to compute top index? */
++
++  double atol;            /* tolerance for splitting A matrix */
++  double btol;            /* tolerance for splitting B matrix */
++
++  double ascale;          /* scaling factor for shifts */
++  double bscale;          /* scaling factor for shifts */
++
++  gsl_matrix *H;          /* pointer to hessenberg matrix */
++  gsl_matrix *R;          /* pointer to upper triangular matrix */
++
++  int compute_s;          /* compute generalized Schur form S */
++  int compute_t;          /* compute generalized Schur form T */
++
++  gsl_matrix *Q;          /* pointer to left Schur vectors */
++  gsl_matrix *Z;          /* pointer to right Schur vectors */
++} gsl_eigen_gen_workspace;
++
++gsl_eigen_gen_workspace * gsl_eigen_gen_alloc (const size_t n);
++void gsl_eigen_gen_free (gsl_eigen_gen_workspace * w);
++void gsl_eigen_gen_params (const int compute_s, const int compute_t,
++                           const int balance, gsl_eigen_gen_workspace * w);
++int gsl_eigen_gen (gsl_matrix * A, gsl_matrix * B,
++                   gsl_vector_complex * alpha, gsl_vector * beta,
++                   gsl_eigen_gen_workspace * w);
++int gsl_eigen_gen_QZ (gsl_matrix * A, gsl_matrix * B,
++                      gsl_vector_complex * alpha, gsl_vector * beta,
++                      gsl_matrix * Q, gsl_matrix * Z,
++                      gsl_eigen_gen_workspace * w);
++
++typedef struct {
++  size_t size;            /* size of matrices */
++
++  gsl_vector *work1;      /* 1-norm of columns of A */
++  gsl_vector *work2;      /* 1-norm of columns of B */
++  gsl_vector *work3;      /* real part of eigenvector */
++  gsl_vector *work4;      /* imag part of eigenvector */
++  gsl_vector *work5;      /* real part of back-transformed eigenvector */
++  gsl_vector *work6;      /* imag part of back-transformed eigenvector */
++
++  gsl_matrix *Q;          /* pointer to left Schur vectors */
++  gsl_matrix *Z;          /* pointer to right Schur vectors */
++
++  gsl_eigen_gen_workspace *gen_workspace_p;
++} gsl_eigen_genv_workspace;
++
++gsl_eigen_genv_workspace * gsl_eigen_genv_alloc (const size_t n);
++void gsl_eigen_genv_free (gsl_eigen_genv_workspace * w);
++int gsl_eigen_genv (gsl_matrix * A, gsl_matrix * B,
++                    gsl_vector_complex * alpha, gsl_vector * beta,
++                    gsl_matrix_complex * evec,
++                    gsl_eigen_genv_workspace * w);
++int gsl_eigen_genv_QZ (gsl_matrix * A, gsl_matrix * B,
++                       gsl_vector_complex * alpha, gsl_vector * beta,
++                       gsl_matrix_complex * evec,
++                       gsl_matrix * Q, gsl_matrix * Z,
++                       gsl_eigen_genv_workspace * w);
++
++
++
++typedef enum {
++  GSL_EIGEN_SORT_VAL_ASC,
++  GSL_EIGEN_SORT_VAL_DESC,
++  GSL_EIGEN_SORT_ABS_ASC,
++  GSL_EIGEN_SORT_ABS_DESC
++}
++gsl_eigen_sort_t;
++
++/* Sort eigensystem results based on eigenvalues.
++ * Sorts in order of increasing value or increasing
++ * absolute value.
++ *
++ * exceptions: GSL_EBADLEN
++ */
++
++int gsl_eigen_symmv_sort(gsl_vector * eval, gsl_matrix * evec,
++                         gsl_eigen_sort_t sort_type);
++
++int gsl_eigen_hermv_sort(gsl_vector * eval, gsl_matrix_complex * evec,
++                         gsl_eigen_sort_t sort_type);
++
++int gsl_eigen_nonsymmv_sort(gsl_vector_complex * eval,
++                            gsl_matrix_complex * evec,
++                            gsl_eigen_sort_t sort_type);
++
++int gsl_eigen_gensymmv_sort (gsl_vector * eval, gsl_matrix * evec, 
++                             gsl_eigen_sort_t sort_type);
++
++int gsl_eigen_genhermv_sort (gsl_vector * eval, gsl_matrix_complex * evec, 
++                             gsl_eigen_sort_t sort_type);
++
++int gsl_eigen_genv_sort (gsl_vector_complex * alpha, gsl_vector * beta,
++                         gsl_matrix_complex * evec,
++                         gsl_eigen_sort_t sort_type);
++
++/* Prototypes for the schur module */
++
++int gsl_schur_gen_eigvals(const gsl_matrix *A, const gsl_matrix *B,
++                          double *wr1, double *wr2, double *wi,
++                          double *scale1, double *scale2);
++
++int gsl_schur_solve_equation(double ca, const gsl_matrix *A, double z,
++                             double d1, double d2, const gsl_vector *b,
++                             gsl_vector *x, double *s, double *xnorm,
++                             double smin);
++
++int gsl_schur_solve_equation_z(double ca, const gsl_matrix *A,
++                               gsl_complex *z, double d1, double d2,
++                               const gsl_vector_complex *b,
++                               gsl_vector_complex *x, double *s,
++                               double *xnorm, double smin);
++
++
++/* The following functions are obsolete: */
++
++/* Eigensolve by Jacobi Method
++ *
++ * The data in the matrix input is destroyed.
++ *
++ * exceptions: 
++ */
++int
++gsl_eigen_jacobi(gsl_matrix * matrix,
++                      gsl_vector * eval,
++                      gsl_matrix * evec,
++                      unsigned int max_rot, 
++                      unsigned int * nrot);
++
++
++/* Invert by Jacobi Method
++ *
++ * exceptions: 
++ */
++int
++gsl_eigen_invert_jacobi(const gsl_matrix * matrix,
++                             gsl_matrix * ainv,
++                             unsigned int max_rot);
++
++
++
++__END_DECLS
++
++#endif /* __GSL_EIGEN_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_long.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_long.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_long.h	(revision 14078)
+@@ -0,0 +1,51 @@
++/* sort/gsl_sort_vector_long.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_SORT_VECTOR_LONG_H__
++#define __GSL_SORT_VECTOR_LONG_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_permutation.h>
++#include <gsl/gsl_vector_long.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++void gsl_sort_vector_long (gsl_vector_long * v);
++int gsl_sort_vector_long_index (gsl_permutation * p, const gsl_vector_long * v);
++
++int gsl_sort_vector_long_smallest (long * dest, const size_t k, const gsl_vector_long * v);
++int gsl_sort_vector_long_largest (long * dest, const size_t k, const gsl_vector_long * v);
++
++int gsl_sort_vector_long_smallest_index (size_t * p, const size_t k, const gsl_vector_long * v);
++int gsl_sort_vector_long_largest_index (size_t * p, const size_t k, const gsl_vector_long * v);
++
++__END_DECLS
++
++#endif /* __GSL_SORT_VECTOR_LONG_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_spline.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_spline.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_spline.h	(revision 14078)
+@@ -0,0 +1,101 @@
++/* interpolation/gsl_spline.h
++ * 
++ * Copyright (C) 2001, 2007 Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_SPLINE_H__
++#define __GSL_SPLINE_H__
++#include <stdlib.h>
++#include <gsl/gsl_interp.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++
++/* general interpolation object */
++typedef struct {
++  gsl_interp * interp;
++  double  * x;
++  double  * y;
++  size_t  size;
++} gsl_spline;
++
++gsl_spline *
++gsl_spline_alloc(const gsl_interp_type * T, size_t size);
++     
++int
++gsl_spline_init(gsl_spline * spline, const double xa[], const double ya[], size_t size);
++
++const char * gsl_spline_name(const gsl_spline * spline);
++unsigned int gsl_spline_min_size(const gsl_spline * spline);
++
++
++int
++gsl_spline_eval_e(const gsl_spline * spline, double x,
++                  gsl_interp_accel * a, double * y);
++
++double
++gsl_spline_eval(const gsl_spline * spline, double x, gsl_interp_accel * a);
++
++int
++gsl_spline_eval_deriv_e(const gsl_spline * spline,
++                        double x,
++                        gsl_interp_accel * a,
++                        double * y);
++
++double
++gsl_spline_eval_deriv(const gsl_spline * spline,
++                      double x,
++                      gsl_interp_accel * a);
++
++int
++gsl_spline_eval_deriv2_e(const gsl_spline * spline,
++                         double x,
++                         gsl_interp_accel * a,
++                         double * y);
++
++double
++gsl_spline_eval_deriv2(const gsl_spline * spline,
++                       double x,
++                       gsl_interp_accel * a);
++
++int
++gsl_spline_eval_integ_e(const gsl_spline * spline,
++                        double a, double b,
++                        gsl_interp_accel * acc,
++                        double * y);
++
++double
++gsl_spline_eval_integ(const gsl_spline * spline,
++                      double a, double b,
++                      gsl_interp_accel * acc);
++
++void
++gsl_spline_free(gsl_spline * spline);
++
++__END_DECLS
++
++#endif /* __GSL_INTERP_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_bspline.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_bspline.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_bspline.h	(revision 14078)
+@@ -0,0 +1,114 @@
++/* bspline/gsl_bspline.h
++ *
++ * Copyright (C) 2006 Patrick Alken
++ * Copyright (C) 2008 Rhys Ulerich
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_BSPLINE_H__
++#define __GSL_BSPLINE_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_math.h>
++#include <gsl/gsl_vector.h>
++#include <gsl/gsl_matrix.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++typedef struct
++{
++    size_t k; /* spline order */
++    size_t km1; /* k - 1 (polynomial order) */
++    size_t l; /* number of polynomial pieces on interval */
++    size_t nbreak; /* number of breakpoints (l + 1) */
++    size_t n; /* number of bspline basis functions (l + k - 1) */
++
++    gsl_vector *knots; /* knots vector */
++    gsl_vector *deltal; /* left delta */
++    gsl_vector *deltar; /* right delta */
++    gsl_vector *B; /* temporary spline results */
++} gsl_bspline_workspace;
++
++typedef struct
++{
++    size_t k; /* spline order */
++    gsl_matrix *A; /* work matrix */
++    gsl_matrix *dB; /* temporary derivative results */
++} gsl_bspline_deriv_workspace;
++
++gsl_bspline_workspace *
++gsl_bspline_alloc(const size_t k, const size_t nbreak);
++
++void gsl_bspline_free(gsl_bspline_workspace *w);
++
++size_t gsl_bspline_ncoeffs(gsl_bspline_workspace * w);
++size_t gsl_bspline_order(gsl_bspline_workspace * w);
++size_t gsl_bspline_nbreak(gsl_bspline_workspace * w);
++double gsl_bspline_breakpoint(size_t i, gsl_bspline_workspace * w);
++double gsl_bspline_greville_abscissa(size_t i, gsl_bspline_workspace *w);
++
++int
++gsl_bspline_knots(const gsl_vector *breakpts, gsl_bspline_workspace *w);
++
++int gsl_bspline_knots_uniform(const double a, const double b,
++                              gsl_bspline_workspace *w);
++
++int
++gsl_bspline_eval(const double x, gsl_vector *B, 
++                 gsl_bspline_workspace *w);
++
++int
++gsl_bspline_eval_nonzero(const double x,
++                         gsl_vector *Bk,
++                         size_t *istart,
++                         size_t *iend,
++                         gsl_bspline_workspace *w);
++
++gsl_bspline_deriv_workspace *
++gsl_bspline_deriv_alloc(const size_t k);
++
++void
++gsl_bspline_deriv_free(gsl_bspline_deriv_workspace *w);
++
++int
++gsl_bspline_deriv_eval(const double x,
++                       const size_t nderiv,
++                       gsl_matrix *dB,
++                       gsl_bspline_workspace *w,
++                       gsl_bspline_deriv_workspace *dw);
++
++int
++gsl_bspline_deriv_eval_nonzero(const double x,
++                               const size_t nderiv,
++                               gsl_matrix *dB,
++                               size_t *istart,
++                               size_t *iend,
++                               gsl_bspline_workspace *w,
++                               gsl_bspline_deriv_workspace *dw);
++
++__END_DECLS
++
++#endif /* __GSL_BSPLINE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_trig.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_trig.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_trig.h	(revision 14078)
+@@ -0,0 +1,152 @@
++/* specfunc/gsl_sf_trig.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++/* Author:  G. Jungman */
++
++#ifndef __GSL_SF_TRIG_H__
++#define __GSL_SF_TRIG_H__
++
++#include <gsl/gsl_sf_result.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++
++/* Sin(x) with GSL semantics. This is actually important
++ * because we want to control the error estimate, and trying
++ * to guess the error for the standard library implementation
++ * every time it is used would be a little goofy.
++ */
++int gsl_sf_sin_e(double x, gsl_sf_result * result);
++double gsl_sf_sin(const double x);
++
++
++/* Cos(x) with GSL semantics.
++ */
++int gsl_sf_cos_e(double x, gsl_sf_result * result);
++double gsl_sf_cos(const double x);
++
++
++/* Hypot(x,y) with GSL semantics.
++ */
++int gsl_sf_hypot_e(const double x, const double y, gsl_sf_result * result);
++double gsl_sf_hypot(const double x, const double y);
++
++
++/* Sin(z) for complex z
++ *
++ * exceptions: GSL_EOVRFLW
++ */
++int gsl_sf_complex_sin_e(const double zr, const double zi, gsl_sf_result * szr, gsl_sf_result * szi);
++
++
++/* Cos(z) for complex z
++ *
++ * exceptions: GSL_EOVRFLW
++ */
++int gsl_sf_complex_cos_e(const double zr, const double zi, gsl_sf_result * czr, gsl_sf_result * czi);
++
++
++/* Log(Sin(z)) for complex z
++ *
++ * exceptions: GSL_EDOM, GSL_ELOSS
++ */
++int gsl_sf_complex_logsin_e(const double zr, const double zi, gsl_sf_result * lszr, gsl_sf_result * lszi);
++
++
++/* Sinc(x) = sin(pi x) / (pi x)
++ *
++ * exceptions: none
++ */
++int gsl_sf_sinc_e(double x, gsl_sf_result * result);
++double gsl_sf_sinc(const double x);
++
++
++/* Log(Sinh(x)), x > 0
++ *
++ * exceptions: GSL_EDOM
++ */
++int gsl_sf_lnsinh_e(const double x, gsl_sf_result * result);
++double gsl_sf_lnsinh(const double x);
++
++
++/* Log(Cosh(x))
++ *
++ * exceptions: none
++ */
++int gsl_sf_lncosh_e(const double x, gsl_sf_result * result);
++double gsl_sf_lncosh(const double x);
++
++
++/* Convert polar to rectlinear coordinates.
++ *
++ * exceptions: GSL_ELOSS
++ */
++int gsl_sf_polar_to_rect(const double r, const double theta, gsl_sf_result * x, gsl_sf_result * y);
++
++/* Convert rectilinear to polar coordinates.
++ * return argument in range [-pi, pi]
++ *
++ * exceptions: GSL_EDOM
++ */
++int gsl_sf_rect_to_polar(const double x, const double y, gsl_sf_result * r, gsl_sf_result * theta);
++
++/* Sin(x) for quantity with an associated error.
++ */
++int gsl_sf_sin_err_e(const double x, const double dx, gsl_sf_result * result);
++
++
++/* Cos(x) for quantity with an associated error.
++ */
++int gsl_sf_cos_err_e(const double x, const double dx, gsl_sf_result * result);
++
++
++/* Force an angle to lie in the range (-pi,pi].
++ *
++ * exceptions: GSL_ELOSS
++ */
++int gsl_sf_angle_restrict_symm_e(double * theta);
++double gsl_sf_angle_restrict_symm(const double theta);
++
++
++/* Force an angle to lie in the range [0, 2pi)
++ *
++ * exceptions: GSL_ELOSS
++ */
++int gsl_sf_angle_restrict_pos_e(double * theta);
++double gsl_sf_angle_restrict_pos(const double theta);
++
++
++int gsl_sf_angle_restrict_symm_err_e(const double theta, gsl_sf_result * result);
++
++int gsl_sf_angle_restrict_pos_err_e(const double theta, gsl_sf_result * result);
++
++
++__END_DECLS
++
++#endif /* __GSL_SF_TRIG_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_elementary.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_elementary.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_elementary.h	(revision 14078)
+@@ -0,0 +1,57 @@
++/* specfunc/gsl_sf_elementary.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++/* Author:  G. Jungman */
++
++/* Miscellaneous elementary functions and operations.
++ */
++#ifndef __GSL_SF_ELEMENTARY_H__
++#define __GSL_SF_ELEMENTARY_H__
++
++#include <gsl/gsl_sf_result.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++
++/* Multiplication.
++ *
++ * exceptions: GSL_EOVRFLW, GSL_EUNDRFLW
++ */
++int gsl_sf_multiply_e(const double x, const double y, gsl_sf_result * result);
++double gsl_sf_multiply(const double x, const double y);
++
++
++/* Multiplication of quantities with associated errors.
++ */
++int gsl_sf_multiply_err_e(const double x, const double dx, const double y, const double dy, gsl_sf_result * result);
++
++
++__END_DECLS
++
++#endif /* __GSL_SF_ELEMENTARY_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_float.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_float.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_float.h	(revision 14078)
+@@ -0,0 +1,51 @@
++/* sort/gsl_sort_vector_float.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_SORT_VECTOR_FLOAT_H__
++#define __GSL_SORT_VECTOR_FLOAT_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_permutation.h>
++#include <gsl/gsl_vector_float.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++void gsl_sort_vector_float (gsl_vector_float * v);
++int gsl_sort_vector_float_index (gsl_permutation * p, const gsl_vector_float * v);
++
++int gsl_sort_vector_float_smallest (float * dest, const size_t k, const gsl_vector_float * v);
++int gsl_sort_vector_float_largest (float * dest, const size_t k, const gsl_vector_float * v);
++
++int gsl_sort_vector_float_smallest_index (size_t * p, const size_t k, const gsl_vector_float * v);
++int gsl_sort_vector_float_largest_index (size_t * p, const size_t k, const gsl_vector_float * v);
++
++__END_DECLS
++
++#endif /* __GSL_SORT_VECTOR_FLOAT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_laguerre.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_laguerre.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_laguerre.h	(revision 14078)
+@@ -0,0 +1,68 @@
++/* specfunc/gsl_sf_laguerre.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++/* Author:  G. Jungman */
++
++#ifndef __GSL_SF_LAGUERRE_H__
++#define __GSL_SF_LAGUERRE_H__
++
++#include <gsl/gsl_sf_result.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++
++/* L^a_n(x) = (a+1)_n / n! 1F1(-n,a+1,x) */
++
++
++/* Evaluate generalized Laguerre polynomials
++ * using explicit representations.
++ *
++ * exceptions: none
++ */
++int gsl_sf_laguerre_1_e(const double a, const double x, gsl_sf_result * result);
++int gsl_sf_laguerre_2_e(const double a, const double x, gsl_sf_result * result);
++int gsl_sf_laguerre_3_e(const double a, const double x, gsl_sf_result * result);
++double gsl_sf_laguerre_1(double a, double x);
++double gsl_sf_laguerre_2(double a, double x);
++double gsl_sf_laguerre_3(double a, double x);
++
++
++/* Evaluate generalized Laguerre polynomials.
++ *
++ * a > -1.0
++ * n >= 0
++ * exceptions: GSL_EDOM
++ */
++int     gsl_sf_laguerre_n_e(const int n, const double a, const double x, gsl_sf_result * result);
++double     gsl_sf_laguerre_n(int n, double a, double x);
++
++
++__END_DECLS
++
++#endif /* __GSL_SF_LAGUERRE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_ushort.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_ushort.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_ushort.h	(revision 14078)
+@@ -0,0 +1,65 @@
++/* block/gsl_block_ushort.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_BLOCK_USHORT_H__
++#define __GSL_BLOCK_USHORT_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++struct gsl_block_ushort_struct
++{
++  size_t size;
++  unsigned short *data;
++};
++
++typedef struct gsl_block_ushort_struct gsl_block_ushort;
++
++gsl_block_ushort *gsl_block_ushort_alloc (const size_t n);
++gsl_block_ushort *gsl_block_ushort_calloc (const size_t n);
++void gsl_block_ushort_free (gsl_block_ushort * b);
++
++int gsl_block_ushort_fread (FILE * stream, gsl_block_ushort * b);
++int gsl_block_ushort_fwrite (FILE * stream, const gsl_block_ushort * b);
++int gsl_block_ushort_fscanf (FILE * stream, gsl_block_ushort * b);
++int gsl_block_ushort_fprintf (FILE * stream, const gsl_block_ushort * b, const char *format);
++
++int gsl_block_ushort_raw_fread (FILE * stream, unsigned short * b, const size_t n, const size_t stride);
++int gsl_block_ushort_raw_fwrite (FILE * stream, const unsigned short * b, const size_t n, const size_t stride);
++int gsl_block_ushort_raw_fscanf (FILE * stream, unsigned short * b, const size_t n, const size_t stride);
++int gsl_block_ushort_raw_fprintf (FILE * stream, const unsigned short * b, const size_t n, const size_t stride, const char *format);
++
++size_t gsl_block_ushort_size (const gsl_block_ushort * b);
++unsigned short * gsl_block_ushort_data (const gsl_block_ushort * b);
++
++__END_DECLS
++
++#endif /* __GSL_BLOCK_USHORT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_const_mks.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_const_mks.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_const_mks.h	(revision 14078)
+@@ -0,0 +1,126 @@
++/* const/gsl_const_mks.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
++ * 2006, 2007, 2008, 2009 Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_CONST_MKS__
++#define __GSL_CONST_MKS__
++
++#define GSL_CONST_MKS_SPEED_OF_LIGHT (2.99792458e8) /* m / s */
++#define GSL_CONST_MKS_GRAVITATIONAL_CONSTANT (6.673e-11) /* m^3 / kg s^2 */
++#define GSL_CONST_MKS_PLANCKS_CONSTANT_H (6.62606896e-34) /* kg m^2 / s */
++#define GSL_CONST_MKS_PLANCKS_CONSTANT_HBAR (1.05457162825e-34) /* kg m^2 / s */
++#define GSL_CONST_MKS_ASTRONOMICAL_UNIT (1.49597870691e11) /* m */
++#define GSL_CONST_MKS_LIGHT_YEAR (9.46053620707e15) /* m */
++#define GSL_CONST_MKS_PARSEC (3.08567758135e16) /* m */
++#define GSL_CONST_MKS_GRAV_ACCEL (9.80665e0) /* m / s^2 */
++#define GSL_CONST_MKS_ELECTRON_VOLT (1.602176487e-19) /* kg m^2 / s^2 */
++#define GSL_CONST_MKS_MASS_ELECTRON (9.10938188e-31) /* kg */
++#define GSL_CONST_MKS_MASS_MUON (1.88353109e-28) /* kg */
++#define GSL_CONST_MKS_MASS_PROTON (1.67262158e-27) /* kg */
++#define GSL_CONST_MKS_MASS_NEUTRON (1.67492716e-27) /* kg */
++#define GSL_CONST_MKS_RYDBERG (2.17987196968e-18) /* kg m^2 / s^2 */
++#define GSL_CONST_MKS_BOLTZMANN (1.3806504e-23) /* kg m^2 / K s^2 */
++#define GSL_CONST_MKS_MOLAR_GAS (8.314472e0) /* kg m^2 / K mol s^2 */
++#define GSL_CONST_MKS_STANDARD_GAS_VOLUME (2.2710981e-2) /* m^3 / mol */
++#define GSL_CONST_MKS_MINUTE (6e1) /* s */
++#define GSL_CONST_MKS_HOUR (3.6e3) /* s */
++#define GSL_CONST_MKS_DAY (8.64e4) /* s */
++#define GSL_CONST_MKS_WEEK (6.048e5) /* s */
++#define GSL_CONST_MKS_INCH (2.54e-2) /* m */
++#define GSL_CONST_MKS_FOOT (3.048e-1) /* m */
++#define GSL_CONST_MKS_YARD (9.144e-1) /* m */
++#define GSL_CONST_MKS_MILE (1.609344e3) /* m */
++#define GSL_CONST_MKS_NAUTICAL_MILE (1.852e3) /* m */
++#define GSL_CONST_MKS_FATHOM (1.8288e0) /* m */
++#define GSL_CONST_MKS_MIL (2.54e-5) /* m */
++#define GSL_CONST_MKS_POINT (3.52777777778e-4) /* m */
++#define GSL_CONST_MKS_TEXPOINT (3.51459803515e-4) /* m */
++#define GSL_CONST_MKS_MICRON (1e-6) /* m */
++#define GSL_CONST_MKS_ANGSTROM (1e-10) /* m */
++#define GSL_CONST_MKS_HECTARE (1e4) /* m^2 */
++#define GSL_CONST_MKS_ACRE (4.04685642241e3) /* m^2 */
++#define GSL_CONST_MKS_BARN (1e-28) /* m^2 */
++#define GSL_CONST_MKS_LITER (1e-3) /* m^3 */
++#define GSL_CONST_MKS_US_GALLON (3.78541178402e-3) /* m^3 */
++#define GSL_CONST_MKS_QUART (9.46352946004e-4) /* m^3 */
++#define GSL_CONST_MKS_PINT (4.73176473002e-4) /* m^3 */
++#define GSL_CONST_MKS_CUP (2.36588236501e-4) /* m^3 */
++#define GSL_CONST_MKS_FLUID_OUNCE (2.95735295626e-5) /* m^3 */
++#define GSL_CONST_MKS_TABLESPOON (1.47867647813e-5) /* m^3 */
++#define GSL_CONST_MKS_TEASPOON (4.92892159375e-6) /* m^3 */
++#define GSL_CONST_MKS_CANADIAN_GALLON (4.54609e-3) /* m^3 */
++#define GSL_CONST_MKS_UK_GALLON (4.546092e-3) /* m^3 */
++#define GSL_CONST_MKS_MILES_PER_HOUR (4.4704e-1) /* m / s */
++#define GSL_CONST_MKS_KILOMETERS_PER_HOUR (2.77777777778e-1) /* m / s */
++#define GSL_CONST_MKS_KNOT (5.14444444444e-1) /* m / s */
++#define GSL_CONST_MKS_POUND_MASS (4.5359237e-1) /* kg */
++#define GSL_CONST_MKS_OUNCE_MASS (2.8349523125e-2) /* kg */
++#define GSL_CONST_MKS_TON (9.0718474e2) /* kg */
++#define GSL_CONST_MKS_METRIC_TON (1e3) /* kg */
++#define GSL_CONST_MKS_UK_TON (1.0160469088e3) /* kg */
++#define GSL_CONST_MKS_TROY_OUNCE (3.1103475e-2) /* kg */
++#define GSL_CONST_MKS_CARAT (2e-4) /* kg */
++#define GSL_CONST_MKS_UNIFIED_ATOMIC_MASS (1.660538782e-27) /* kg */
++#define GSL_CONST_MKS_GRAM_FORCE (9.80665e-3) /* kg m / s^2 */
++#define GSL_CONST_MKS_POUND_FORCE (4.44822161526e0) /* kg m / s^2 */
++#define GSL_CONST_MKS_KILOPOUND_FORCE (4.44822161526e3) /* kg m / s^2 */
++#define GSL_CONST_MKS_POUNDAL (1.38255e-1) /* kg m / s^2 */
++#define GSL_CONST_MKS_CALORIE (4.1868e0) /* kg m^2 / s^2 */
++#define GSL_CONST_MKS_BTU (1.05505585262e3) /* kg m^2 / s^2 */
++#define GSL_CONST_MKS_THERM (1.05506e8) /* kg m^2 / s^2 */
++#define GSL_CONST_MKS_HORSEPOWER (7.457e2) /* kg m^2 / s^3 */
++#define GSL_CONST_MKS_BAR (1e5) /* kg / m s^2 */
++#define GSL_CONST_MKS_STD_ATMOSPHERE (1.01325e5) /* kg / m s^2 */
++#define GSL_CONST_MKS_TORR (1.33322368421e2) /* kg / m s^2 */
++#define GSL_CONST_MKS_METER_OF_MERCURY (1.33322368421e5) /* kg / m s^2 */
++#define GSL_CONST_MKS_INCH_OF_MERCURY (3.38638815789e3) /* kg / m s^2 */
++#define GSL_CONST_MKS_INCH_OF_WATER (2.490889e2) /* kg / m s^2 */
++#define GSL_CONST_MKS_PSI (6.89475729317e3) /* kg / m s^2 */
++#define GSL_CONST_MKS_POISE (1e-1) /* kg m^-1 s^-1 */
++#define GSL_CONST_MKS_STOKES (1e-4) /* m^2 / s */
++#define GSL_CONST_MKS_STILB (1e4) /* cd / m^2 */
++#define GSL_CONST_MKS_LUMEN (1e0) /* cd sr */
++#define GSL_CONST_MKS_LUX (1e0) /* cd sr / m^2 */
++#define GSL_CONST_MKS_PHOT (1e4) /* cd sr / m^2 */
++#define GSL_CONST_MKS_FOOTCANDLE (1.076e1) /* cd sr / m^2 */
++#define GSL_CONST_MKS_LAMBERT (1e4) /* cd sr / m^2 */
++#define GSL_CONST_MKS_FOOTLAMBERT (1.07639104e1) /* cd sr / m^2 */
++#define GSL_CONST_MKS_CURIE (3.7e10) /* 1 / s */
++#define GSL_CONST_MKS_ROENTGEN (2.58e-4) /* A s / kg */
++#define GSL_CONST_MKS_RAD (1e-2) /* m^2 / s^2 */
++#define GSL_CONST_MKS_SOLAR_MASS (1.98892e30) /* kg */
++#define GSL_CONST_MKS_BOHR_RADIUS (5.291772083e-11) /* m */
++#define GSL_CONST_MKS_NEWTON (1e0) /* kg m / s^2 */
++#define GSL_CONST_MKS_DYNE (1e-5) /* kg m / s^2 */
++#define GSL_CONST_MKS_JOULE (1e0) /* kg m^2 / s^2 */
++#define GSL_CONST_MKS_ERG (1e-7) /* kg m^2 / s^2 */
++#define GSL_CONST_MKS_STEFAN_BOLTZMANN_CONSTANT (5.67040047374e-8) /* kg / K^4 s^3 */
++#define GSL_CONST_MKS_THOMSON_CROSS_SECTION (6.65245893699e-29) /* m^2 */
++#define GSL_CONST_MKS_BOHR_MAGNETON (9.27400899e-24) /* A m^2 */
++#define GSL_CONST_MKS_NUCLEAR_MAGNETON (5.05078317e-27) /* A m^2 */
++#define GSL_CONST_MKS_ELECTRON_MAGNETIC_MOMENT (9.28476362e-24) /* A m^2 */
++#define GSL_CONST_MKS_PROTON_MAGNETIC_MOMENT (1.410606633e-26) /* A m^2 */
++#define GSL_CONST_MKS_FARADAY (9.64853429775e4) /* A s / mol */
++#define GSL_CONST_MKS_ELECTRON_CHARGE (1.602176487e-19) /* A s */
++#define GSL_CONST_MKS_VACUUM_PERMITTIVITY (8.854187817e-12) /* A^2 s^4 / kg m^3 */
++#define GSL_CONST_MKS_VACUUM_PERMEABILITY (1.25663706144e-6) /* kg m / A^2 s^2 */
++#define GSL_CONST_MKS_DEBYE (3.33564095198e-30) /* A s^2 / m^2 */
++#define GSL_CONST_MKS_GAUSS (1e-4) /* kg / A s^2 */
++
++#endif /* __GSL_CONST_MKS__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_interp.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_interp.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_interp.h	(revision 14078)
+@@ -0,0 +1,224 @@
++/* interpolation/gsl_interp.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004 Gerard Jungman
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++/* Author:  G. Jungman
++ */
++#ifndef __GSL_INTERP_H__
++#define __GSL_INTERP_H__
++#include <stdlib.h>
++#include <gsl/gsl_inline.h>
++#include <gsl/gsl_types.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++/* evaluation accelerator */
++typedef struct {
++  size_t  cache;        /* cache of index   */
++  size_t  miss_count;   /* keep statistics  */
++  size_t  hit_count;
++}
++gsl_interp_accel;
++
++
++/* interpolation object type */
++typedef struct {
++  const char * name;
++  unsigned int min_size;
++  void *  (*alloc) (size_t size);
++  int     (*init)    (void *, const double xa[], const double ya[], size_t size);
++  int     (*eval)    (const void *, const double xa[], const double ya[], size_t size, double x, gsl_interp_accel *, double * y);
++  int     (*eval_deriv)  (const void *, const double xa[], const double ya[], size_t size, double x, gsl_interp_accel *, double * y_p);
++  int     (*eval_deriv2) (const void *, const double xa[], const double ya[], size_t size, double x, gsl_interp_accel *, double * y_pp);
++  int     (*eval_integ)  (const void *, const double xa[], const double ya[], size_t size, gsl_interp_accel *, double a, double b, double * result);
++  void    (*free)         (void *);
++
++} gsl_interp_type;
++
++
++/* general interpolation object */
++typedef struct {
++  const gsl_interp_type * type;
++  double  xmin;
++  double  xmax;
++  size_t  size;
++  void * state;
++} gsl_interp;
++
++
++/* available types */
++GSL_VAR const gsl_interp_type * gsl_interp_linear;
++GSL_VAR const gsl_interp_type * gsl_interp_polynomial;
++GSL_VAR const gsl_interp_type * gsl_interp_cspline;
++GSL_VAR const gsl_interp_type * gsl_interp_cspline_periodic;
++GSL_VAR const gsl_interp_type * gsl_interp_akima;
++GSL_VAR const gsl_interp_type * gsl_interp_akima_periodic;
++
++gsl_interp_accel *
++gsl_interp_accel_alloc(void);
++
++int
++gsl_interp_accel_reset (gsl_interp_accel * a);
++
++void
++gsl_interp_accel_free(gsl_interp_accel * a);
++
++gsl_interp *
++gsl_interp_alloc(const gsl_interp_type * T, size_t n);
++     
++int
++gsl_interp_init(gsl_interp * obj, const double xa[], const double ya[], size_t size);
++
++const char * gsl_interp_name(const gsl_interp * interp);
++unsigned int gsl_interp_min_size(const gsl_interp * interp);
++unsigned int gsl_interp_type_min_size(const gsl_interp_type * T);
++
++
++int
++gsl_interp_eval_e(const gsl_interp * obj,
++                  const double xa[], const double ya[], double x,
++                  gsl_interp_accel * a, double * y);
++
++double
++gsl_interp_eval(const gsl_interp * obj,
++                const double xa[], const double ya[], double x,
++                gsl_interp_accel * a);
++
++int
++gsl_interp_eval_deriv_e(const gsl_interp * obj,
++                        const double xa[], const double ya[], double x,
++                        gsl_interp_accel * a,
++                        double * d);
++
++double
++gsl_interp_eval_deriv(const gsl_interp * obj,
++                      const double xa[], const double ya[], double x,
++                      gsl_interp_accel * a);
++
++int
++gsl_interp_eval_deriv2_e(const gsl_interp * obj,
++                         const double xa[], const double ya[], double x,
++                         gsl_interp_accel * a,
++                         double * d2);
++
++double
++gsl_interp_eval_deriv2(const gsl_interp * obj,
++                       const double xa[], const double ya[], double x,
++                       gsl_interp_accel * a);
++
++int
++gsl_interp_eval_integ_e(const gsl_interp * obj,
++                        const double xa[], const double ya[],
++                        double a, double b,
++                        gsl_interp_accel * acc,
++                        double * result);
++
++double
++gsl_interp_eval_integ(const gsl_interp * obj,
++                      const double xa[], const double ya[],
++                      double a, double b,
++                      gsl_interp_accel * acc);
++
++void
++gsl_interp_free(gsl_interp * interp);
++
++INLINE_DECL size_t
++gsl_interp_bsearch(const double x_array[], double x,
++                   size_t index_lo, size_t index_hi);
++
++#ifdef HAVE_INLINE
++
++/* Perform a binary search of an array of values.
++ * 
++ * The parameters index_lo and index_hi provide an initial bracket,
++ * and it is assumed that index_lo < index_hi. The resulting index
++ * is guaranteed to be strictly less than index_hi and greater than
++ * or equal to index_lo, so that the implicit bracket [index, index+1]
++ * always corresponds to a region within the implicit value range of
++ * the value array.
++ *
++ * Note that this means the relationship of 'x' to x_array[index]
++ * and x_array[index+1] depends on the result region, i.e. the
++ * behaviour at the boundaries may not correspond to what you
++ * expect. We have the following complete specification of the
++ * behaviour.
++ * Suppose the input is x_array[] = { x0, x1, ..., xN }
++ *    if ( x == x0 )           then  index == 0
++ *    if ( x > x0 && x <= x1 ) then  index == 0, and sim. for other interior pts
++ *    if ( x == xN )           then  index == N-1
++ *    if ( x > xN )            then  index == N-1
++ *    if ( x < x0 )            then  index == 0 
++ */
++
++INLINE_FUN size_t
++gsl_interp_bsearch(const double x_array[], double x,
++                   size_t index_lo, size_t index_hi)
++{
++  size_t ilo = index_lo;
++  size_t ihi = index_hi;
++  while(ihi > ilo + 1) {
++    size_t i = (ihi + ilo)/2;
++    if(x_array[i] > x)
++      ihi = i;
++    else
++      ilo = i;
++  }
++  
++  return ilo;
++}
++#endif
++
++INLINE_DECL size_t 
++gsl_interp_accel_find(gsl_interp_accel * a, const double x_array[], size_t size, double x);
++
++#ifdef HAVE_INLINE
++INLINE_FUN size_t
++gsl_interp_accel_find(gsl_interp_accel * a, const double xa[], size_t len, double x)
++{
++  size_t x_index = a->cache;
++ 
++  if(x < xa[x_index]) {
++    a->miss_count++;
++    a->cache = gsl_interp_bsearch(xa, x, 0, x_index);
++  }
++  else if(x >= xa[x_index + 1]) {
++    a->miss_count++;
++    a->cache = gsl_interp_bsearch(xa, x, x_index, len-1);
++  }
++  else {
++    a->hit_count++;
++  }
++  
++  return a->cache;
++}
++#endif /* HAVE_INLINE */
++
++
++__END_DECLS
++
++#endif /* __GSL_INTERP_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_long_double.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_long_double.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_long_double.h	(revision 14078)
+@@ -0,0 +1,65 @@
++/* block/gsl_block_long_double.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_BLOCK_LONG_DOUBLE_H__
++#define __GSL_BLOCK_LONG_DOUBLE_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++struct gsl_block_long_double_struct
++{
++  size_t size;
++  long double *data;
++};
++
++typedef struct gsl_block_long_double_struct gsl_block_long_double;
++
++gsl_block_long_double *gsl_block_long_double_alloc (const size_t n);
++gsl_block_long_double *gsl_block_long_double_calloc (const size_t n);
++void gsl_block_long_double_free (gsl_block_long_double * b);
++
++int gsl_block_long_double_fread (FILE * stream, gsl_block_long_double * b);
++int gsl_block_long_double_fwrite (FILE * stream, const gsl_block_long_double * b);
++int gsl_block_long_double_fscanf (FILE * stream, gsl_block_long_double * b);
++int gsl_block_long_double_fprintf (FILE * stream, const gsl_block_long_double * b, const char *format);
++
++int gsl_block_long_double_raw_fread (FILE * stream, long double * b, const size_t n, const size_t stride);
++int gsl_block_long_double_raw_fwrite (FILE * stream, const long double * b, const size_t n, const size_t stride);
++int gsl_block_long_double_raw_fscanf (FILE * stream, long double * b, const size_t n, const size_t stride);
++int gsl_block_long_double_raw_fprintf (FILE * stream, const long double * b, const size_t n, const size_t stride, const char *format);
++
++size_t gsl_block_long_double_size (const gsl_block_long_double * b);
++long double * gsl_block_long_double_data (const gsl_block_long_double * b);
++
++__END_DECLS
++
++#endif /* __GSL_BLOCK_LONG_DOUBLE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_erf.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_erf.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_erf.h	(revision 14078)
+@@ -0,0 +1,91 @@
++/* specfunc/gsl_sf_erf.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++/* Author:  G. Jungman */
++
++#ifndef __GSL_SF_ERF_H__
++#define __GSL_SF_ERF_H__
++
++#include <gsl/gsl_sf_result.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++
++/* Complementary Error Function
++ * erfc(x) := 2/Sqrt[Pi] Integrate[Exp[-t^2], {t,x,Infinity}]
++ *
++ * exceptions: none
++ */
++int gsl_sf_erfc_e(double x, gsl_sf_result * result);
++double gsl_sf_erfc(double x);
++
++
++/* Log Complementary Error Function
++ *
++ * exceptions: none
++ */
++int gsl_sf_log_erfc_e(double x, gsl_sf_result * result);
++double gsl_sf_log_erfc(double x);
++
++
++/* Error Function
++ * erf(x) := 2/Sqrt[Pi] Integrate[Exp[-t^2], {t,0,x}]
++ *
++ * exceptions: none
++ */
++int gsl_sf_erf_e(double x, gsl_sf_result * result);
++double gsl_sf_erf(double x);
++
++
++/* Probability functions:
++ * Z(x) :  Abramowitz+Stegun 26.2.1
++ * Q(x) :  Abramowitz+Stegun 26.2.3
++ *
++ * exceptions: none
++ */
++int gsl_sf_erf_Z_e(double x, gsl_sf_result * result);
++int gsl_sf_erf_Q_e(double x, gsl_sf_result * result);
++double gsl_sf_erf_Z(double x);
++double gsl_sf_erf_Q(double x);
++
++
++/* Hazard function, also known as the inverse Mill's ratio.
++ *
++ *   H(x) := Z(x)/Q(x)
++ *         = Sqrt[2/Pi] Exp[-x^2 / 2] / Erfc[x/Sqrt[2]]
++ *
++ * exceptions: GSL_EUNDRFLW
++ */
++int gsl_sf_hazard_e(double x, gsl_sf_result * result);
++double gsl_sf_hazard(double x);
++
++
++__END_DECLS
++
++#endif /* __GSL_SF_ERF_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_siman.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_siman.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_siman.h	(revision 14078)
+@@ -0,0 +1,82 @@
++/* siman/gsl_siman.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Mark Galassi
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_SIMAN_H__
++#define __GSL_SIMAN_H__
++#include <stdlib.h>
++#include <gsl/gsl_rng.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++/* types for the function pointers passed to gsl_siman_solve */
++
++typedef double (*gsl_siman_Efunc_t) (void *xp);
++typedef void (*gsl_siman_step_t) (const gsl_rng *r, void *xp, double step_size);
++typedef double (*gsl_siman_metric_t) (void *xp, void *yp);
++typedef void (*gsl_siman_print_t) (void *xp);
++typedef void (*gsl_siman_copy_t) (void *source, void *dest);
++typedef void * (*gsl_siman_copy_construct_t) (void *xp);
++typedef void (*gsl_siman_destroy_t) (void *xp);
++
++/* this structure contains all the information needed to structure the
++   search, beyond the energy function, the step function and the
++   initial guess. */
++
++typedef struct {
++  int n_tries;          /* how many points to try for each step */
++  int iters_fixed_T;    /* how many iterations at each temperature? */
++  double step_size;     /* max step size in the random walk */
++  /* the following parameters are for the Boltzmann distribution */
++  double k, t_initial, mu_t, t_min;
++} gsl_siman_params_t;
++
++/* prototype for the workhorse function */
++
++void gsl_siman_solve(const gsl_rng * r, 
++                     void *x0_p, gsl_siman_Efunc_t Ef,
++                     gsl_siman_step_t take_step,
++                     gsl_siman_metric_t distance,
++                     gsl_siman_print_t print_position,
++                     gsl_siman_copy_t copyfunc,
++                     gsl_siman_copy_construct_t copy_constructor,
++                     gsl_siman_destroy_t destructor,
++                     size_t element_size,
++                     gsl_siman_params_t params);
++
++void 
++gsl_siman_solve_many (const gsl_rng * r, void *x0_p, gsl_siman_Efunc_t Ef,
++                      gsl_siman_step_t take_step,
++                      gsl_siman_metric_t distance,
++                      gsl_siman_print_t print_position,
++                      size_t element_size,
++                      gsl_siman_params_t params);
++
++__END_DECLS
++
++#endif /* __GSL_SIMAN_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_pow_int.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_pow_int.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_pow_int.h	(revision 14078)
+@@ -0,0 +1,49 @@
++/* specfunc/gsl_sf_pow_int.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++/* Author:  G. Jungman */
++
++#ifndef __GSL_SF_POW_INT_H__
++#define __GSL_SF_POW_INT_H__
++
++#include <gsl/gsl_sf_result.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++
++/* Calculate x^n.
++ * Does not check for overflow/underflow.
++ */
++int     gsl_sf_pow_int_e(double x, int n, gsl_sf_result * result);
++double  gsl_sf_pow_int(const double x, const int n);
++
++
++__END_DECLS
++
++#endif /* __GSL_SF_POW_INT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_ntuple.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_ntuple.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_ntuple.h	(revision 14078)
+@@ -0,0 +1,82 @@
++/* histogram/ntuple.h
++ * 
++ * Copyright (C) 2000 Simone Piccardi
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ *
++ */
++
++/* Jan/2001 Modified by Brian Gough. Minor changes for GSL */
++
++#ifndef __GSL_NTUPLE_H__
++#define __GSL_NTUPLE_H__
++
++#include <stdlib.h>
++#include <stdio.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_histogram.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++typedef struct {
++    FILE * file;
++    void * ntuple_data;
++    size_t size;
++} gsl_ntuple;
++
++typedef struct {
++  int (* function) (void * ntuple_data, void * params);
++  void * params;
++} gsl_ntuple_select_fn;
++
++typedef struct {
++  double (* function) (void * ntuple_data, void * params);
++  void * params;
++} gsl_ntuple_value_fn;
++
++gsl_ntuple * 
++gsl_ntuple_open (char * filename, void * ntuple_data, size_t size);
++
++gsl_ntuple * 
++gsl_ntuple_create (char * filename, void * ntuple_data, size_t size);
++
++int gsl_ntuple_write (gsl_ntuple * ntuple);
++int gsl_ntuple_read (gsl_ntuple * ntuple);
++
++int gsl_ntuple_bookdata (gsl_ntuple * ntuple);  /* synonym for write */
++
++int gsl_ntuple_project (gsl_histogram * h, gsl_ntuple * ntuple, 
++                        gsl_ntuple_value_fn *value_func,
++                        gsl_ntuple_select_fn *select_func);
++
++int gsl_ntuple_close (gsl_ntuple * ntuple);
++
++__END_DECLS
++
++#endif /* __GSL_NTUPLE_H__ */
++
++
++
++
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_ushort.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_ushort.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_ushort.h	(revision 14078)
+@@ -0,0 +1,45 @@
++/* permutation/gsl_permute_vector_ushort.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_PERMUTE_VECTOR_USHORT_H__
++#define __GSL_PERMUTE_VECTOR_USHORT_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_permutation.h>
++#include <gsl/gsl_vector_ushort.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++int gsl_permute_vector_ushort (const gsl_permutation * p, gsl_vector_ushort * v);
++int gsl_permute_vector_ushort_inverse (const gsl_permutation * p, gsl_vector_ushort * v);
++
++__END_DECLS
++
++#endif /* __GSL_PERMUTE_VECTOR_USHORT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_ellint.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_ellint.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_ellint.h	(revision 14078)
+@@ -0,0 +1,112 @@
++/* specfunc/gsl_sf_ellint.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++/* Author: G. Jungman */
++
++#ifndef __GSL_SF_ELLINT_H__
++#define __GSL_SF_ELLINT_H__
++
++#include <gsl/gsl_mode.h>
++#include <gsl/gsl_sf_result.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++
++/* Legendre form of complete elliptic integrals
++ *
++ * K(k) = Integral[1/Sqrt[1 - k^2 Sin[t]^2], {t, 0, Pi/2}]
++ * E(k) = Integral[  Sqrt[1 - k^2 Sin[t]^2], {t, 0, Pi/2}]
++ *
++ * exceptions: GSL_EDOM
++ */
++int gsl_sf_ellint_Kcomp_e(double k, gsl_mode_t mode, gsl_sf_result * result);
++double gsl_sf_ellint_Kcomp(double k, gsl_mode_t mode);
++
++int gsl_sf_ellint_Ecomp_e(double k, gsl_mode_t mode, gsl_sf_result * result);
++double gsl_sf_ellint_Ecomp(double k, gsl_mode_t mode);
++
++int gsl_sf_ellint_Pcomp_e(double k, double n, gsl_mode_t mode, gsl_sf_result * result);
++double gsl_sf_ellint_Pcomp(double k, double n, gsl_mode_t mode);
++
++int gsl_sf_ellint_Dcomp_e(double k, gsl_mode_t mode, gsl_sf_result * result);
++double gsl_sf_ellint_Dcomp(double k, gsl_mode_t mode);
++
++
++/* Legendre form of incomplete elliptic integrals
++ *
++ * F(phi,k)   = Integral[1/Sqrt[1 - k^2 Sin[t]^2], {t, 0, phi}]
++ * E(phi,k)   = Integral[  Sqrt[1 - k^2 Sin[t]^2], {t, 0, phi}]
++ * P(phi,k,n) = Integral[(1 + n Sin[t]^2)^(-1)/Sqrt[1 - k^2 Sin[t]^2], {t, 0, phi}]
++ * D(phi,k,n) = R_D(1-Sin[phi]^2, 1-k^2 Sin[phi]^2, 1.0)
++ *
++ * F: [Carlson, Numerische Mathematik 33 (1979) 1, (4.1)]
++ * E: [Carlson, ", (4.2)]
++ * P: [Carlson, ", (4.3)]
++ * D: [Carlson, ", (4.4)]
++ *
++ * exceptions: GSL_EDOM
++ */
++int gsl_sf_ellint_F_e(double phi, double k, gsl_mode_t mode, gsl_sf_result * result);
++double gsl_sf_ellint_F(double phi, double k, gsl_mode_t mode);
++
++int gsl_sf_ellint_E_e(double phi, double k, gsl_mode_t mode, gsl_sf_result * result);
++double gsl_sf_ellint_E(double phi, double k, gsl_mode_t mode);
++
++int gsl_sf_ellint_P_e(double phi, double k, double n, gsl_mode_t mode, gsl_sf_result * result);
++double gsl_sf_ellint_P(double phi, double k, double n, gsl_mode_t mode);
++
++int gsl_sf_ellint_D_e(double phi, double k, double n, gsl_mode_t mode, gsl_sf_result * result);
++double gsl_sf_ellint_D(double phi, double k, double n, gsl_mode_t mode);
++
++
++/* Carlson's symmetric basis of functions
++ *
++ * RC(x,y)   = 1/2 Integral[(t+x)^(-1/2) (t+y)^(-1)], {t,0,Inf}]
++ * RD(x,y,z) = 3/2 Integral[(t+x)^(-1/2) (t+y)^(-1/2) (t+z)^(-3/2), {t,0,Inf}]
++ * RF(x,y,z) = 1/2 Integral[(t+x)^(-1/2) (t+y)^(-1/2) (t+z)^(-1/2), {t,0,Inf}]
++ * RJ(x,y,z,p) = 3/2 Integral[(t+x)^(-1/2) (t+y)^(-1/2) (t+z)^(-1/2) (t+p)^(-1), {t,0,Inf}]
++ *
++ * exceptions: GSL_EDOM
++ */
++int gsl_sf_ellint_RC_e(double x, double y, gsl_mode_t mode, gsl_sf_result * result);
++double gsl_sf_ellint_RC(double x, double y, gsl_mode_t mode);
++
++int gsl_sf_ellint_RD_e(double x, double y, double z, gsl_mode_t mode, gsl_sf_result * result);
++double gsl_sf_ellint_RD(double x, double y, double z, gsl_mode_t mode);
++
++int gsl_sf_ellint_RF_e(double x, double y, double z, gsl_mode_t mode, gsl_sf_result * result);
++double gsl_sf_ellint_RF(double x, double y, double z, gsl_mode_t mode);
++
++int gsl_sf_ellint_RJ_e(double x, double y, double z, double p, gsl_mode_t mode, gsl_sf_result * result);
++double gsl_sf_ellint_RJ(double x, double y, double z, double p, gsl_mode_t mode);
++
++
++__END_DECLS
++
++#endif /* __GSL_SF_ELLINT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_debye.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_debye.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_debye.h	(revision 14078)
+@@ -0,0 +1,91 @@
++/* specfunc/gsl_sf_debye.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++/* Author:  G. Jungman */
++/* augmented by D_5(x) and D_6(x) by Richard J. Mathar, 2005-11-08 */
++
++#ifndef __GSL_SF_DEBYE_H__
++#define __GSL_SF_DEBYE_H__
++
++#include <gsl/gsl_sf_result.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++
++/* D_n(x) := n/x^n Integrate[t^n/(e^t - 1), {t,0,x}] */
++
++/* D_1(x)
++ *
++ * exceptions: GSL_EDOM
++ */
++int     gsl_sf_debye_1_e(const double x, gsl_sf_result * result);
++double     gsl_sf_debye_1(const double x);
++
++
++/* D_2(x)
++ *
++ * exceptions: GSL_EDOM, GSL_EUNDRFLW
++ */
++int     gsl_sf_debye_2_e(const double x, gsl_sf_result * result);
++double     gsl_sf_debye_2(const double x);
++
++
++/* D_3(x)
++ *
++ * exceptions: GSL_EDOM, GSL_EUNDRFLW
++ */
++int     gsl_sf_debye_3_e(const double x, gsl_sf_result * result);
++double     gsl_sf_debye_3(const double x);
++
++
++/* D_4(x)
++ *
++ * exceptions: GSL_EDOM, GSL_EUNDRFLW
++ */
++int     gsl_sf_debye_4_e(const double x, gsl_sf_result * result);
++double     gsl_sf_debye_4(const double x);
++
++/* D_5(x)
++ *
++ * exceptions: GSL_EDOM, GSL_EUNDRFLW
++ */
++int     gsl_sf_debye_5_e(const double x, gsl_sf_result * result);
++double     gsl_sf_debye_5(const double x);
++
++/* D_6(x)
++ *
++ * exceptions: GSL_EDOM, GSL_EUNDRFLW
++ */
++int     gsl_sf_debye_6_e(const double x, gsl_sf_result * result);
++double     gsl_sf_debye_6(const double x);
++
++
++__END_DECLS
++
++#endif /* __GSL_SF_DEBYE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_complex_float.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_complex_float.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_complex_float.h	(revision 14078)
+@@ -0,0 +1,351 @@
++/* matrix/gsl_matrix_complex_float.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_MATRIX_COMPLEX_FLOAT_H__
++#define __GSL_MATRIX_COMPLEX_FLOAT_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_types.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_complex.h>
++#include <gsl/gsl_check_range.h>
++#include <gsl/gsl_vector_complex_float.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++typedef struct 
++{
++  size_t size1;
++  size_t size2;
++  size_t tda;
++  float * data;
++  gsl_block_complex_float * block;
++  int owner;
++} gsl_matrix_complex_float ;
++
++typedef struct
++{
++  gsl_matrix_complex_float matrix;
++} _gsl_matrix_complex_float_view;
++
++typedef _gsl_matrix_complex_float_view gsl_matrix_complex_float_view;
++
++typedef struct
++{
++  gsl_matrix_complex_float matrix;
++} _gsl_matrix_complex_float_const_view;
++
++typedef const _gsl_matrix_complex_float_const_view gsl_matrix_complex_float_const_view;
++
++
++/* Allocation */
++
++gsl_matrix_complex_float * 
++gsl_matrix_complex_float_alloc (const size_t n1, const size_t n2);
++
++gsl_matrix_complex_float * 
++gsl_matrix_complex_float_calloc (const size_t n1, const size_t n2);
++
++gsl_matrix_complex_float * 
++gsl_matrix_complex_float_alloc_from_block (gsl_block_complex_float * b, 
++                                           const size_t offset, 
++                                           const size_t n1, const size_t n2, const size_t d2);
++
++gsl_matrix_complex_float * 
++gsl_matrix_complex_float_alloc_from_matrix (gsl_matrix_complex_float * b,
++                                            const size_t k1, const size_t k2,
++                                            const size_t n1, const size_t n2);
++
++gsl_vector_complex_float * 
++gsl_vector_complex_float_alloc_row_from_matrix (gsl_matrix_complex_float * m,
++                                                const size_t i);
++
++gsl_vector_complex_float * 
++gsl_vector_complex_float_alloc_col_from_matrix (gsl_matrix_complex_float * m,
++                                                const size_t j);
++
++void gsl_matrix_complex_float_free (gsl_matrix_complex_float * m);
++
++/* Views */
++
++_gsl_matrix_complex_float_view 
++gsl_matrix_complex_float_submatrix (gsl_matrix_complex_float * m, 
++                            const size_t i, const size_t j, 
++                            const size_t n1, const size_t n2);
++
++_gsl_vector_complex_float_view 
++gsl_matrix_complex_float_row (gsl_matrix_complex_float * m, const size_t i);
++
++_gsl_vector_complex_float_view 
++gsl_matrix_complex_float_column (gsl_matrix_complex_float * m, const size_t j);
++
++_gsl_vector_complex_float_view 
++gsl_matrix_complex_float_diagonal (gsl_matrix_complex_float * m);
++
++_gsl_vector_complex_float_view 
++gsl_matrix_complex_float_subdiagonal (gsl_matrix_complex_float * m, const size_t k);
++
++_gsl_vector_complex_float_view 
++gsl_matrix_complex_float_superdiagonal (gsl_matrix_complex_float * m, const size_t k);
++
++_gsl_vector_complex_float_view
++gsl_matrix_complex_float_subrow (gsl_matrix_complex_float * m,
++                                 const size_t i, const size_t offset,
++                                 const size_t n);
++
++_gsl_vector_complex_float_view
++gsl_matrix_complex_float_subcolumn (gsl_matrix_complex_float * m,
++                                    const size_t j, const size_t offset,
++                                    const size_t n);
++
++_gsl_matrix_complex_float_view
++gsl_matrix_complex_float_view_array (float * base,
++                             const size_t n1, 
++                             const size_t n2);
++
++_gsl_matrix_complex_float_view
++gsl_matrix_complex_float_view_array_with_tda (float * base, 
++                                      const size_t n1, 
++                                      const size_t n2,
++                                      const size_t tda);
++
++_gsl_matrix_complex_float_view
++gsl_matrix_complex_float_view_vector (gsl_vector_complex_float * v,
++                              const size_t n1, 
++                              const size_t n2);
++
++_gsl_matrix_complex_float_view
++gsl_matrix_complex_float_view_vector_with_tda (gsl_vector_complex_float * v,
++                                       const size_t n1, 
++                                       const size_t n2,
++                                       const size_t tda);
++
++
++_gsl_matrix_complex_float_const_view 
++gsl_matrix_complex_float_const_submatrix (const gsl_matrix_complex_float * m, 
++                                  const size_t i, const size_t j, 
++                                  const size_t n1, const size_t n2);
++
++_gsl_vector_complex_float_const_view 
++gsl_matrix_complex_float_const_row (const gsl_matrix_complex_float * m, 
++                            const size_t i);
++
++_gsl_vector_complex_float_const_view 
++gsl_matrix_complex_float_const_column (const gsl_matrix_complex_float * m, 
++                               const size_t j);
++
++_gsl_vector_complex_float_const_view
++gsl_matrix_complex_float_const_diagonal (const gsl_matrix_complex_float * m);
++
++_gsl_vector_complex_float_const_view 
++gsl_matrix_complex_float_const_subdiagonal (const gsl_matrix_complex_float * m, 
++                                    const size_t k);
++
++_gsl_vector_complex_float_const_view 
++gsl_matrix_complex_float_const_superdiagonal (const gsl_matrix_complex_float * m, 
++                                      const size_t k);
++
++_gsl_vector_complex_float_const_view
++gsl_matrix_complex_float_const_subrow (const gsl_matrix_complex_float * m,
++                                       const size_t i, const size_t offset,
++                                       const size_t n);
++
++_gsl_vector_complex_float_const_view
++gsl_matrix_complex_float_const_subcolumn (const gsl_matrix_complex_float * m,
++                                          const size_t j, const size_t offset,
++                                          const size_t n);
++
++_gsl_matrix_complex_float_const_view
++gsl_matrix_complex_float_const_view_array (const float * base,
++                                   const size_t n1, 
++                                   const size_t n2);
++
++_gsl_matrix_complex_float_const_view
++gsl_matrix_complex_float_const_view_array_with_tda (const float * base, 
++                                            const size_t n1, 
++                                            const size_t n2,
++                                            const size_t tda);
++
++_gsl_matrix_complex_float_const_view
++gsl_matrix_complex_float_const_view_vector (const gsl_vector_complex_float * v,
++                                    const size_t n1, 
++                                    const size_t n2);
++
++_gsl_matrix_complex_float_const_view
++gsl_matrix_complex_float_const_view_vector_with_tda (const gsl_vector_complex_float * v,
++                                             const size_t n1, 
++                                             const size_t n2,
++                                             const size_t tda);
++
++/* Operations */
++
++void gsl_matrix_complex_float_set_zero (gsl_matrix_complex_float * m);
++void gsl_matrix_complex_float_set_identity (gsl_matrix_complex_float * m);
++void gsl_matrix_complex_float_set_all (gsl_matrix_complex_float * m, gsl_complex_float x);
++
++int gsl_matrix_complex_float_fread (FILE * stream, gsl_matrix_complex_float * m) ;
++int gsl_matrix_complex_float_fwrite (FILE * stream, const gsl_matrix_complex_float * m) ;
++int gsl_matrix_complex_float_fscanf (FILE * stream, gsl_matrix_complex_float * m);
++int gsl_matrix_complex_float_fprintf (FILE * stream, const gsl_matrix_complex_float * m, const char * format);
++
++int gsl_matrix_complex_float_memcpy(gsl_matrix_complex_float * dest, const gsl_matrix_complex_float * src);
++int gsl_matrix_complex_float_swap(gsl_matrix_complex_float * m1, gsl_matrix_complex_float * m2);
++
++int gsl_matrix_complex_float_swap_rows(gsl_matrix_complex_float * m, const size_t i, const size_t j);
++int gsl_matrix_complex_float_swap_columns(gsl_matrix_complex_float * m, const size_t i, const size_t j);
++int gsl_matrix_complex_float_swap_rowcol(gsl_matrix_complex_float * m, const size_t i, const size_t j);
++
++int gsl_matrix_complex_float_transpose (gsl_matrix_complex_float * m);
++int gsl_matrix_complex_float_transpose_memcpy (gsl_matrix_complex_float * dest, const gsl_matrix_complex_float * src);
++
++int gsl_matrix_complex_float_equal (const gsl_matrix_complex_float * a, const gsl_matrix_complex_float * b);
++
++int gsl_matrix_complex_float_isnull (const gsl_matrix_complex_float * m);
++int gsl_matrix_complex_float_ispos (const gsl_matrix_complex_float * m);
++int gsl_matrix_complex_float_isneg (const gsl_matrix_complex_float * m);
++int gsl_matrix_complex_float_isnonneg (const gsl_matrix_complex_float * m);
++
++int gsl_matrix_complex_float_add (gsl_matrix_complex_float * a, const gsl_matrix_complex_float * b);
++int gsl_matrix_complex_float_sub (gsl_matrix_complex_float * a, const gsl_matrix_complex_float * b);
++int gsl_matrix_complex_float_mul_elements (gsl_matrix_complex_float * a, const gsl_matrix_complex_float * b);
++int gsl_matrix_complex_float_div_elements (gsl_matrix_complex_float * a, const gsl_matrix_complex_float * b);
++int gsl_matrix_complex_float_scale (gsl_matrix_complex_float * a, const gsl_complex_float x);
++int gsl_matrix_complex_float_add_constant (gsl_matrix_complex_float * a, const gsl_complex_float x);
++int gsl_matrix_complex_float_add_diagonal (gsl_matrix_complex_float * a, const gsl_complex_float x);
++
++/***********************************************************************/
++/* The functions below are obsolete                                    */
++/***********************************************************************/
++int gsl_matrix_complex_float_get_row(gsl_vector_complex_float * v, const gsl_matrix_complex_float * m, const size_t i);
++int gsl_matrix_complex_float_get_col(gsl_vector_complex_float * v, const gsl_matrix_complex_float * m, const size_t j);
++int gsl_matrix_complex_float_set_row(gsl_matrix_complex_float * m, const size_t i, const gsl_vector_complex_float * v);
++int gsl_matrix_complex_float_set_col(gsl_matrix_complex_float * m, const size_t j, const gsl_vector_complex_float * v);
++/***********************************************************************/
++
++/* inline functions if you are using GCC */
++
++INLINE_DECL gsl_complex_float gsl_matrix_complex_float_get(const gsl_matrix_complex_float * m, const size_t i, const size_t j);
++INLINE_DECL void gsl_matrix_complex_float_set(gsl_matrix_complex_float * m, const size_t i, const size_t j, const gsl_complex_float x);
++
++INLINE_DECL gsl_complex_float * gsl_matrix_complex_float_ptr(gsl_matrix_complex_float * m, const size_t i, const size_t j);
++INLINE_DECL const gsl_complex_float * gsl_matrix_complex_float_const_ptr(const gsl_matrix_complex_float * m, const size_t i, const size_t j);
++
++#ifdef HAVE_INLINE
++
++INLINE_FUN 
++gsl_complex_float
++gsl_matrix_complex_float_get(const gsl_matrix_complex_float * m, 
++                     const size_t i, const size_t j)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(1)) 
++    {
++      gsl_complex_float zero = {{0,0}};
++
++      if (i >= m->size1)
++        {
++          GSL_ERROR_VAL("first index out of range", GSL_EINVAL, zero) ;
++        }
++      else if (j >= m->size2)
++        {
++          GSL_ERROR_VAL("second index out of range", GSL_EINVAL, zero) ;
++        }
++    }
++#endif
++  return *(gsl_complex_float *)(m->data + 2*(i * m->tda + j)) ;
++} 
++
++INLINE_FUN 
++void
++gsl_matrix_complex_float_set(gsl_matrix_complex_float * m, 
++                     const size_t i, const size_t j, const gsl_complex_float x)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(1)) 
++    {
++      if (i >= m->size1)
++        {
++          GSL_ERROR_VOID("first index out of range", GSL_EINVAL) ;
++        }
++      else if (j >= m->size2)
++        {
++          GSL_ERROR_VOID("second index out of range", GSL_EINVAL) ;
++        }
++    }
++#endif
++  *(gsl_complex_float *)(m->data + 2*(i * m->tda + j)) = x ;
++}
++
++INLINE_FUN 
++gsl_complex_float *
++gsl_matrix_complex_float_ptr(gsl_matrix_complex_float * m, 
++                             const size_t i, const size_t j)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(1)) 
++    {
++      if (i >= m->size1)
++        {
++          GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
++        }
++      else if (j >= m->size2)
++        {
++          GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
++        }
++    }
++#endif
++  return (gsl_complex_float *)(m->data + 2*(i * m->tda + j)) ;
++} 
++
++INLINE_FUN 
++const gsl_complex_float *
++gsl_matrix_complex_float_const_ptr(const gsl_matrix_complex_float * m, 
++                                   const size_t i, const size_t j)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(1)) 
++    {
++      if (i >= m->size1)
++        {
++          GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
++        }
++      else if (j >= m->size2)
++        {
++          GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
++        }
++    }
++#endif
++  return (const gsl_complex_float *)(m->data + 2*(i * m->tda + j)) ;
++} 
++
++#endif /* HAVE_INLINE */
++
++__END_DECLS
++
++#endif /* __GSL_MATRIX_COMPLEX_FLOAT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_complex_long_double.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_complex_long_double.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_complex_long_double.h	(revision 14078)
+@@ -0,0 +1,45 @@
++/* permutation/gsl_permute_complex_long_double.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_PERMUTE_COMPLEX_LONG_DOUBLE_H__
++#define __GSL_PERMUTE_COMPLEX_LONG_DOUBLE_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_complex.h>
++#include <gsl/gsl_permutation.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++int gsl_permute_complex_long_double (const size_t * p, long double * data, const size_t stride, const size_t n);
++int gsl_permute_complex_long_double_inverse (const size_t * p, long double * data, const size_t stride, const size_t n);
++
++__END_DECLS
++
++#endif /* __GSL_PERMUTE_COMPLEX_LONG_DOUBLE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_blas.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_blas.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_blas.h	(revision 14078)
+@@ -0,0 +1,602 @@
++/* blas/gsl_blas.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++/*
++ * Author:  G. Jungman
++ */
++#ifndef __GSL_BLAS_H__
++#define __GSL_BLAS_H__
++
++#include <gsl/gsl_vector.h>
++#include <gsl/gsl_matrix.h>
++
++#include <gsl/gsl_blas_types.h>
++
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++
++/* ========================================================================
++ * Level 1
++ * ========================================================================
++ */
++
++int gsl_blas_sdsdot (float alpha,
++                     const gsl_vector_float * X,
++                     const gsl_vector_float * Y,
++                     float * result
++                     );
++
++int gsl_blas_dsdot (const gsl_vector_float * X,
++                    const gsl_vector_float * Y,
++                    double * result
++                    );
++
++int gsl_blas_sdot (const gsl_vector_float * X,
++                   const gsl_vector_float * Y,
++                   float * result
++                   );
++
++int gsl_blas_ddot (const gsl_vector * X,
++                   const gsl_vector * Y,
++                   double * result
++                   );
++
++
++int  gsl_blas_cdotu (const gsl_vector_complex_float * X,
++                     const gsl_vector_complex_float * Y,
++                     gsl_complex_float * dotu);
++
++int  gsl_blas_cdotc (const gsl_vector_complex_float * X,
++                     const gsl_vector_complex_float * Y,
++                     gsl_complex_float * dotc);
++
++int  gsl_blas_zdotu (const gsl_vector_complex * X,
++                     const gsl_vector_complex * Y,
++                     gsl_complex * dotu);
++
++int  gsl_blas_zdotc (const gsl_vector_complex * X,
++                     const gsl_vector_complex * Y,
++                     gsl_complex * dotc);
++
++
++float  gsl_blas_snrm2  (const gsl_vector_float * X);
++float  gsl_blas_sasum  (const gsl_vector_float * X);
++double gsl_blas_dnrm2  (const gsl_vector * X);
++double gsl_blas_dasum  (const gsl_vector * X);
++float  gsl_blas_scnrm2 (const gsl_vector_complex_float * X);
++float  gsl_blas_scasum (const gsl_vector_complex_float * X);
++double gsl_blas_dznrm2 (const gsl_vector_complex * X);
++double gsl_blas_dzasum (const gsl_vector_complex * X);
++
++
++CBLAS_INDEX_t gsl_blas_isamax (const gsl_vector_float * X);
++CBLAS_INDEX_t gsl_blas_idamax (const gsl_vector * X);
++CBLAS_INDEX_t gsl_blas_icamax (const gsl_vector_complex_float * X);
++CBLAS_INDEX_t gsl_blas_izamax (const gsl_vector_complex * X);
++
++
++int  gsl_blas_sswap (gsl_vector_float * X,
++                     gsl_vector_float * Y);
++
++int  gsl_blas_scopy (const gsl_vector_float * X,
++                     gsl_vector_float * Y);
++
++int  gsl_blas_saxpy (float alpha,
++                     const gsl_vector_float * X,
++                     gsl_vector_float * Y);
++
++int  gsl_blas_dswap (gsl_vector * X,
++                     gsl_vector * Y);
++
++int  gsl_blas_dcopy (const gsl_vector * X,
++                     gsl_vector * Y);
++
++int  gsl_blas_daxpy (double alpha,
++                     const gsl_vector * X,
++                     gsl_vector * Y);
++
++int  gsl_blas_cswap (gsl_vector_complex_float * X,
++                     gsl_vector_complex_float * Y);
++
++int  gsl_blas_ccopy (const gsl_vector_complex_float * X,
++                     gsl_vector_complex_float * Y);
++
++int  gsl_blas_caxpy (const gsl_complex_float alpha,
++                     const gsl_vector_complex_float * X,
++                     gsl_vector_complex_float * Y);
++
++int  gsl_blas_zswap (gsl_vector_complex * X,
++                     gsl_vector_complex * Y);
++
++int  gsl_blas_zcopy (const gsl_vector_complex * X,
++                     gsl_vector_complex * Y);
++
++int  gsl_blas_zaxpy (const gsl_complex alpha,
++                     const gsl_vector_complex * X,
++                     gsl_vector_complex * Y);
++
++
++int  gsl_blas_srotg (float a[], float b[], float c[], float s[]);
++
++int  gsl_blas_srotmg (float d1[], float d2[], float b1[], float b2, float P[]);
++
++int  gsl_blas_srot (gsl_vector_float * X,
++                    gsl_vector_float * Y,
++                    float c, float s);
++
++int  gsl_blas_srotm (gsl_vector_float * X,
++                     gsl_vector_float * Y,
++                     const float P[]);
++
++int  gsl_blas_drotg (double a[], double b[], double c[], double s[]);
++
++int  gsl_blas_drotmg (double d1[], double d2[], double b1[],
++                      double b2, double P[]);
++
++int  gsl_blas_drot (gsl_vector * X,
++                    gsl_vector * Y,
++                    const double c, const double s);
++
++int  gsl_blas_drotm (gsl_vector * X,
++                     gsl_vector * Y,
++                     const double P[]);
++
++
++void gsl_blas_sscal  (float  alpha, gsl_vector_float * X);
++void gsl_blas_dscal  (double alpha, gsl_vector * X);
++void gsl_blas_cscal  (const gsl_complex_float alpha, gsl_vector_complex_float * X);
++void gsl_blas_zscal  (const gsl_complex alpha, gsl_vector_complex * X);
++void gsl_blas_csscal (float  alpha, gsl_vector_complex_float * X);
++void gsl_blas_zdscal (double alpha, gsl_vector_complex * X);
++
++
++/* ===========================================================================
++ * Level 2
++ * ===========================================================================
++ */
++
++/*
++ * Routines with standard 4 prefixes (S, D, C, Z)
++ */
++int  gsl_blas_sgemv (CBLAS_TRANSPOSE_t TransA,
++                     float alpha,
++                     const gsl_matrix_float * A,
++                     const gsl_vector_float * X,
++                     float beta,
++                     gsl_vector_float * Y);
++
++int  gsl_blas_strmv (CBLAS_UPLO_t Uplo,
++                     CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag,
++                     const gsl_matrix_float * A,
++                     gsl_vector_float * X);
++
++int  gsl_blas_strsv (CBLAS_UPLO_t Uplo,
++                     CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag,
++                     const gsl_matrix_float * A,
++                     gsl_vector_float * X);
++
++int  gsl_blas_dgemv (CBLAS_TRANSPOSE_t TransA,
++                     double alpha,
++                     const gsl_matrix * A,
++                     const gsl_vector * X,
++                     double beta,
++                     gsl_vector * Y);
++
++int  gsl_blas_dtrmv (CBLAS_UPLO_t Uplo,
++                     CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag,
++                     const gsl_matrix * A,
++                     gsl_vector * X);
++
++int  gsl_blas_dtrsv (CBLAS_UPLO_t Uplo,
++                     CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag,
++                     const gsl_matrix * A,
++                     gsl_vector * X);
++
++int  gsl_blas_cgemv (CBLAS_TRANSPOSE_t TransA,
++                     const gsl_complex_float alpha,
++                     const gsl_matrix_complex_float * A,
++                     const gsl_vector_complex_float * X,
++                     const gsl_complex_float beta,
++                     gsl_vector_complex_float * Y);
++
++int  gsl_blas_ctrmv (CBLAS_UPLO_t Uplo,
++                     CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag,
++                     const gsl_matrix_complex_float * A,
++                     gsl_vector_complex_float * X);
++
++int  gsl_blas_ctrsv (CBLAS_UPLO_t Uplo,
++                     CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag,
++                     const gsl_matrix_complex_float * A,
++                     gsl_vector_complex_float * X);
++
++int  gsl_blas_zgemv (CBLAS_TRANSPOSE_t TransA,
++                     const gsl_complex alpha,
++                     const gsl_matrix_complex * A,
++                     const gsl_vector_complex * X,
++                     const gsl_complex beta,
++                     gsl_vector_complex * Y);
++
++int  gsl_blas_ztrmv (CBLAS_UPLO_t Uplo,
++                     CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag,
++                     const gsl_matrix_complex * A,
++                     gsl_vector_complex * X);
++
++int  gsl_blas_ztrsv (CBLAS_UPLO_t Uplo,
++                     CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag,
++                     const gsl_matrix_complex * A,
++                     gsl_vector_complex *X);
++
++/*
++ * Routines with S and D prefixes only
++ */
++int  gsl_blas_ssymv (CBLAS_UPLO_t Uplo,
++                     float alpha,
++                     const gsl_matrix_float * A,
++                     const gsl_vector_float * X,
++                     float beta,
++                     gsl_vector_float * Y);
++
++int  gsl_blas_sger (float alpha,
++                    const gsl_vector_float * X,
++                    const gsl_vector_float * Y,
++                    gsl_matrix_float * A);
++
++int  gsl_blas_ssyr (CBLAS_UPLO_t Uplo,
++                    float alpha,
++                    const gsl_vector_float * X,
++                    gsl_matrix_float * A);
++
++int  gsl_blas_ssyr2 (CBLAS_UPLO_t Uplo,
++                     float alpha,
++                     const gsl_vector_float * X,
++                     const gsl_vector_float * Y,
++                     gsl_matrix_float * A);
++
++int  gsl_blas_dsymv (CBLAS_UPLO_t Uplo,
++                     double alpha,
++                     const gsl_matrix * A,
++                     const gsl_vector * X,
++                     double beta,
++                     gsl_vector * Y);
++int  gsl_blas_dger (double alpha,
++                    const gsl_vector * X,
++                    const gsl_vector * Y,
++                    gsl_matrix * A);
++
++int  gsl_blas_dsyr (CBLAS_UPLO_t Uplo,
++                    double alpha,
++                    const gsl_vector * X,
++                    gsl_matrix * A);
++
++int  gsl_blas_dsyr2 (CBLAS_UPLO_t Uplo,
++                     double alpha,
++                     const gsl_vector * X,
++                     const gsl_vector * Y,
++                     gsl_matrix * A);
++
++/*
++ * Routines with C and Z prefixes only
++ */
++
++int  gsl_blas_chemv (CBLAS_UPLO_t Uplo,
++                     const gsl_complex_float alpha,
++                     const gsl_matrix_complex_float * A,
++                     const gsl_vector_complex_float * X,
++                     const gsl_complex_float beta,
++                     gsl_vector_complex_float * Y);
++
++int  gsl_blas_cgeru (const gsl_complex_float alpha,
++                     const gsl_vector_complex_float * X,
++                     const gsl_vector_complex_float * Y,
++                     gsl_matrix_complex_float * A);
++
++int  gsl_blas_cgerc (const gsl_complex_float alpha,
++                     const gsl_vector_complex_float * X,
++                     const gsl_vector_complex_float * Y,
++                     gsl_matrix_complex_float * A);
++
++int  gsl_blas_cher (CBLAS_UPLO_t Uplo,
++                    float alpha,
++                    const gsl_vector_complex_float * X,
++                    gsl_matrix_complex_float * A);
++
++int  gsl_blas_cher2 (CBLAS_UPLO_t Uplo,
++                     const gsl_complex_float alpha,
++                     const gsl_vector_complex_float * X,
++                     const gsl_vector_complex_float * Y,
++                     gsl_matrix_complex_float * A);
++
++int  gsl_blas_zhemv (CBLAS_UPLO_t Uplo,
++                     const gsl_complex alpha,
++                     const gsl_matrix_complex * A,
++                     const gsl_vector_complex * X,
++                     const gsl_complex beta,
++                     gsl_vector_complex * Y);
++
++int  gsl_blas_zgeru (const gsl_complex alpha,
++                     const gsl_vector_complex * X,
++                     const gsl_vector_complex * Y,
++                     gsl_matrix_complex * A);
++
++int  gsl_blas_zgerc (const gsl_complex alpha,
++                     const gsl_vector_complex * X,
++                     const gsl_vector_complex * Y,
++                     gsl_matrix_complex * A);
++
++int  gsl_blas_zher (CBLAS_UPLO_t Uplo,
++                    double alpha,
++                    const gsl_vector_complex * X,
++                    gsl_matrix_complex * A);
++
++int  gsl_blas_zher2 (CBLAS_UPLO_t Uplo,
++                     const gsl_complex alpha,
++                     const gsl_vector_complex * X,
++                     const gsl_vector_complex * Y,
++                     gsl_matrix_complex * A);
++
++/*
++ * ===========================================================================
++ * Prototypes for level 3 BLAS
++ * ===========================================================================
++ */
++
++/*
++ * Routines with standard 4 prefixes (S, D, C, Z)
++ */
++int  gsl_blas_sgemm (CBLAS_TRANSPOSE_t TransA,
++                     CBLAS_TRANSPOSE_t TransB,
++                     float alpha,
++                     const gsl_matrix_float * A,
++                     const gsl_matrix_float * B,
++                     float beta,
++                     gsl_matrix_float * C);
++
++int  gsl_blas_ssymm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo,
++                     float alpha,
++                     const gsl_matrix_float * A,
++                     const gsl_matrix_float * B,
++                     float beta,
++                     gsl_matrix_float * C);
++
++int  gsl_blas_ssyrk (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t Trans,
++                     float alpha,
++                     const gsl_matrix_float * A,
++                     float beta,
++                     gsl_matrix_float * C);
++
++int  gsl_blas_ssyr2k (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t Trans,
++                      float alpha,
++                      const gsl_matrix_float * A,
++                      const gsl_matrix_float * B,
++                      float beta,
++                      gsl_matrix_float * C);
++
++int  gsl_blas_strmm (CBLAS_SIDE_t Side,
++                     CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA,
++                     CBLAS_DIAG_t Diag,
++                     float alpha,
++                     const gsl_matrix_float * A,
++                     gsl_matrix_float * B);
++
++int  gsl_blas_strsm (CBLAS_SIDE_t Side,
++                     CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA,
++                     CBLAS_DIAG_t Diag,
++                     float alpha,
++                     const gsl_matrix_float * A,
++                     gsl_matrix_float * B);
++
++int  gsl_blas_dgemm (CBLAS_TRANSPOSE_t TransA,
++                     CBLAS_TRANSPOSE_t TransB,
++                     double alpha,
++                     const gsl_matrix * A,
++                     const gsl_matrix * B,
++                     double beta,
++                     gsl_matrix * C);
++
++int  gsl_blas_dsymm (CBLAS_SIDE_t Side,
++                     CBLAS_UPLO_t Uplo,
++                     double alpha,
++                     const gsl_matrix * A,
++                     const gsl_matrix * B,
++                     double beta,
++                     gsl_matrix * C);
++
++int  gsl_blas_dsyrk (CBLAS_UPLO_t Uplo,
++                     CBLAS_TRANSPOSE_t Trans,
++                     double alpha,
++                     const gsl_matrix * A,
++                     double beta,
++                     gsl_matrix * C);
++
++int  gsl_blas_dsyr2k (CBLAS_UPLO_t Uplo,
++                      CBLAS_TRANSPOSE_t Trans,
++                      double alpha,
++                      const  gsl_matrix * A,
++                      const  gsl_matrix * B,
++                      double beta,
++                      gsl_matrix * C);
++
++int  gsl_blas_dtrmm (CBLAS_SIDE_t Side,
++                     CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA,
++                     CBLAS_DIAG_t Diag,
++                     double alpha,
++                     const gsl_matrix * A,
++                     gsl_matrix * B);
++
++int  gsl_blas_dtrsm (CBLAS_SIDE_t Side,
++                     CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA,
++                     CBLAS_DIAG_t Diag,
++                     double alpha,
++                     const gsl_matrix * A,
++                     gsl_matrix * B);
++
++int  gsl_blas_cgemm (CBLAS_TRANSPOSE_t TransA,
++                     CBLAS_TRANSPOSE_t TransB,
++                     const gsl_complex_float alpha,
++                     const gsl_matrix_complex_float * A,
++                     const gsl_matrix_complex_float * B,
++                     const gsl_complex_float beta,
++                     gsl_matrix_complex_float * C);
++
++int  gsl_blas_csymm (CBLAS_SIDE_t Side,
++                     CBLAS_UPLO_t Uplo,
++                     const gsl_complex_float alpha,
++                     const gsl_matrix_complex_float * A,
++                     const gsl_matrix_complex_float * B,
++                     const gsl_complex_float beta,
++                     gsl_matrix_complex_float * C);
++
++int  gsl_blas_csyrk (CBLAS_UPLO_t Uplo,
++                     CBLAS_TRANSPOSE_t Trans,
++                     const gsl_complex_float alpha,
++                     const gsl_matrix_complex_float * A,
++                     const gsl_complex_float beta,
++                     gsl_matrix_complex_float * C);
++
++int  gsl_blas_csyr2k (CBLAS_UPLO_t Uplo,
++                      CBLAS_TRANSPOSE_t Trans,
++                      const gsl_complex_float alpha,
++                      const gsl_matrix_complex_float * A,
++                      const gsl_matrix_complex_float * B,
++                      const gsl_complex_float beta,
++                      gsl_matrix_complex_float * C);
++
++int  gsl_blas_ctrmm (CBLAS_SIDE_t Side,
++                     CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA,
++                     CBLAS_DIAG_t Diag,
++                     const gsl_complex_float alpha,
++                     const gsl_matrix_complex_float * A,
++                     gsl_matrix_complex_float * B);
++
++int  gsl_blas_ctrsm (CBLAS_SIDE_t Side,
++                     CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA,
++                     CBLAS_DIAG_t Diag,
++                     const gsl_complex_float alpha,
++                     const gsl_matrix_complex_float * A,
++                     gsl_matrix_complex_float * B);
++
++int  gsl_blas_zgemm (CBLAS_TRANSPOSE_t TransA,
++                     CBLAS_TRANSPOSE_t TransB,
++                     const gsl_complex alpha,
++                     const gsl_matrix_complex * A,
++                     const gsl_matrix_complex * B,
++                     const gsl_complex beta,
++                     gsl_matrix_complex * C);
++
++int  gsl_blas_zsymm (CBLAS_SIDE_t Side,
++                     CBLAS_UPLO_t Uplo,
++                     const gsl_complex alpha,
++                     const gsl_matrix_complex * A,
++                     const gsl_matrix_complex * B,
++                     const gsl_complex beta,
++                     gsl_matrix_complex * C);
++
++int  gsl_blas_zsyrk (CBLAS_UPLO_t Uplo,
++                     CBLAS_TRANSPOSE_t Trans,
++                     const gsl_complex alpha,
++                     const gsl_matrix_complex * A,
++                     const gsl_complex beta,
++                     gsl_matrix_complex * C);
++
++int  gsl_blas_zsyr2k (CBLAS_UPLO_t Uplo,
++                      CBLAS_TRANSPOSE_t Trans,
++                      const gsl_complex alpha,
++                      const gsl_matrix_complex * A,
++                      const gsl_matrix_complex * B,
++                      const gsl_complex beta,
++                      gsl_matrix_complex *C);
++
++int  gsl_blas_ztrmm (CBLAS_SIDE_t Side,
++                     CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA,
++                     CBLAS_DIAG_t Diag,
++                     const gsl_complex alpha,
++                     const gsl_matrix_complex * A,
++                     gsl_matrix_complex * B);
++
++int  gsl_blas_ztrsm (CBLAS_SIDE_t Side,
++                     CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA,
++                     CBLAS_DIAG_t Diag,
++                     const gsl_complex alpha,
++                     const gsl_matrix_complex * A,
++                     gsl_matrix_complex * B);
++
++/*
++ * Routines with prefixes C and Z only
++ */
++int  gsl_blas_chemm (CBLAS_SIDE_t Side,
++                     CBLAS_UPLO_t Uplo,
++                     const gsl_complex_float alpha,
++                     const gsl_matrix_complex_float * A,
++                     const gsl_matrix_complex_float * B,
++                     const gsl_complex_float beta,
++                     gsl_matrix_complex_float * C);
++
++int  gsl_blas_cherk (CBLAS_UPLO_t Uplo,
++                     CBLAS_TRANSPOSE_t Trans,
++                     float alpha,
++                     const gsl_matrix_complex_float * A,
++                     float beta,
++                     gsl_matrix_complex_float * C);
++
++int  gsl_blas_cher2k (CBLAS_UPLO_t Uplo,
++                      CBLAS_TRANSPOSE_t Trans,
++                      const gsl_complex_float alpha,
++                      const gsl_matrix_complex_float * A,
++                      const gsl_matrix_complex_float * B,
++                      float beta,
++                      gsl_matrix_complex_float * C);
++
++int  gsl_blas_zhemm (CBLAS_SIDE_t Side,
++                     CBLAS_UPLO_t Uplo,
++                     const gsl_complex alpha,
++                     const gsl_matrix_complex * A,
++                     const gsl_matrix_complex * B,
++                     const gsl_complex beta,
++                     gsl_matrix_complex * C);
++
++int  gsl_blas_zherk (CBLAS_UPLO_t Uplo,
++                     CBLAS_TRANSPOSE_t Trans,
++                     double alpha,
++                     const gsl_matrix_complex * A,
++                     double beta,
++                     gsl_matrix_complex * C);
++
++int  gsl_blas_zher2k (CBLAS_UPLO_t Uplo,
++                      CBLAS_TRANSPOSE_t Trans,
++                      const gsl_complex alpha,
++                      const gsl_matrix_complex * A,
++                      const gsl_matrix_complex * B,
++                      double beta,
++                      gsl_matrix_complex * C);
++
++
++__END_DECLS
++
++#endif /* __GSL_BLAS_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_short.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_short.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_short.h	(revision 14078)
+@@ -0,0 +1,230 @@
++/* vector/gsl_vector_short.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_VECTOR_SHORT_H__
++#define __GSL_VECTOR_SHORT_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_types.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_inline.h>
++#include <gsl/gsl_check_range.h>
++#include <gsl/gsl_block_short.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++typedef struct 
++{
++  size_t size;
++  size_t stride;
++  short *data;
++  gsl_block_short *block;
++  int owner;
++} 
++gsl_vector_short;
++
++typedef struct
++{
++  gsl_vector_short vector;
++} _gsl_vector_short_view;
++
++typedef _gsl_vector_short_view gsl_vector_short_view;
++
++typedef struct
++{
++  gsl_vector_short vector;
++} _gsl_vector_short_const_view;
++
++typedef const _gsl_vector_short_const_view gsl_vector_short_const_view;
++
++
++/* Allocation */
++
++gsl_vector_short *gsl_vector_short_alloc (const size_t n);
++gsl_vector_short *gsl_vector_short_calloc (const size_t n);
++
++gsl_vector_short *gsl_vector_short_alloc_from_block (gsl_block_short * b,
++                                                     const size_t offset, 
++                                                     const size_t n, 
++                                                     const size_t stride);
++
++gsl_vector_short *gsl_vector_short_alloc_from_vector (gsl_vector_short * v,
++                                                      const size_t offset, 
++                                                      const size_t n, 
++                                                      const size_t stride);
++
++void gsl_vector_short_free (gsl_vector_short * v);
++
++/* Views */
++
++_gsl_vector_short_view 
++gsl_vector_short_view_array (short *v, size_t n);
++
++_gsl_vector_short_view 
++gsl_vector_short_view_array_with_stride (short *base,
++                                         size_t stride,
++                                         size_t n);
++
++_gsl_vector_short_const_view 
++gsl_vector_short_const_view_array (const short *v, size_t n);
++
++_gsl_vector_short_const_view 
++gsl_vector_short_const_view_array_with_stride (const short *base,
++                                               size_t stride,
++                                               size_t n);
++
++_gsl_vector_short_view 
++gsl_vector_short_subvector (gsl_vector_short *v, 
++                            size_t i, 
++                            size_t n);
++
++_gsl_vector_short_view 
++gsl_vector_short_subvector_with_stride (gsl_vector_short *v, 
++                                        size_t i,
++                                        size_t stride,
++                                        size_t n);
++
++_gsl_vector_short_const_view 
++gsl_vector_short_const_subvector (const gsl_vector_short *v, 
++                                  size_t i, 
++                                  size_t n);
++
++_gsl_vector_short_const_view 
++gsl_vector_short_const_subvector_with_stride (const gsl_vector_short *v, 
++                                              size_t i, 
++                                              size_t stride,
++                                              size_t n);
++
++/* Operations */
++
++void gsl_vector_short_set_zero (gsl_vector_short * v);
++void gsl_vector_short_set_all (gsl_vector_short * v, short x);
++int gsl_vector_short_set_basis (gsl_vector_short * v, size_t i);
++
++int gsl_vector_short_fread (FILE * stream, gsl_vector_short * v);
++int gsl_vector_short_fwrite (FILE * stream, const gsl_vector_short * v);
++int gsl_vector_short_fscanf (FILE * stream, gsl_vector_short * v);
++int gsl_vector_short_fprintf (FILE * stream, const gsl_vector_short * v,
++                              const char *format);
++
++int gsl_vector_short_memcpy (gsl_vector_short * dest, const gsl_vector_short * src);
++
++int gsl_vector_short_reverse (gsl_vector_short * v);
++
++int gsl_vector_short_swap (gsl_vector_short * v, gsl_vector_short * w);
++int gsl_vector_short_swap_elements (gsl_vector_short * v, const size_t i, const size_t j);
++
++short gsl_vector_short_max (const gsl_vector_short * v);
++short gsl_vector_short_min (const gsl_vector_short * v);
++void gsl_vector_short_minmax (const gsl_vector_short * v, short * min_out, short * max_out);
++
++size_t gsl_vector_short_max_index (const gsl_vector_short * v);
++size_t gsl_vector_short_min_index (const gsl_vector_short * v);
++void gsl_vector_short_minmax_index (const gsl_vector_short * v, size_t * imin, size_t * imax);
++
++int gsl_vector_short_add (gsl_vector_short * a, const gsl_vector_short * b);
++int gsl_vector_short_sub (gsl_vector_short * a, const gsl_vector_short * b);
++int gsl_vector_short_mul (gsl_vector_short * a, const gsl_vector_short * b);
++int gsl_vector_short_div (gsl_vector_short * a, const gsl_vector_short * b);
++int gsl_vector_short_scale (gsl_vector_short * a, const double x);
++int gsl_vector_short_add_constant (gsl_vector_short * a, const double x);
++
++int gsl_vector_short_equal (const gsl_vector_short * u, 
++                            const gsl_vector_short * v);
++
++int gsl_vector_short_isnull (const gsl_vector_short * v);
++int gsl_vector_short_ispos (const gsl_vector_short * v);
++int gsl_vector_short_isneg (const gsl_vector_short * v);
++int gsl_vector_short_isnonneg (const gsl_vector_short * v);
++
++INLINE_DECL short gsl_vector_short_get (const gsl_vector_short * v, const size_t i);
++INLINE_DECL void gsl_vector_short_set (gsl_vector_short * v, const size_t i, short x);
++INLINE_DECL short * gsl_vector_short_ptr (gsl_vector_short * v, const size_t i);
++INLINE_DECL const short * gsl_vector_short_const_ptr (const gsl_vector_short * v, const size_t i);
++
++#ifdef HAVE_INLINE
++
++INLINE_FUN
++short
++gsl_vector_short_get (const gsl_vector_short * v, const size_t i)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(i >= v->size))
++    {
++      GSL_ERROR_VAL ("index out of range", GSL_EINVAL, 0);
++    }
++#endif
++  return v->data[i * v->stride];
++}
++
++INLINE_FUN
++void
++gsl_vector_short_set (gsl_vector_short * v, const size_t i, short x)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(i >= v->size))
++    {
++      GSL_ERROR_VOID ("index out of range", GSL_EINVAL);
++    }
++#endif
++  v->data[i * v->stride] = x;
++}
++
++INLINE_FUN
++short *
++gsl_vector_short_ptr (gsl_vector_short * v, const size_t i)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(i >= v->size))
++    {
++      GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
++    }
++#endif
++  return (short *) (v->data + i * v->stride);
++}
++
++INLINE_FUN
++const short *
++gsl_vector_short_const_ptr (const gsl_vector_short * v, const size_t i)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(i >= v->size))
++    {
++      GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
++    }
++#endif
++  return (const short *) (v->data + i * v->stride);
++}
++#endif /* HAVE_INLINE */
++
++__END_DECLS
++
++#endif /* __GSL_VECTOR_SHORT_H__ */
++
++
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_fit.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_fit.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_fit.h	(revision 14078)
+@@ -0,0 +1,85 @@
++/* fit/gsl_fit.h
++ * 
++ * Copyright (C) 2000, 2007 Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_FIT_H__
++#define __GSL_FIT_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_math.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++int gsl_fit_linear (const double * x, const size_t xstride,
++                    const double * y, const size_t ystride,
++                    const size_t n,
++                    double * c0, double * c1, 
++                    double * cov00, double * cov01, double * cov11, 
++                    double * sumsq);
++
++
++int gsl_fit_wlinear (const double * x, const size_t xstride,
++                     const double * w, const size_t wstride,
++                     const double * y, const size_t ystride,
++                     const size_t n,
++                     double * c0, double * c1, 
++                     double * cov00, double * cov01, double * cov11, 
++                     double * chisq);
++
++int
++gsl_fit_linear_est (const double x, 
++                    const double c0, const double c1, 
++                    const double cov00, const double cov01, const double cov11,
++                    double *y, double *y_err);
++
++
++int gsl_fit_mul (const double * x, const size_t xstride,
++                 const double * y, const size_t ystride,
++                 const size_t n,
++                 double * c1, 
++                 double * cov11, 
++                 double * sumsq);
++
++int gsl_fit_wmul (const double * x, const size_t xstride,
++                  const double * w, const size_t wstride,
++                  const double * y, const size_t ystride,
++                  const size_t n,
++                  double * c1, 
++                  double * cov11, 
++                  double * sumsq);
++
++
++int
++gsl_fit_mul_est (const double x, 
++                 const double c1, 
++                 const double cov11,
++                 double *y, double *y_err);
++
++__END_DECLS
++
++#endif /* __GSL_FIT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_poly.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_poly.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_poly.h	(revision 14078)
+@@ -0,0 +1,179 @@
++/* poly/gsl_poly.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004, 2007 Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_POLY_H__
++#define __GSL_POLY_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_inline.h>
++#include <gsl/gsl_complex.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++
++/* Evaluate polynomial
++ *
++ * c[0] + c[1] x + c[2] x^2 + ... + c[len-1] x^(len-1)
++ *
++ * exceptions: none
++ */
++
++/* real polynomial, real x */
++INLINE_DECL double gsl_poly_eval(const double c[], const int len, const double x);
++
++/* real polynomial, complex x */
++INLINE_DECL gsl_complex gsl_poly_complex_eval (const double c [], const int len, const gsl_complex z);
++
++/* complex polynomial, complex x */
++INLINE_DECL gsl_complex gsl_complex_poly_complex_eval (const gsl_complex c [], const int len, const gsl_complex z);
++
++int gsl_poly_eval_derivs(const double c[], const size_t lenc, const double x, double res[], const size_t lenres);
++
++#ifdef HAVE_INLINE
++INLINE_FUN
++double 
++gsl_poly_eval(const double c[], const int len, const double x)
++{
++  int i;
++  double ans = c[len-1];
++  for(i=len-1; i>0; i--) ans = c[i-1] + x * ans;
++  return ans;
++}
++
++INLINE_FUN
++gsl_complex
++gsl_poly_complex_eval(const double c[], const int len, const gsl_complex z)
++{
++  int i;
++  gsl_complex ans;
++  GSL_SET_COMPLEX (&ans, c[len-1], 0.0);
++  for(i=len-1; i>0; i--) {
++    /* The following three lines are equivalent to
++       ans = gsl_complex_add_real (gsl_complex_mul (z, ans), c[i-1]); 
++       but faster */
++    double tmp = c[i-1] + GSL_REAL (z) * GSL_REAL (ans) - GSL_IMAG (z) * GSL_IMAG (ans);
++    GSL_SET_IMAG (&ans, GSL_IMAG (z) * GSL_REAL (ans) + GSL_REAL (z) * GSL_IMAG (ans));
++    GSL_SET_REAL (&ans, tmp);
++  } 
++  return ans;
++}
++
++INLINE_FUN
++gsl_complex
++gsl_complex_poly_complex_eval(const gsl_complex c[], const int len, const gsl_complex z)
++{
++  int i;
++  gsl_complex ans = c[len-1];
++  for(i=len-1; i>0; i--) {
++    /* The following three lines are equivalent to
++       ans = gsl_complex_add (c[i-1], gsl_complex_mul (x, ans));
++       but faster */
++    double tmp = GSL_REAL (c[i-1]) + GSL_REAL (z) * GSL_REAL (ans) - GSL_IMAG (z) * GSL_IMAG (ans);
++    GSL_SET_IMAG (&ans, GSL_IMAG (c[i-1]) + GSL_IMAG (z) * GSL_REAL (ans) + GSL_REAL (z) * GSL_IMAG (ans));
++    GSL_SET_REAL (&ans, tmp);
++  }
++  return ans;
++}
++#endif /* HAVE_INLINE */
++
++/* Work with divided-difference polynomials, Abramowitz & Stegun 25.2.26 */
++
++int
++gsl_poly_dd_init (double dd[], const double x[], const double y[],
++                  size_t size);
++
++INLINE_DECL double
++gsl_poly_dd_eval (const double dd[], const double xa[], const size_t size, const double x);
++
++#ifdef HAVE_INLINE
++INLINE_FUN
++double 
++gsl_poly_dd_eval(const double dd[], const double xa[], const size_t size, const double x)
++{
++  size_t i;
++  double y = dd[size - 1];
++  for (i = size - 1; i--;) y = dd[i] + (x - xa[i]) * y;
++  return y;
++}
++#endif /* HAVE_INLINE */
++
++
++int
++gsl_poly_dd_taylor (double c[], double xp,
++                    const double dd[], const double x[], size_t size,
++                    double w[]);
++
++/* Solve for real or complex roots of the standard quadratic equation,
++ * returning the number of real roots.
++ *
++ * Roots are returned ordered.
++ */
++int gsl_poly_solve_quadratic (double a, double b, double c, 
++                              double * x0, double * x1);
++
++int 
++gsl_poly_complex_solve_quadratic (double a, double b, double c, 
++                                  gsl_complex * z0, gsl_complex * z1);
++
++
++/* Solve for real roots of the cubic equation
++ * x^3 + a x^2 + b x + c = 0, returning the
++ * number of real roots.
++ *
++ * Roots are returned ordered.
++ */
++int gsl_poly_solve_cubic (double a, double b, double c, 
++                          double * x0, double * x1, double * x2);
++
++int 
++gsl_poly_complex_solve_cubic (double a, double b, double c, 
++                              gsl_complex * z0, gsl_complex * z1, 
++                              gsl_complex * z2);
++
++
++/* Solve for the complex roots of a general real polynomial */
++
++typedef struct 
++{ 
++  size_t nc ;
++  double * matrix ; 
++} 
++gsl_poly_complex_workspace ;
++
++gsl_poly_complex_workspace * gsl_poly_complex_workspace_alloc (size_t n);
++void gsl_poly_complex_workspace_free (gsl_poly_complex_workspace * w);
++
++int
++gsl_poly_complex_solve (const double * a, size_t n, 
++                        gsl_poly_complex_workspace * w,
++                        gsl_complex_packed_ptr z);
++
++__END_DECLS
++
++#endif /* __GSL_POLY_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_min.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_min.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_min.h	(revision 14078)
+@@ -0,0 +1,111 @@
++/* min/gsl_min.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007, 2009 Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_MIN_H__
++#define __GSL_MIN_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_types.h>
++#include <gsl/gsl_math.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++typedef struct
++  {
++    const char *name;
++    size_t size;
++    int (*set) (void *state, gsl_function * f, double x_minimum, double f_minimum, double x_lower, double f_lower, double x_upper, double f_upper);
++    int (*iterate) (void *state, gsl_function * f, double * x_minimum, double * f_minimum, double * x_lower, double * f_lower, double * x_upper, double * f_upper);
++  }
++gsl_min_fminimizer_type;
++
++typedef struct
++  {
++    const gsl_min_fminimizer_type * type;
++    gsl_function * function ;
++    double x_minimum ;
++    double x_lower ;
++    double x_upper ;
++    double f_minimum, f_lower, f_upper;
++    void *state;
++  }
++gsl_min_fminimizer;
++
++gsl_min_fminimizer *
++gsl_min_fminimizer_alloc (const gsl_min_fminimizer_type * T) ;
++                                      
++void gsl_min_fminimizer_free (gsl_min_fminimizer * s);
++
++int gsl_min_fminimizer_set (gsl_min_fminimizer * s, 
++                            gsl_function * f, double x_minimum, 
++                            double x_lower, double x_upper);
++
++int gsl_min_fminimizer_set_with_values (gsl_min_fminimizer * s, 
++                                        gsl_function * f, 
++                                        double x_minimum, double f_minimum,
++                                        double x_lower, double f_lower,
++                                        double x_upper, double f_upper);
++
++int gsl_min_fminimizer_iterate (gsl_min_fminimizer * s);
++
++const char * gsl_min_fminimizer_name (const gsl_min_fminimizer * s);
++
++double gsl_min_fminimizer_x_minimum (const gsl_min_fminimizer * s);
++double gsl_min_fminimizer_x_lower (const gsl_min_fminimizer * s);
++double gsl_min_fminimizer_x_upper (const gsl_min_fminimizer * s);
++double gsl_min_fminimizer_f_minimum (const gsl_min_fminimizer * s);
++double gsl_min_fminimizer_f_lower (const gsl_min_fminimizer * s);
++double gsl_min_fminimizer_f_upper (const gsl_min_fminimizer * s);
++
++/* Deprecated, use x_minimum instead */
++double gsl_min_fminimizer_minimum (const gsl_min_fminimizer * s);
++
++int
++gsl_min_test_interval (double x_lower, double x_upper, double epsabs, double epsrel);
++
++GSL_VAR const gsl_min_fminimizer_type  * gsl_min_fminimizer_goldensection;
++GSL_VAR const gsl_min_fminimizer_type  * gsl_min_fminimizer_brent;
++GSL_VAR const gsl_min_fminimizer_type  * gsl_min_fminimizer_quad_golden;
++
++typedef
++int (*gsl_min_bracketing_function)(gsl_function *f,
++                                   double *x_minimum,double * f_minimum,
++                                   double *x_lower, double * f_lower,
++                                   double *x_upper, double * f_upper,
++                                   size_t eval_max);
++
++int 
++gsl_min_find_bracket(gsl_function *f,double *x_minimum,double * f_minimum,
++                     double *x_lower, double * f_lower,
++                     double *x_upper, double * f_upper,
++                     size_t eval_max);
++
++__END_DECLS
++
++#endif /* __GSL_MIN_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_integration.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_integration.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_integration.h	(revision 14078)
+@@ -0,0 +1,323 @@
++/* integration/gsl_integration.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_INTEGRATION_H__
++#define __GSL_INTEGRATION_H__
++#include <stdlib.h>
++#include <gsl/gsl_math.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++/* Workspace for adaptive integrators */
++
++typedef struct
++  {
++    size_t limit;
++    size_t size;
++    size_t nrmax;
++    size_t i;
++    size_t maximum_level;
++    double *alist;
++    double *blist;
++    double *rlist;
++    double *elist;
++    size_t *order;
++    size_t *level;
++  }
++gsl_integration_workspace;
++
++gsl_integration_workspace *
++  gsl_integration_workspace_alloc (const size_t n);
++
++void
++  gsl_integration_workspace_free (gsl_integration_workspace * w);
++
++
++/* Workspace for QAWS integrator */
++
++typedef struct
++{
++  double alpha;
++  double beta;
++  int mu;
++  int nu;
++  double ri[25];
++  double rj[25];
++  double rg[25];
++  double rh[25];
++}
++gsl_integration_qaws_table;
++
++gsl_integration_qaws_table * 
++gsl_integration_qaws_table_alloc (double alpha, double beta, int mu, int nu);
++
++int
++gsl_integration_qaws_table_set (gsl_integration_qaws_table * t,
++                                double alpha, double beta, int mu, int nu);
++
++void
++gsl_integration_qaws_table_free (gsl_integration_qaws_table * t);
++
++/* Workspace for QAWO integrator */
++
++enum gsl_integration_qawo_enum { GSL_INTEG_COSINE, GSL_INTEG_SINE };
++
++typedef struct
++{
++  size_t n;
++  double omega;
++  double L;
++  double par;
++  enum gsl_integration_qawo_enum sine;
++  double *chebmo;
++}
++gsl_integration_qawo_table;
++
++gsl_integration_qawo_table * 
++gsl_integration_qawo_table_alloc (double omega, double L, 
++                                  enum gsl_integration_qawo_enum sine,
++                                  size_t n);
++
++int
++gsl_integration_qawo_table_set (gsl_integration_qawo_table * t,
++                                double omega, double L,
++                                enum gsl_integration_qawo_enum sine);
++
++int
++gsl_integration_qawo_table_set_length (gsl_integration_qawo_table * t,
++                                       double L);
++
++void
++gsl_integration_qawo_table_free (gsl_integration_qawo_table * t);
++
++
++/* Definition of an integration rule */
++
++typedef void gsl_integration_rule (const gsl_function * f,
++                                   double a, double b,
++                                   double *result, double *abserr,
++                                   double *defabs, double *resabs);
++
++void gsl_integration_qk15 (const gsl_function * f, double a, double b,
++                           double *result, double *abserr,
++                           double *resabs, double *resasc);
++
++void gsl_integration_qk21 (const gsl_function * f, double a, double b,
++                           double *result, double *abserr,
++                           double *resabs, double *resasc);
++
++void gsl_integration_qk31 (const gsl_function * f, double a, double b,
++                           double *result, double *abserr,
++                           double *resabs, double *resasc);
++
++void gsl_integration_qk41 (const gsl_function * f, double a, double b,
++                           double *result, double *abserr,
++                           double *resabs, double *resasc);
++
++void gsl_integration_qk51 (const gsl_function * f, double a, double b,
++                           double *result, double *abserr,
++                           double *resabs, double *resasc);
++
++void gsl_integration_qk61 (const gsl_function * f, double a, double b,
++                           double *result, double *abserr,
++                           double *resabs, double *resasc);
++
++void gsl_integration_qcheb (gsl_function * f, double a, double b, 
++                            double *cheb12, double *cheb24);
++
++/* The low-level integration rules in QUADPACK are identified by small
++   integers (1-6). We'll use symbolic constants to refer to them.  */
++
++enum
++  {
++    GSL_INTEG_GAUSS15 = 1,      /* 15 point Gauss-Kronrod rule */
++    GSL_INTEG_GAUSS21 = 2,      /* 21 point Gauss-Kronrod rule */
++    GSL_INTEG_GAUSS31 = 3,      /* 31 point Gauss-Kronrod rule */
++    GSL_INTEG_GAUSS41 = 4,      /* 41 point Gauss-Kronrod rule */
++    GSL_INTEG_GAUSS51 = 5,      /* 51 point Gauss-Kronrod rule */
++    GSL_INTEG_GAUSS61 = 6       /* 61 point Gauss-Kronrod rule */
++  };
++
++void 
++gsl_integration_qk (const int n, const double xgk[], 
++                    const double wg[], const double wgk[],
++                    double fv1[], double fv2[],
++                    const gsl_function *f, double a, double b,
++                    double * result, double * abserr, 
++                    double * resabs, double * resasc);
++
++
++int gsl_integration_qng (const gsl_function * f,
++                         double a, double b,
++                         double epsabs, double epsrel,
++                         double *result, double *abserr,
++                         size_t * neval);
++
++int gsl_integration_qag (const gsl_function * f,
++                         double a, double b,
++                         double epsabs, double epsrel, size_t limit,
++                         int key,
++                         gsl_integration_workspace * workspace,
++                         double *result, double *abserr);
++
++int gsl_integration_qagi (gsl_function * f,
++                          double epsabs, double epsrel, size_t limit,
++                          gsl_integration_workspace * workspace,
++                          double *result, double *abserr);
++
++int gsl_integration_qagiu (gsl_function * f,
++                           double a,
++                           double epsabs, double epsrel, size_t limit,
++                           gsl_integration_workspace * workspace,
++                           double *result, double *abserr);
++
++int gsl_integration_qagil (gsl_function * f,
++                           double b,
++                           double epsabs, double epsrel, size_t limit,
++                           gsl_integration_workspace * workspace,
++                           double *result, double *abserr);
++
++
++int gsl_integration_qags (const gsl_function * f,
++                          double a, double b,
++                          double epsabs, double epsrel, size_t limit,
++                          gsl_integration_workspace * workspace,
++                          double *result, double *abserr);
++
++int gsl_integration_qagp (const gsl_function * f,
++                          double *pts, size_t npts,
++                          double epsabs, double epsrel, size_t limit,
++                          gsl_integration_workspace * workspace,
++                          double *result, double *abserr);
++
++int gsl_integration_qawc (gsl_function *f,
++                          const double a, const double b, const double c,
++                          const double epsabs, const double epsrel, const size_t limit,
++                          gsl_integration_workspace * workspace,
++                          double * result, double * abserr);
++
++int gsl_integration_qaws (gsl_function * f,
++                          const double a, const double b,
++                          gsl_integration_qaws_table * t,
++                          const double epsabs, const double epsrel,
++                          const size_t limit,
++                          gsl_integration_workspace * workspace,
++                          double *result, double *abserr);
++
++int gsl_integration_qawo (gsl_function * f,
++                          const double a,
++                          const double epsabs, const double epsrel,
++                          const size_t limit,
++                          gsl_integration_workspace * workspace,
++                          gsl_integration_qawo_table * wf,
++                          double *result, double *abserr);
++
++int gsl_integration_qawf (gsl_function * f,
++                          const double a,
++                          const double epsabs,
++                          const size_t limit,
++                          gsl_integration_workspace * workspace,
++                          gsl_integration_workspace * cycle_workspace,
++                          gsl_integration_qawo_table * wf,
++                          double *result, double *abserr);
++
++/* Workspace for fixed-order Gauss-Legendre integration */
++
++typedef struct
++  {
++    size_t n;         /* number of points */
++    double *x;        /* Gauss abscissae/points */
++    double *w;        /* Gauss weights for each abscissae */
++    int precomputed;  /* high precision abscissae/weights precomputed? */
++  }
++gsl_integration_glfixed_table;
++
++
++gsl_integration_glfixed_table *
++  gsl_integration_glfixed_table_alloc (size_t n);
++
++void
++  gsl_integration_glfixed_table_free (gsl_integration_glfixed_table * t);
++
++/* Routine for fixed-order Gauss-Legendre integration */
++
++double
++  gsl_integration_glfixed (const gsl_function *f,
++                           double a,
++                           double b,
++                           const gsl_integration_glfixed_table * t);
++
++/* Routine to retrieve the i-th Gauss-Legendre point and weight from t */
++
++int
++  gsl_integration_glfixed_point (double a,
++                                 double b,
++                                 size_t i,
++                                 double *xi,
++                                 double *wi,
++                                 const gsl_integration_glfixed_table * t);
++
++
++/* Cquad integration - Pedro Gonnet */
++
++/* Data of a single interval */
++typedef struct
++{
++  double a, b;
++  double c[64];
++  double fx[33];
++  double igral, err;
++  int depth, rdepth, ndiv;
++} gsl_integration_cquad_ival;
++
++
++/* The workspace is just a collection of intervals */
++typedef struct
++{
++  size_t size;
++  gsl_integration_cquad_ival *ivals;
++  size_t *heap;
++} gsl_integration_cquad_workspace;
++
++gsl_integration_cquad_workspace *
++gsl_integration_cquad_workspace_alloc (const size_t n);
++
++void
++gsl_integration_cquad_workspace_free (gsl_integration_cquad_workspace * w);
++
++int
++gsl_integration_cquad (const gsl_function * f, double a, double b,
++		       double epsabs, double epsrel,
++		       gsl_integration_cquad_workspace * ws,
++		       double *result, double *abserr, size_t * nevals);
++
++
++__END_DECLS
++
++#endif /* __GSL_INTEGRATION_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_mode.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_mode.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_mode.h	(revision 14078)
+@@ -0,0 +1,88 @@
++/* gsl_mode.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004 Gerard Jungman
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++/* Author:  B. Gough and G. Jungman */
++
++#ifndef __GSL_MODE_H__
++#define __GSL_MODE_H__
++#include <gsl/gsl_inline.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++
++/* Some functions can take a mode argument. This
++ * is a rough method to do things like control
++ * the precision of the algorithm. This mainly
++ * occurs in special functions, but we figured
++ * it was ok to have a general facility.
++ *
++ * The mode type is 32-bit field. Most of
++ * the fields are currently unused. Users
++ * '|' various predefined constants to get
++ * a desired mode.
++ */
++typedef unsigned int gsl_mode_t;
++
++
++/* Here are the predefined constants.
++ * Note that the precision constants
++ * are special because they are used
++ * to index arrays, so do not change
++ * them. The precision information is
++ * in the low order 3 bits of gsl_mode_t
++ * (the third bit is currently unused).
++ */
++
++/* Note that "0" is double precision,
++ * so that you get that by default if
++ * you forget a flag.
++ */
++#define GSL_PREC_DOUBLE  0
++#define GSL_PREC_SINGLE  1
++#define GSL_PREC_APPROX  2
++
++#ifdef HAVE_INLINE
++INLINE_FUN unsigned int GSL_MODE_PREC(gsl_mode_t mt);
++
++INLINE_FUN unsigned int
++GSL_MODE_PREC(gsl_mode_t mt)
++{ return  (mt & (unsigned int)7); }
++#else  /* HAVE_INLINE */
++#define GSL_MODE_PREC(mt) ((mt) & (unsigned int)7)
++#endif /* HAVE_INLINE */
++
++
++/* Here are some predefined generic modes.
++ */
++#define GSL_MODE_DEFAULT  0
++
++
++__END_DECLS
++
++#endif /* __GSL_MODE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_char.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_char.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_char.h	(revision 14078)
+@@ -0,0 +1,50 @@
++/* sort/gsl_sort_char.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_SORT_CHAR_H__
++#define __GSL_SORT_CHAR_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_permutation.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++void gsl_sort_char (char * data, const size_t stride, const size_t n);
++void gsl_sort_char_index (size_t * p, const char * data, const size_t stride, const size_t n);
++
++int gsl_sort_char_smallest (char * dest, const size_t k, const char * src, const size_t stride, const size_t n);
++int gsl_sort_char_smallest_index (size_t * p, const size_t k, const char * src, const size_t stride, const size_t n);
++
++int gsl_sort_char_largest (char * dest, const size_t k, const char * src, const size_t stride, const size_t n);
++int gsl_sort_char_largest_index (size_t * p, const size_t k, const char * src, const size_t stride, const size_t n);
++
++__END_DECLS
++
++#endif /* __GSL_SORT_CHAR_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_uchar.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_uchar.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_uchar.h	(revision 14078)
+@@ -0,0 +1,45 @@
++/* permutation/gsl_permute_vector_uchar.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_PERMUTE_VECTOR_UCHAR_H__
++#define __GSL_PERMUTE_VECTOR_UCHAR_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_permutation.h>
++#include <gsl/gsl_vector_uchar.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++int gsl_permute_vector_uchar (const gsl_permutation * p, gsl_vector_uchar * v);
++int gsl_permute_vector_uchar_inverse (const gsl_permutation * p, gsl_vector_uchar * v);
++
++__END_DECLS
++
++#endif /* __GSL_PERMUTE_VECTOR_UCHAR_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_char.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_char.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_char.h	(revision 14078)
+@@ -0,0 +1,65 @@
++/* block/gsl_block_char.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_BLOCK_CHAR_H__
++#define __GSL_BLOCK_CHAR_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++struct gsl_block_char_struct
++{
++  size_t size;
++  char *data;
++};
++
++typedef struct gsl_block_char_struct gsl_block_char;
++
++gsl_block_char *gsl_block_char_alloc (const size_t n);
++gsl_block_char *gsl_block_char_calloc (const size_t n);
++void gsl_block_char_free (gsl_block_char * b);
++
++int gsl_block_char_fread (FILE * stream, gsl_block_char * b);
++int gsl_block_char_fwrite (FILE * stream, const gsl_block_char * b);
++int gsl_block_char_fscanf (FILE * stream, gsl_block_char * b);
++int gsl_block_char_fprintf (FILE * stream, const gsl_block_char * b, const char *format);
++
++int gsl_block_char_raw_fread (FILE * stream, char * b, const size_t n, const size_t stride);
++int gsl_block_char_raw_fwrite (FILE * stream, const char * b, const size_t n, const size_t stride);
++int gsl_block_char_raw_fscanf (FILE * stream, char * b, const size_t n, const size_t stride);
++int gsl_block_char_raw_fprintf (FILE * stream, const char * b, const size_t n, const size_t stride, const char *format);
++
++size_t gsl_block_char_size (const gsl_block_char * b);
++char * gsl_block_char_data (const gsl_block_char * b);
++
++__END_DECLS
++
++#endif /* __GSL_BLOCK_CHAR_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_odeiv2.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_odeiv2.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_odeiv2.h	(revision 14078)
+@@ -0,0 +1,332 @@
++/* ode-initval/odeiv2.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++/* Author:  G. Jungman */
++/* Modified by Tuomo Keskitalo */
++
++#ifndef __GSL_ODEIV2_H__
++#define __GSL_ODEIV2_H__
++
++#include <stdio.h>
++#include <stdlib.h>
++#include <gsl/gsl_types.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS          /* empty */
++# define __END_DECLS            /* empty */
++#endif
++
++__BEGIN_DECLS
++/* Description of a system of ODEs.
++ *
++ * y' = f(t,y) = dydt(t, y)
++ *
++ * The system is specified by giving the right-hand-side
++ * of the equation and possibly a jacobian function.
++ *
++ * Some methods require the jacobian function, which calculates
++ * the matrix dfdy and the vector dfdt. The matrix dfdy conforms
++ * to the GSL standard, being a continuous range of floating point
++ * values, in row-order.
++ *
++ * As with GSL function objects, user-supplied parameter
++ * data is also present. 
++ */
++  typedef struct
++{
++  int (*function) (double t, const double y[], double dydt[], void *params);
++  int (*jacobian) (double t, const double y[], double *dfdy, double dfdt[],
++                   void *params);
++  size_t dimension;
++  void *params;
++}
++gsl_odeiv2_system;
++
++/* Function evaluation macros */
++
++#define GSL_ODEIV_FN_EVAL(S,t,y,f)  (*((S)->function))(t,y,f,(S)->params)
++#define GSL_ODEIV_JA_EVAL(S,t,y,dfdy,dfdt)  (*((S)->jacobian))(t,y,dfdy,dfdt,(S)->params)
++
++/* Type definitions */
++
++typedef struct gsl_odeiv2_step_struct gsl_odeiv2_step;
++typedef struct gsl_odeiv2_control_struct gsl_odeiv2_control;
++typedef struct gsl_odeiv2_evolve_struct gsl_odeiv2_evolve;
++typedef struct gsl_odeiv2_driver_struct gsl_odeiv2_driver;
++
++/* Stepper object
++ *
++ * Opaque object for stepping an ODE system from t to t+h.
++ * In general the object has some state which facilitates
++ * iterating the stepping operation.
++ */
++
++typedef struct
++{
++  const char *name;
++  int can_use_dydt_in;
++  int gives_exact_dydt_out;
++  void *(*alloc) (size_t dim);
++  int (*apply) (void *state, size_t dim, double t, double h, double y[],
++                double yerr[], const double dydt_in[], double dydt_out[],
++                const gsl_odeiv2_system * dydt);
++  int (*set_driver) (void *state, const gsl_odeiv2_driver * d);
++  int (*reset) (void *state, size_t dim);
++  unsigned int (*order) (void *state);
++  void (*free) (void *state);
++}
++gsl_odeiv2_step_type;
++
++struct gsl_odeiv2_step_struct
++{
++  const gsl_odeiv2_step_type *type;
++  size_t dimension;
++  void *state;
++};
++
++/* Available stepper types */
++
++GSL_VAR const gsl_odeiv2_step_type *gsl_odeiv2_step_rk2;
++GSL_VAR const gsl_odeiv2_step_type *gsl_odeiv2_step_rk4;
++GSL_VAR const gsl_odeiv2_step_type *gsl_odeiv2_step_rkf45;
++GSL_VAR const gsl_odeiv2_step_type *gsl_odeiv2_step_rkck;
++GSL_VAR const gsl_odeiv2_step_type *gsl_odeiv2_step_rk8pd;
++GSL_VAR const gsl_odeiv2_step_type *gsl_odeiv2_step_rk2imp;
++GSL_VAR const gsl_odeiv2_step_type *gsl_odeiv2_step_rk4imp;
++GSL_VAR const gsl_odeiv2_step_type *gsl_odeiv2_step_bsimp;
++GSL_VAR const gsl_odeiv2_step_type *gsl_odeiv2_step_rk1imp;
++GSL_VAR const gsl_odeiv2_step_type *gsl_odeiv2_step_msadams;
++GSL_VAR const gsl_odeiv2_step_type *gsl_odeiv2_step_msbdf;
++
++/* Stepper object methods */
++
++gsl_odeiv2_step *gsl_odeiv2_step_alloc (const gsl_odeiv2_step_type * T,
++                                        size_t dim);
++int gsl_odeiv2_step_reset (gsl_odeiv2_step * s);
++void gsl_odeiv2_step_free (gsl_odeiv2_step * s);
++const char *gsl_odeiv2_step_name (const gsl_odeiv2_step * s);
++unsigned int gsl_odeiv2_step_order (const gsl_odeiv2_step * s);
++int gsl_odeiv2_step_apply (gsl_odeiv2_step * s, double t, double h,
++                           double y[], double yerr[], const double dydt_in[],
++                           double dydt_out[], const gsl_odeiv2_system * dydt);
++int gsl_odeiv2_step_set_driver (gsl_odeiv2_step * s,
++                                const gsl_odeiv2_driver * d);
++
++/* Step size control object. */
++
++typedef struct
++{
++  const char *name;
++  void *(*alloc) (void);
++  int (*init) (void *state, double eps_abs, double eps_rel, double a_y,
++               double a_dydt);
++  int (*hadjust) (void *state, size_t dim, unsigned int ord, const double y[],
++                  const double yerr[], const double yp[], double *h);
++  int (*errlevel) (void *state, const double y, const double dydt,
++                   const double h, const size_t ind, double *errlev);
++  int (*set_driver) (void *state, const gsl_odeiv2_driver * d);
++  void (*free) (void *state);
++}
++gsl_odeiv2_control_type;
++
++struct gsl_odeiv2_control_struct
++{
++  const gsl_odeiv2_control_type *type;
++  void *state;
++};
++
++/* Possible return values for an hadjust() evolution method */
++
++#define GSL_ODEIV_HADJ_INC   1  /* step was increased */
++#define GSL_ODEIV_HADJ_NIL   0  /* step unchanged     */
++#define GSL_ODEIV_HADJ_DEC (-1) /* step decreased     */
++
++/* General step size control methods.
++ *
++ * The hadjust() method controls the adjustment of
++ * step size given the result of a step and the error.
++ * Valid hadjust() methods must return one of the codes below.
++ * errlevel function calculates the desired error level D0.
++ *
++ * The general data can be used by specializations
++ * to store state and control their heuristics.
++ */
++
++gsl_odeiv2_control *gsl_odeiv2_control_alloc (const gsl_odeiv2_control_type *
++                                              T);
++int gsl_odeiv2_control_init (gsl_odeiv2_control * c, double eps_abs,
++                             double eps_rel, double a_y, double a_dydt);
++void gsl_odeiv2_control_free (gsl_odeiv2_control * c);
++int gsl_odeiv2_control_hadjust (gsl_odeiv2_control * c, gsl_odeiv2_step * s,
++                                const double y[], const double yerr[],
++                                const double dydt[], double *h);
++const char *gsl_odeiv2_control_name (const gsl_odeiv2_control * c);
++int gsl_odeiv2_control_errlevel (gsl_odeiv2_control * c, const double y,
++                                 const double dydt, const double h,
++                                 const size_t ind, double *errlev);
++int gsl_odeiv2_control_set_driver (gsl_odeiv2_control * c,
++                                   const gsl_odeiv2_driver * d);
++
++/* Available control object constructors.
++ *
++ * The standard control object is a four parameter heuristic
++ * defined as follows:
++ *    D0 = eps_abs + eps_rel * (a_y |y| + a_dydt h |y'|)
++ *    D1 = |yerr|
++ *    q  = consistency order of method (q=4 for 4(5) embedded RK)
++ *    S  = safety factor (0.9 say)
++ *
++ *                      /  (D0/D1)^(1/(q+1))  D0 >= D1
++ *    h_NEW = S h_OLD * |
++ *                      \  (D0/D1)^(1/q)      D0 < D1
++ *
++ * This encompasses all the standard error scaling methods.
++ *
++ * The y method is the standard method with a_y=1, a_dydt=0.
++ * The yp method is the standard method with a_y=0, a_dydt=1.
++ */
++
++gsl_odeiv2_control *gsl_odeiv2_control_standard_new (double eps_abs,
++                                                     double eps_rel,
++                                                     double a_y,
++                                                     double a_dydt);
++gsl_odeiv2_control *gsl_odeiv2_control_y_new (double eps_abs, double eps_rel);
++gsl_odeiv2_control *gsl_odeiv2_control_yp_new (double eps_abs,
++                                               double eps_rel);
++
++/* This controller computes errors using different absolute errors for
++ * each component
++ *
++ *    D0 = eps_abs * scale_abs[i] + eps_rel * (a_y |y| + a_dydt h |y'|)
++ */
++
++gsl_odeiv2_control *gsl_odeiv2_control_scaled_new (double eps_abs,
++                                                   double eps_rel, double a_y,
++                                                   double a_dydt,
++                                                   const double scale_abs[],
++                                                   size_t dim);
++
++/* Evolution object */
++
++struct gsl_odeiv2_evolve_struct
++{
++  size_t dimension;
++  double *y0;
++  double *yerr;
++  double *dydt_in;
++  double *dydt_out;
++  double last_step;
++  unsigned long int count;
++  unsigned long int failed_steps;
++  const gsl_odeiv2_driver *driver;
++};
++
++/* Evolution object methods */
++
++gsl_odeiv2_evolve *gsl_odeiv2_evolve_alloc (size_t dim);
++int gsl_odeiv2_evolve_apply (gsl_odeiv2_evolve * e, gsl_odeiv2_control * con,
++                             gsl_odeiv2_step * step,
++                             const gsl_odeiv2_system * dydt, double *t,
++                             double t1, double *h, double y[]);
++int gsl_odeiv2_evolve_apply_fixed_step (gsl_odeiv2_evolve * e,
++                                        gsl_odeiv2_control * con,
++                                        gsl_odeiv2_step * step,
++                                        const gsl_odeiv2_system * dydt,
++                                        double *t, const double h0,
++                                        double y[]);
++int gsl_odeiv2_evolve_reset (gsl_odeiv2_evolve * e);
++void gsl_odeiv2_evolve_free (gsl_odeiv2_evolve * e);
++int gsl_odeiv2_evolve_set_driver (gsl_odeiv2_evolve * e,
++                                  const gsl_odeiv2_driver * d);
++
++/* Driver object
++ *
++ * This is a high level wrapper for step, control and
++ * evolve objects. 
++ */
++
++struct gsl_odeiv2_driver_struct
++{
++  const gsl_odeiv2_system *sys; /* ODE system */
++  gsl_odeiv2_step *s;           /* stepper object */
++  gsl_odeiv2_control *c;        /* control object */
++  gsl_odeiv2_evolve *e;         /* evolve object */
++  double h;                     /* step size */
++  double hmin;                  /* minimum step size allowed */
++  double hmax;                  /* maximum step size allowed */
++  unsigned long int n;          /* number of steps taken */
++  unsigned long int nmax;       /* Maximum number of steps allowed */
++};
++
++/* Driver object methods */
++
++gsl_odeiv2_driver *gsl_odeiv2_driver_alloc_y_new (const gsl_odeiv2_system *
++                                                  sys,
++                                                  const gsl_odeiv2_step_type *
++                                                  T, const double hstart,
++                                                  const double epsabs,
++                                                  const double epsrel);
++gsl_odeiv2_driver *gsl_odeiv2_driver_alloc_yp_new (const gsl_odeiv2_system *
++                                                   sys,
++                                                   const gsl_odeiv2_step_type
++                                                   * T, const double hstart,
++                                                   const double epsabs,
++                                                   const double epsrel);
++gsl_odeiv2_driver *gsl_odeiv2_driver_alloc_scaled_new (const gsl_odeiv2_system
++                                                       * sys,
++                                                       const
++                                                       gsl_odeiv2_step_type *
++                                                       T, const double hstart,
++                                                       const double epsabs,
++                                                       const double epsrel,
++                                                       const double a_y,
++                                                       const double a_dydt,
++                                                       const double
++                                                       scale_abs[]);
++gsl_odeiv2_driver *gsl_odeiv2_driver_alloc_standard_new (const
++                                                         gsl_odeiv2_system *
++                                                         sys,
++                                                         const
++                                                         gsl_odeiv2_step_type
++                                                         * T,
++                                                         const double hstart,
++                                                         const double epsabs,
++                                                         const double epsrel,
++                                                         const double a_y,
++                                                         const double a_dydt);
++int gsl_odeiv2_driver_set_hmin (gsl_odeiv2_driver * d, const double hmin);
++int gsl_odeiv2_driver_set_hmax (gsl_odeiv2_driver * d, const double hmax);
++int gsl_odeiv2_driver_set_nmax (gsl_odeiv2_driver * d,
++                                const unsigned long int nmax);
++int gsl_odeiv2_driver_apply (gsl_odeiv2_driver * d, double *t,
++                             const double t1, double y[]);
++int gsl_odeiv2_driver_apply_fixed_step (gsl_odeiv2_driver * d, double *t,
++                                        const double h,
++                                        const unsigned long int n,
++                                        double y[]);
++int gsl_odeiv2_driver_reset (gsl_odeiv2_driver * d);
++void gsl_odeiv2_driver_free (gsl_odeiv2_driver * state);
++
++__END_DECLS
++#endif /* __GSL_ODEIV2_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_check_range.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_check_range.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_check_range.h	(revision 14078)
+@@ -0,0 +1,57 @@
++/* vector/gsl_check_range.h
++ * 
++ * Copyright (C) 2003, 2004, 2007 Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_CHECK_RANGE_H__
++#define __GSL_CHECK_RANGE_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_types.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++GSL_VAR int gsl_check_range;
++
++/* Turn range checking on by default, unless the user defines
++   GSL_RANGE_CHECK_OFF, or defines GSL_RANGE_CHECK to 0 explicitly */
++
++#ifdef GSL_RANGE_CHECK_OFF
++# ifndef GSL_RANGE_CHECK
++#  define GSL_RANGE_CHECK 0
++# else
++#  error "cannot set both GSL_RANGE_CHECK and GSL_RANGE_CHECK_OFF"
++# endif
++#else
++# ifndef GSL_RANGE_CHECK
++#  define GSL_RANGE_CHECK 1
++# endif
++#endif
++
++__END_DECLS
++
++#endif /* __GSL_CHECK_RANGE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block.h	(revision 14078)
+@@ -0,0 +1,24 @@
++#ifndef __GSL_BLOCK_H__
++#define __GSL_BLOCK_H__
++
++#include <gsl/gsl_block_complex_long_double.h>
++#include <gsl/gsl_block_complex_double.h>
++#include <gsl/gsl_block_complex_float.h>
++
++#include <gsl/gsl_block_long_double.h>
++#include <gsl/gsl_block_double.h>
++#include <gsl/gsl_block_float.h>
++
++#include <gsl/gsl_block_ulong.h>
++#include <gsl/gsl_block_long.h>
++
++#include <gsl/gsl_block_uint.h>
++#include <gsl/gsl_block_int.h>
++
++#include <gsl/gsl_block_ushort.h>
++#include <gsl/gsl_block_short.h>
++
++#include <gsl/gsl_block_uchar.h>
++#include <gsl/gsl_block_char.h>
++
++#endif /* __GSL_BLOCK_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_precision.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_precision.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_precision.h	(revision 14078)
+@@ -0,0 +1,66 @@
++/* gsl_precision.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++/* Author:  B. Gough and G. Jungman */
++
++#ifndef __GSL_PRECISION_H__
++#define __GSL_PRECISION_H__
++#include <gsl/gsl_types.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++
++/* A type for the precision indicator.
++ * This is mainly for pedagogy.
++ */
++typedef  unsigned int  gsl_prec_t;
++
++
++/* The number of precision types.
++ * Remember that precision-mode
++ * can index an array.
++ */
++#define _GSL_PREC_T_NUM 3
++
++
++/* Arrays containing derived
++ * precision constants for the
++ * different precision levels.
++ */
++GSL_VAR const double gsl_prec_eps[];
++GSL_VAR const double gsl_prec_sqrt_eps[];
++GSL_VAR const double gsl_prec_root3_eps[];
++GSL_VAR const double gsl_prec_root4_eps[];
++GSL_VAR const double gsl_prec_root5_eps[];
++GSL_VAR const double gsl_prec_root6_eps[];
++
++
++__END_DECLS
++
++#endif /* __GSL_PRECISION_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_ulong.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_ulong.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_ulong.h	(revision 14078)
+@@ -0,0 +1,50 @@
++/* sort/gsl_sort_ulong.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_SORT_ULONG_H__
++#define __GSL_SORT_ULONG_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_permutation.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++void gsl_sort_ulong (unsigned long * data, const size_t stride, const size_t n);
++void gsl_sort_ulong_index (size_t * p, const unsigned long * data, const size_t stride, const size_t n);
++
++int gsl_sort_ulong_smallest (unsigned long * dest, const size_t k, const unsigned long * src, const size_t stride, const size_t n);
++int gsl_sort_ulong_smallest_index (size_t * p, const size_t k, const unsigned long * src, const size_t stride, const size_t n);
++
++int gsl_sort_ulong_largest (unsigned long * dest, const size_t k, const unsigned long * src, const size_t stride, const size_t n);
++int gsl_sort_ulong_largest_index (size_t * p, const size_t k, const unsigned long * src, const size_t stride, const size_t n);
++
++__END_DECLS
++
++#endif /* __GSL_SORT_ULONG_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_cdf.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_cdf.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_cdf.h	(revision 14078)
+@@ -0,0 +1,170 @@
++/* cdf/gsl_cdf.h
++ * 
++ * Copyright (C) 2002 Jason H. Stover.
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307, USA.
++ */
++
++/* Author:  J. Stover */
++
++#ifndef __GSL_CDF_H__
++#define __GSL_CDF_H__
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS          /* empty */
++# define __END_DECLS            /* empty */
++#endif
++
++__BEGIN_DECLS 
++
++double gsl_cdf_ugaussian_P (const double x);
++double gsl_cdf_ugaussian_Q (const double x);
++
++double gsl_cdf_ugaussian_Pinv (const double P);
++double gsl_cdf_ugaussian_Qinv (const double Q);
++
++double gsl_cdf_gaussian_P (const double x, const double sigma);
++double gsl_cdf_gaussian_Q (const double x, const double sigma);
++
++double gsl_cdf_gaussian_Pinv (const double P, const double sigma);
++double gsl_cdf_gaussian_Qinv (const double Q, const double sigma);
++
++double gsl_cdf_gamma_P (const double x, const double a, const double b);
++double gsl_cdf_gamma_Q (const double x, const double a, const double b);
++
++double gsl_cdf_gamma_Pinv (const double P, const double a, const double b);
++double gsl_cdf_gamma_Qinv (const double Q, const double a, const double b);
++
++double gsl_cdf_cauchy_P (const double x, const double a);
++double gsl_cdf_cauchy_Q (const double x, const double a);
++
++double gsl_cdf_cauchy_Pinv (const double P, const double a);
++double gsl_cdf_cauchy_Qinv (const double Q, const double a);
++
++double gsl_cdf_laplace_P (const double x, const double a);
++double gsl_cdf_laplace_Q (const double x, const double a);
++
++double gsl_cdf_laplace_Pinv (const double P, const double a);
++double gsl_cdf_laplace_Qinv (const double Q, const double a);
++
++double gsl_cdf_rayleigh_P (const double x, const double sigma);
++double gsl_cdf_rayleigh_Q (const double x, const double sigma);
++
++double gsl_cdf_rayleigh_Pinv (const double P, const double sigma);
++double gsl_cdf_rayleigh_Qinv (const double Q, const double sigma);
++
++double gsl_cdf_chisq_P (const double x, const double nu);
++double gsl_cdf_chisq_Q (const double x, const double nu);
++
++double gsl_cdf_chisq_Pinv (const double P, const double nu);
++double gsl_cdf_chisq_Qinv (const double Q, const double nu);
++
++double gsl_cdf_exponential_P (const double x, const double mu);
++double gsl_cdf_exponential_Q (const double x, const double mu);
++
++double gsl_cdf_exponential_Pinv (const double P, const double mu);
++double gsl_cdf_exponential_Qinv (const double Q, const double mu);
++
++double gsl_cdf_exppow_P (const double x, const double a, const double b);
++double gsl_cdf_exppow_Q (const double x, const double a, const double b);
++
++double gsl_cdf_tdist_P (const double x, const double nu);
++double gsl_cdf_tdist_Q (const double x, const double nu);
++
++double gsl_cdf_tdist_Pinv (const double P, const double nu);
++double gsl_cdf_tdist_Qinv (const double Q, const double nu);
++
++double gsl_cdf_fdist_P (const double x, const double nu1, const double nu2);
++double gsl_cdf_fdist_Q (const double x, const double nu1, const double nu2);
++
++double gsl_cdf_fdist_Pinv (const double P, const double nu1, const double nu2);
++double gsl_cdf_fdist_Qinv (const double Q, const double nu1, const double nu2);
++
++double gsl_cdf_beta_P (const double x, const double a, const double b);
++double gsl_cdf_beta_Q (const double x, const double a, const double b);
++
++double gsl_cdf_beta_Pinv (const double P, const double a, const double b);
++double gsl_cdf_beta_Qinv (const double Q, const double a, const double b);
++
++double gsl_cdf_flat_P (const double x, const double a, const double b);
++double gsl_cdf_flat_Q (const double x, const double a, const double b);
++
++double gsl_cdf_flat_Pinv (const double P, const double a, const double b);
++double gsl_cdf_flat_Qinv (const double Q, const double a, const double b);
++
++double gsl_cdf_lognormal_P (const double x, const double zeta, const double sigma);
++double gsl_cdf_lognormal_Q (const double x, const double zeta, const double sigma);
++
++double gsl_cdf_lognormal_Pinv (const double P, const double zeta, const double sigma);
++double gsl_cdf_lognormal_Qinv (const double Q, const double zeta, const double sigma);
++
++double gsl_cdf_gumbel1_P (const double x, const double a, const double b);
++double gsl_cdf_gumbel1_Q (const double x, const double a, const double b);
++
++double gsl_cdf_gumbel1_Pinv (const double P, const double a, const double b);
++double gsl_cdf_gumbel1_Qinv (const double Q, const double a, const double b);
++
++double gsl_cdf_gumbel2_P (const double x, const double a, const double b);
++double gsl_cdf_gumbel2_Q (const double x, const double a, const double b);
++
++double gsl_cdf_gumbel2_Pinv (const double P, const double a, const double b);
++double gsl_cdf_gumbel2_Qinv (const double Q, const double a, const double b);
++
++double gsl_cdf_weibull_P (const double x, const double a, const double b);
++double gsl_cdf_weibull_Q (const double x, const double a, const double b);
++
++double gsl_cdf_weibull_Pinv (const double P, const double a, const double b);
++double gsl_cdf_weibull_Qinv (const double Q, const double a, const double b);
++
++double gsl_cdf_pareto_P (const double x, const double a, const double b);
++double gsl_cdf_pareto_Q (const double x, const double a, const double b);
++
++double gsl_cdf_pareto_Pinv (const double P, const double a, const double b);
++double gsl_cdf_pareto_Qinv (const double Q, const double a, const double b);
++
++double gsl_cdf_logistic_P (const double x, const double a);
++double gsl_cdf_logistic_Q (const double x, const double a);
++
++double gsl_cdf_logistic_Pinv (const double P, const double a);
++double gsl_cdf_logistic_Qinv (const double Q, const double a);
++
++double gsl_cdf_binomial_P (const unsigned int k, const double p, const unsigned int n);
++double gsl_cdf_binomial_Q (const unsigned int k, const double p, const unsigned int n);
++
++double gsl_cdf_poisson_P (const unsigned int k, const double mu);
++double gsl_cdf_poisson_Q (const unsigned int k, const double mu);
++
++double gsl_cdf_geometric_P (const unsigned int k, const double p);
++double gsl_cdf_geometric_Q (const unsigned int k, const double p);
++
++double gsl_cdf_negative_binomial_P (const unsigned int k, const double p, const double n);
++double gsl_cdf_negative_binomial_Q (const unsigned int k, const double p, const double n);
++
++double gsl_cdf_pascal_P (const unsigned int k, const double p, const unsigned int n);
++double gsl_cdf_pascal_Q (const unsigned int k, const double p, const unsigned int n);
++
++double gsl_cdf_hypergeometric_P (const unsigned int k, const unsigned int n1,
++                                 const unsigned int n2, const unsigned int t);
++double gsl_cdf_hypergeometric_Q (const unsigned int k, const unsigned int n1,
++                                 const unsigned int n2, const unsigned int t);
++
++__END_DECLS
++
++#endif /* __GSL_CDF_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_complex_float.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_complex_float.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_complex_float.h	(revision 14078)
+@@ -0,0 +1,45 @@
++/* permutation/gsl_permute_complex_float.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_PERMUTE_COMPLEX_FLOAT_H__
++#define __GSL_PERMUTE_COMPLEX_FLOAT_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_complex.h>
++#include <gsl/gsl_permutation.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++int gsl_permute_complex_float (const size_t * p, float * data, const size_t stride, const size_t n);
++int gsl_permute_complex_float_inverse (const size_t * p, float * data, const size_t stride, const size_t n);
++
++__END_DECLS
++
++#endif /* __GSL_PERMUTE_COMPLEX_FLOAT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_multifit.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_multifit.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_multifit.h	(revision 14078)
+@@ -0,0 +1,130 @@
++/* multifit/gsl_multifit.h
++ * 
++ * Copyright (C) 2000, 2007, 2010 Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_MULTIFIT_H__
++#define __GSL_MULTIFIT_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_math.h>
++#include <gsl/gsl_vector.h>
++#include <gsl/gsl_matrix.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++typedef struct 
++{
++  size_t n; /* number of observations */
++  size_t p; /* number of parameters */
++  gsl_matrix * A;
++  gsl_matrix * Q;
++  gsl_matrix * QSI;
++  gsl_vector * S;
++  gsl_vector * t;
++  gsl_vector * xt;
++  gsl_vector * D;
++} 
++gsl_multifit_linear_workspace;
++
++gsl_multifit_linear_workspace *
++gsl_multifit_linear_alloc (size_t n, size_t p);
++
++void
++gsl_multifit_linear_free (gsl_multifit_linear_workspace * work);
++
++int
++gsl_multifit_linear (const gsl_matrix * X,
++                     const gsl_vector * y,
++                     gsl_vector * c,
++                     gsl_matrix * cov,
++                     double * chisq,
++                     gsl_multifit_linear_workspace * work);
++
++int
++gsl_multifit_linear_svd (const gsl_matrix * X,
++                         const gsl_vector * y,
++                         double tol,
++                         size_t * rank,
++                         gsl_vector * c,
++                         gsl_matrix * cov,
++                         double *chisq, 
++                         gsl_multifit_linear_workspace * work);
++
++int
++gsl_multifit_linear_usvd (const gsl_matrix * X,
++                          const gsl_vector * y,
++                          double tol,
++                          size_t * rank,
++                          gsl_vector * c,
++                          gsl_matrix * cov,
++                          double *chisq, 
++                          gsl_multifit_linear_workspace * work);
++
++int
++gsl_multifit_wlinear (const gsl_matrix * X,
++                      const gsl_vector * w,
++                      const gsl_vector * y,
++                      gsl_vector * c,
++                      gsl_matrix * cov,
++                      double * chisq,
++                      gsl_multifit_linear_workspace * work);
++
++int
++gsl_multifit_wlinear_svd (const gsl_matrix * X,
++                          const gsl_vector * w,
++                          const gsl_vector * y,
++                          double tol,
++                          size_t * rank,
++                          gsl_vector * c,
++                          gsl_matrix * cov,
++                          double *chisq, 
++                          gsl_multifit_linear_workspace * work);
++
++int
++gsl_multifit_wlinear_usvd (const gsl_matrix * X,
++                           const gsl_vector * w,
++                           const gsl_vector * y,
++                           double tol,
++                           size_t * rank,
++                           gsl_vector * c,
++                           gsl_matrix * cov,
++                           double *chisq, 
++                           gsl_multifit_linear_workspace * work);
++
++int
++gsl_multifit_linear_est (const gsl_vector * x,
++                         const gsl_vector * c,
++                         const gsl_matrix * cov, double *y, double *y_err);
++
++int
++gsl_multifit_linear_residuals (const gsl_matrix *X, const gsl_vector *y,
++                               const gsl_vector *c, gsl_vector *r);
++
++__END_DECLS
++
++#endif /* __GSL_MULTIFIT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_multimin.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_multimin.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_multimin.h	(revision 14078)
+@@ -0,0 +1,226 @@
++/* multimin/gsl_multimin.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Fabrice Rossi
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++/* Modified by Tuomo Keskitalo to include fminimizer and 
++   Nelder Mead related lines */
++
++#ifndef __GSL_MULTIMIN_H__
++#define __GSL_MULTIMIN_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_types.h>
++#include <gsl/gsl_math.h>
++#include <gsl/gsl_vector.h>
++#include <gsl/gsl_matrix.h>
++#include <gsl/gsl_min.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++/* Definition of an arbitrary real-valued function with gsl_vector input and */
++/* parameters */
++struct gsl_multimin_function_struct 
++{
++  double (* f) (const gsl_vector * x, void * params);
++  size_t n;
++  void * params;
++};
++
++typedef struct gsl_multimin_function_struct gsl_multimin_function;
++
++#define GSL_MULTIMIN_FN_EVAL(F,x) (*((F)->f))(x,(F)->params)
++
++/* Definition of an arbitrary differentiable real-valued function */
++/* with gsl_vector input and parameters */
++struct gsl_multimin_function_fdf_struct 
++{
++  double (* f) (const gsl_vector  * x, void * params);
++  void (* df) (const gsl_vector * x, void * params,gsl_vector * df);
++  void (* fdf) (const gsl_vector * x, void * params,double *f,gsl_vector * df);
++  size_t n;
++  void * params;
++};
++
++typedef struct gsl_multimin_function_fdf_struct gsl_multimin_function_fdf;
++
++#define GSL_MULTIMIN_FN_EVAL_F(F,x) (*((F)->f))(x,(F)->params)
++#define GSL_MULTIMIN_FN_EVAL_DF(F,x,g) (*((F)->df))(x,(F)->params,(g))
++#define GSL_MULTIMIN_FN_EVAL_F_DF(F,x,y,g) (*((F)->fdf))(x,(F)->params,(y),(g))
++
++int gsl_multimin_diff (const gsl_multimin_function * f,
++                       const gsl_vector * x, gsl_vector * g);
++
++/* minimization of non-differentiable functions */
++
++typedef struct 
++{
++  const char *name;
++  size_t size;
++  int (*alloc) (void *state, size_t n);
++  int (*set) (void *state, gsl_multimin_function * f,
++              const gsl_vector * x, 
++              double * size,
++              const gsl_vector * step_size);
++  int (*iterate) (void *state, gsl_multimin_function * f, 
++                  gsl_vector * x, 
++                  double * size,
++                  double * fval);
++  void (*free) (void *state);
++}
++gsl_multimin_fminimizer_type;
++
++typedef struct 
++{
++  /* multi dimensional part */
++  const gsl_multimin_fminimizer_type *type;
++  gsl_multimin_function *f;
++
++  double fval;
++  gsl_vector * x;
++  
++  double size;
++
++  void *state;
++}
++gsl_multimin_fminimizer;
++
++gsl_multimin_fminimizer *
++gsl_multimin_fminimizer_alloc(const gsl_multimin_fminimizer_type *T,
++                              size_t n);
++
++int 
++gsl_multimin_fminimizer_set (gsl_multimin_fminimizer * s,
++                             gsl_multimin_function * f,
++                             const gsl_vector * x,
++                             const gsl_vector * step_size);
++
++void
++gsl_multimin_fminimizer_free(gsl_multimin_fminimizer *s);
++
++const char * 
++gsl_multimin_fminimizer_name (const gsl_multimin_fminimizer * s);
++
++int
++gsl_multimin_fminimizer_iterate(gsl_multimin_fminimizer *s);
++
++gsl_vector * 
++gsl_multimin_fminimizer_x (const gsl_multimin_fminimizer * s);
++
++double 
++gsl_multimin_fminimizer_minimum (const gsl_multimin_fminimizer * s);
++
++double
++gsl_multimin_fminimizer_size (const gsl_multimin_fminimizer * s);
++
++/* Convergence test functions */
++
++int
++gsl_multimin_test_gradient(const gsl_vector * g, double epsabs);
++
++int
++gsl_multimin_test_size(const double size, double epsabs);
++
++/* minimisation of differentiable functions */
++
++typedef struct 
++{
++  const char *name;
++  size_t size;
++  int (*alloc) (void *state, size_t n);
++  int (*set) (void *state, gsl_multimin_function_fdf * fdf,
++              const gsl_vector * x, double * f, 
++              gsl_vector * gradient, double step_size, double tol);
++  int (*iterate) (void *state,gsl_multimin_function_fdf * fdf, 
++                  gsl_vector * x, double * f, 
++                  gsl_vector * gradient, gsl_vector * dx);
++  int (*restart) (void *state);
++  void (*free) (void *state);
++}
++gsl_multimin_fdfminimizer_type;
++
++typedef struct 
++{
++  /* multi dimensional part */
++  const gsl_multimin_fdfminimizer_type *type;
++  gsl_multimin_function_fdf *fdf;
++
++  double f;
++  gsl_vector * x;
++  gsl_vector * gradient;
++  gsl_vector * dx;
++
++  void *state;
++}
++gsl_multimin_fdfminimizer;
++
++gsl_multimin_fdfminimizer *
++gsl_multimin_fdfminimizer_alloc(const gsl_multimin_fdfminimizer_type *T,
++                                size_t n);
++
++int 
++gsl_multimin_fdfminimizer_set (gsl_multimin_fdfminimizer * s,
++                               gsl_multimin_function_fdf *fdf,
++                               const gsl_vector * x,
++                               double step_size, double tol);
++
++void
++gsl_multimin_fdfminimizer_free(gsl_multimin_fdfminimizer *s);
++
++const char * 
++gsl_multimin_fdfminimizer_name (const gsl_multimin_fdfminimizer * s);
++
++int
++gsl_multimin_fdfminimizer_iterate(gsl_multimin_fdfminimizer *s);
++
++int
++gsl_multimin_fdfminimizer_restart(gsl_multimin_fdfminimizer *s);
++
++gsl_vector * 
++gsl_multimin_fdfminimizer_x (const gsl_multimin_fdfminimizer * s);
++
++gsl_vector * 
++gsl_multimin_fdfminimizer_dx (const gsl_multimin_fdfminimizer * s);
++
++gsl_vector * 
++gsl_multimin_fdfminimizer_gradient (const gsl_multimin_fdfminimizer * s);
++
++double 
++gsl_multimin_fdfminimizer_minimum (const gsl_multimin_fdfminimizer * s);
++
++GSL_VAR const gsl_multimin_fdfminimizer_type *gsl_multimin_fdfminimizer_steepest_descent;
++GSL_VAR const gsl_multimin_fdfminimizer_type *gsl_multimin_fdfminimizer_conjugate_pr;
++GSL_VAR const gsl_multimin_fdfminimizer_type *gsl_multimin_fdfminimizer_conjugate_fr;
++GSL_VAR const gsl_multimin_fdfminimizer_type *gsl_multimin_fdfminimizer_vector_bfgs;
++GSL_VAR const gsl_multimin_fdfminimizer_type *gsl_multimin_fdfminimizer_vector_bfgs2;
++GSL_VAR const gsl_multimin_fminimizer_type *gsl_multimin_fminimizer_nmsimplex;
++GSL_VAR const gsl_multimin_fminimizer_type *gsl_multimin_fminimizer_nmsimplex2;
++GSL_VAR const gsl_multimin_fminimizer_type *gsl_multimin_fminimizer_nmsimplex2rand;
++
++__END_DECLS
++
++#endif /* __GSL_MULTIMIN_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_double.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_double.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_double.h	(revision 14078)
+@@ -0,0 +1,350 @@
++/* matrix/gsl_matrix_double.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_MATRIX_DOUBLE_H__
++#define __GSL_MATRIX_DOUBLE_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_types.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_inline.h>
++#include <gsl/gsl_check_range.h>
++#include <gsl/gsl_vector_double.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++typedef struct 
++{
++  size_t size1;
++  size_t size2;
++  size_t tda;
++  double * data;
++  gsl_block * block;
++  int owner;
++} gsl_matrix;
++
++typedef struct
++{
++  gsl_matrix matrix;
++} _gsl_matrix_view;
++
++typedef _gsl_matrix_view gsl_matrix_view;
++
++typedef struct
++{
++  gsl_matrix matrix;
++} _gsl_matrix_const_view;
++
++typedef const _gsl_matrix_const_view gsl_matrix_const_view;
++
++/* Allocation */
++
++gsl_matrix * 
++gsl_matrix_alloc (const size_t n1, const size_t n2);
++
++gsl_matrix * 
++gsl_matrix_calloc (const size_t n1, const size_t n2);
++
++gsl_matrix * 
++gsl_matrix_alloc_from_block (gsl_block * b, 
++                                   const size_t offset, 
++                                   const size_t n1, 
++                                   const size_t n2, 
++                                   const size_t d2);
++
++gsl_matrix * 
++gsl_matrix_alloc_from_matrix (gsl_matrix * m,
++                                    const size_t k1, 
++                                    const size_t k2,
++                                    const size_t n1, 
++                                    const size_t n2);
++
++gsl_vector * 
++gsl_vector_alloc_row_from_matrix (gsl_matrix * m,
++                                        const size_t i);
++
++gsl_vector * 
++gsl_vector_alloc_col_from_matrix (gsl_matrix * m,
++                                        const size_t j);
++
++void gsl_matrix_free (gsl_matrix * m);
++
++/* Views */
++
++_gsl_matrix_view 
++gsl_matrix_submatrix (gsl_matrix * m, 
++                            const size_t i, const size_t j, 
++                            const size_t n1, const size_t n2);
++
++_gsl_vector_view 
++gsl_matrix_row (gsl_matrix * m, const size_t i);
++
++_gsl_vector_view 
++gsl_matrix_column (gsl_matrix * m, const size_t j);
++
++_gsl_vector_view 
++gsl_matrix_diagonal (gsl_matrix * m);
++
++_gsl_vector_view 
++gsl_matrix_subdiagonal (gsl_matrix * m, const size_t k);
++
++_gsl_vector_view 
++gsl_matrix_superdiagonal (gsl_matrix * m, const size_t k);
++
++_gsl_vector_view
++gsl_matrix_subrow (gsl_matrix * m, const size_t i,
++                         const size_t offset, const size_t n);
++
++_gsl_vector_view
++gsl_matrix_subcolumn (gsl_matrix * m, const size_t j,
++                            const size_t offset, const size_t n);
++
++_gsl_matrix_view
++gsl_matrix_view_array (double * base,
++                             const size_t n1, 
++                             const size_t n2);
++
++_gsl_matrix_view
++gsl_matrix_view_array_with_tda (double * base, 
++                                      const size_t n1, 
++                                      const size_t n2,
++                                      const size_t tda);
++
++
++_gsl_matrix_view
++gsl_matrix_view_vector (gsl_vector * v,
++                              const size_t n1, 
++                              const size_t n2);
++
++_gsl_matrix_view
++gsl_matrix_view_vector_with_tda (gsl_vector * v,
++                                       const size_t n1, 
++                                       const size_t n2,
++                                       const size_t tda);
++
++
++_gsl_matrix_const_view 
++gsl_matrix_const_submatrix (const gsl_matrix * m, 
++                                  const size_t i, const size_t j, 
++                                  const size_t n1, const size_t n2);
++
++_gsl_vector_const_view 
++gsl_matrix_const_row (const gsl_matrix * m, 
++                            const size_t i);
++
++_gsl_vector_const_view 
++gsl_matrix_const_column (const gsl_matrix * m, 
++                               const size_t j);
++
++_gsl_vector_const_view
++gsl_matrix_const_diagonal (const gsl_matrix * m);
++
++_gsl_vector_const_view 
++gsl_matrix_const_subdiagonal (const gsl_matrix * m, 
++                                    const size_t k);
++
++_gsl_vector_const_view 
++gsl_matrix_const_superdiagonal (const gsl_matrix * m, 
++                                      const size_t k);
++
++_gsl_vector_const_view
++gsl_matrix_const_subrow (const gsl_matrix * m, const size_t i,
++                               const size_t offset, const size_t n);
++
++_gsl_vector_const_view
++gsl_matrix_const_subcolumn (const gsl_matrix * m, const size_t j,
++                                  const size_t offset, const size_t n);
++
++_gsl_matrix_const_view
++gsl_matrix_const_view_array (const double * base,
++                                   const size_t n1, 
++                                   const size_t n2);
++
++_gsl_matrix_const_view
++gsl_matrix_const_view_array_with_tda (const double * base, 
++                                            const size_t n1, 
++                                            const size_t n2,
++                                            const size_t tda);
++
++_gsl_matrix_const_view
++gsl_matrix_const_view_vector (const gsl_vector * v,
++                                    const size_t n1, 
++                                    const size_t n2);
++
++_gsl_matrix_const_view
++gsl_matrix_const_view_vector_with_tda (const gsl_vector * v,
++                                             const size_t n1, 
++                                             const size_t n2,
++                                             const size_t tda);
++
++/* Operations */
++
++void gsl_matrix_set_zero (gsl_matrix * m);
++void gsl_matrix_set_identity (gsl_matrix * m);
++void gsl_matrix_set_all (gsl_matrix * m, double x);
++
++int gsl_matrix_fread (FILE * stream, gsl_matrix * m) ;
++int gsl_matrix_fwrite (FILE * stream, const gsl_matrix * m) ;
++int gsl_matrix_fscanf (FILE * stream, gsl_matrix * m);
++int gsl_matrix_fprintf (FILE * stream, const gsl_matrix * m, const char * format);
++ 
++int gsl_matrix_memcpy(gsl_matrix * dest, const gsl_matrix * src);
++int gsl_matrix_swap(gsl_matrix * m1, gsl_matrix * m2);
++
++int gsl_matrix_swap_rows(gsl_matrix * m, const size_t i, const size_t j);
++int gsl_matrix_swap_columns(gsl_matrix * m, const size_t i, const size_t j);
++int gsl_matrix_swap_rowcol(gsl_matrix * m, const size_t i, const size_t j);
++int gsl_matrix_transpose (gsl_matrix * m);
++int gsl_matrix_transpose_memcpy (gsl_matrix * dest, const gsl_matrix * src);
++
++double gsl_matrix_max (const gsl_matrix * m);
++double gsl_matrix_min (const gsl_matrix * m);
++void gsl_matrix_minmax (const gsl_matrix * m, double * min_out, double * max_out);
++
++void gsl_matrix_max_index (const gsl_matrix * m, size_t * imax, size_t *jmax);
++void gsl_matrix_min_index (const gsl_matrix * m, size_t * imin, size_t *jmin);
++void gsl_matrix_minmax_index (const gsl_matrix * m, size_t * imin, size_t * jmin, size_t * imax, size_t * jmax);
++
++int gsl_matrix_equal (const gsl_matrix * a, const gsl_matrix * b);
++
++int gsl_matrix_isnull (const gsl_matrix * m);
++int gsl_matrix_ispos (const gsl_matrix * m);
++int gsl_matrix_isneg (const gsl_matrix * m);
++int gsl_matrix_isnonneg (const gsl_matrix * m);
++
++int gsl_matrix_add (gsl_matrix * a, const gsl_matrix * b);
++int gsl_matrix_sub (gsl_matrix * a, const gsl_matrix * b);
++int gsl_matrix_mul_elements (gsl_matrix * a, const gsl_matrix * b);
++int gsl_matrix_div_elements (gsl_matrix * a, const gsl_matrix * b);
++int gsl_matrix_scale (gsl_matrix * a, const double x);
++int gsl_matrix_add_constant (gsl_matrix * a, const double x);
++int gsl_matrix_add_diagonal (gsl_matrix * a, const double x);
++
++/***********************************************************************/
++/* The functions below are obsolete                                    */
++/***********************************************************************/
++int gsl_matrix_get_row(gsl_vector * v, const gsl_matrix * m, const size_t i);
++int gsl_matrix_get_col(gsl_vector * v, const gsl_matrix * m, const size_t j);
++int gsl_matrix_set_row(gsl_matrix * m, const size_t i, const gsl_vector * v);
++int gsl_matrix_set_col(gsl_matrix * m, const size_t j, const gsl_vector * v);
++/***********************************************************************/
++
++/* inline functions if you are using GCC */
++
++INLINE_DECL double   gsl_matrix_get(const gsl_matrix * m, const size_t i, const size_t j);
++INLINE_DECL void    gsl_matrix_set(gsl_matrix * m, const size_t i, const size_t j, const double x);
++INLINE_DECL double * gsl_matrix_ptr(gsl_matrix * m, const size_t i, const size_t j);
++INLINE_DECL const double * gsl_matrix_const_ptr(const gsl_matrix * m, const size_t i, const size_t j);
++
++#ifdef HAVE_INLINE
++INLINE_FUN 
++double
++gsl_matrix_get(const gsl_matrix * m, const size_t i, const size_t j)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(1)) 
++    {
++      if (i >= m->size1)
++        {
++          GSL_ERROR_VAL("first index out of range", GSL_EINVAL, 0) ;
++        }
++      else if (j >= m->size2)
++        {
++          GSL_ERROR_VAL("second index out of range", GSL_EINVAL, 0) ;
++        }
++    }
++#endif
++  return m->data[i * m->tda + j] ;
++} 
++
++INLINE_FUN 
++void
++gsl_matrix_set(gsl_matrix * m, const size_t i, const size_t j, const double x)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(1)) 
++    {
++      if (i >= m->size1)
++        {
++          GSL_ERROR_VOID("first index out of range", GSL_EINVAL) ;
++        }
++      else if (j >= m->size2)
++        {
++          GSL_ERROR_VOID("second index out of range", GSL_EINVAL) ;
++        }
++    }
++#endif
++  m->data[i * m->tda + j] = x ;
++}
++
++INLINE_FUN 
++double *
++gsl_matrix_ptr(gsl_matrix * m, const size_t i, const size_t j)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(1)) 
++    {
++      if (i >= m->size1)
++        {
++          GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
++        }
++      else if (j >= m->size2)
++        {
++          GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
++        }
++    }
++#endif
++  return (double *) (m->data + (i * m->tda + j)) ;
++} 
++
++INLINE_FUN 
++const double *
++gsl_matrix_const_ptr(const gsl_matrix * m, const size_t i, const size_t j)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(1)) 
++    {
++      if (i >= m->size1)
++        {
++          GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
++        }
++      else if (j >= m->size2)
++        {
++          GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
++        }
++    }
++#endif
++  return (const double *) (m->data + (i * m->tda + j)) ;
++} 
++
++#endif
++
++__END_DECLS
++
++#endif /* __GSL_MATRIX_DOUBLE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_const_cgsm.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_const_cgsm.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_const_cgsm.h	(revision 14078)
+@@ -0,0 +1,122 @@
++/* const/gsl_const_cgsm.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
++ * 2006, 2007, 2008, 2009 Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_CONST_CGSM__
++#define __GSL_CONST_CGSM__
++
++#define GSL_CONST_CGSM_SPEED_OF_LIGHT (2.99792458e10) /* cm / s */
++#define GSL_CONST_CGSM_GRAVITATIONAL_CONSTANT (6.673e-8) /* cm^3 / g s^2 */
++#define GSL_CONST_CGSM_PLANCKS_CONSTANT_H (6.62606896e-27) /* g cm^2 / s */
++#define GSL_CONST_CGSM_PLANCKS_CONSTANT_HBAR (1.05457162825e-27) /* g cm^2 / s */
++#define GSL_CONST_CGSM_ASTRONOMICAL_UNIT (1.49597870691e13) /* cm */
++#define GSL_CONST_CGSM_LIGHT_YEAR (9.46053620707e17) /* cm */
++#define GSL_CONST_CGSM_PARSEC (3.08567758135e18) /* cm */
++#define GSL_CONST_CGSM_GRAV_ACCEL (9.80665e2) /* cm / s^2 */
++#define GSL_CONST_CGSM_ELECTRON_VOLT (1.602176487e-12) /* g cm^2 / s^2 */
++#define GSL_CONST_CGSM_MASS_ELECTRON (9.10938188e-28) /* g */
++#define GSL_CONST_CGSM_MASS_MUON (1.88353109e-25) /* g */
++#define GSL_CONST_CGSM_MASS_PROTON (1.67262158e-24) /* g */
++#define GSL_CONST_CGSM_MASS_NEUTRON (1.67492716e-24) /* g */
++#define GSL_CONST_CGSM_RYDBERG (2.17987196968e-11) /* g cm^2 / s^2 */
++#define GSL_CONST_CGSM_BOLTZMANN (1.3806504e-16) /* g cm^2 / K s^2 */
++#define GSL_CONST_CGSM_MOLAR_GAS (8.314472e7) /* g cm^2 / K mol s^2 */
++#define GSL_CONST_CGSM_STANDARD_GAS_VOLUME (2.2710981e4) /* cm^3 / mol */
++#define GSL_CONST_CGSM_MINUTE (6e1) /* s */
++#define GSL_CONST_CGSM_HOUR (3.6e3) /* s */
++#define GSL_CONST_CGSM_DAY (8.64e4) /* s */
++#define GSL_CONST_CGSM_WEEK (6.048e5) /* s */
++#define GSL_CONST_CGSM_INCH (2.54e0) /* cm */
++#define GSL_CONST_CGSM_FOOT (3.048e1) /* cm */
++#define GSL_CONST_CGSM_YARD (9.144e1) /* cm */
++#define GSL_CONST_CGSM_MILE (1.609344e5) /* cm */
++#define GSL_CONST_CGSM_NAUTICAL_MILE (1.852e5) /* cm */
++#define GSL_CONST_CGSM_FATHOM (1.8288e2) /* cm */
++#define GSL_CONST_CGSM_MIL (2.54e-3) /* cm */
++#define GSL_CONST_CGSM_POINT (3.52777777778e-2) /* cm */
++#define GSL_CONST_CGSM_TEXPOINT (3.51459803515e-2) /* cm */
++#define GSL_CONST_CGSM_MICRON (1e-4) /* cm */
++#define GSL_CONST_CGSM_ANGSTROM (1e-8) /* cm */
++#define GSL_CONST_CGSM_HECTARE (1e8) /* cm^2 */
++#define GSL_CONST_CGSM_ACRE (4.04685642241e7) /* cm^2 */
++#define GSL_CONST_CGSM_BARN (1e-24) /* cm^2 */
++#define GSL_CONST_CGSM_LITER (1e3) /* cm^3 */
++#define GSL_CONST_CGSM_US_GALLON (3.78541178402e3) /* cm^3 */
++#define GSL_CONST_CGSM_QUART (9.46352946004e2) /* cm^3 */
++#define GSL_CONST_CGSM_PINT (4.73176473002e2) /* cm^3 */
++#define GSL_CONST_CGSM_CUP (2.36588236501e2) /* cm^3 */
++#define GSL_CONST_CGSM_FLUID_OUNCE (2.95735295626e1) /* cm^3 */
++#define GSL_CONST_CGSM_TABLESPOON (1.47867647813e1) /* cm^3 */
++#define GSL_CONST_CGSM_TEASPOON (4.92892159375e0) /* cm^3 */
++#define GSL_CONST_CGSM_CANADIAN_GALLON (4.54609e3) /* cm^3 */
++#define GSL_CONST_CGSM_UK_GALLON (4.546092e3) /* cm^3 */
++#define GSL_CONST_CGSM_MILES_PER_HOUR (4.4704e1) /* cm / s */
++#define GSL_CONST_CGSM_KILOMETERS_PER_HOUR (2.77777777778e1) /* cm / s */
++#define GSL_CONST_CGSM_KNOT (5.14444444444e1) /* cm / s */
++#define GSL_CONST_CGSM_POUND_MASS (4.5359237e2) /* g */
++#define GSL_CONST_CGSM_OUNCE_MASS (2.8349523125e1) /* g */
++#define GSL_CONST_CGSM_TON (9.0718474e5) /* g */
++#define GSL_CONST_CGSM_METRIC_TON (1e6) /* g */
++#define GSL_CONST_CGSM_UK_TON (1.0160469088e6) /* g */
++#define GSL_CONST_CGSM_TROY_OUNCE (3.1103475e1) /* g */
++#define GSL_CONST_CGSM_CARAT (2e-1) /* g */
++#define GSL_CONST_CGSM_UNIFIED_ATOMIC_MASS (1.660538782e-24) /* g */
++#define GSL_CONST_CGSM_GRAM_FORCE (9.80665e2) /* cm g / s^2 */
++#define GSL_CONST_CGSM_POUND_FORCE (4.44822161526e5) /* cm g / s^2 */
++#define GSL_CONST_CGSM_KILOPOUND_FORCE (4.44822161526e8) /* cm g / s^2 */
++#define GSL_CONST_CGSM_POUNDAL (1.38255e4) /* cm g / s^2 */
++#define GSL_CONST_CGSM_CALORIE (4.1868e7) /* g cm^2 / s^2 */
++#define GSL_CONST_CGSM_BTU (1.05505585262e10) /* g cm^2 / s^2 */
++#define GSL_CONST_CGSM_THERM (1.05506e15) /* g cm^2 / s^2 */
++#define GSL_CONST_CGSM_HORSEPOWER (7.457e9) /* g cm^2 / s^3 */
++#define GSL_CONST_CGSM_BAR (1e6) /* g / cm s^2 */
++#define GSL_CONST_CGSM_STD_ATMOSPHERE (1.01325e6) /* g / cm s^2 */
++#define GSL_CONST_CGSM_TORR (1.33322368421e3) /* g / cm s^2 */
++#define GSL_CONST_CGSM_METER_OF_MERCURY (1.33322368421e6) /* g / cm s^2 */
++#define GSL_CONST_CGSM_INCH_OF_MERCURY (3.38638815789e4) /* g / cm s^2 */
++#define GSL_CONST_CGSM_INCH_OF_WATER (2.490889e3) /* g / cm s^2 */
++#define GSL_CONST_CGSM_PSI (6.89475729317e4) /* g / cm s^2 */
++#define GSL_CONST_CGSM_POISE (1e0) /* g / cm s */
++#define GSL_CONST_CGSM_STOKES (1e0) /* cm^2 / s */
++#define GSL_CONST_CGSM_STILB (1e0) /* cd / cm^2 */
++#define GSL_CONST_CGSM_LUMEN (1e0) /* cd sr */
++#define GSL_CONST_CGSM_LUX (1e-4) /* cd sr / cm^2 */
++#define GSL_CONST_CGSM_PHOT (1e0) /* cd sr / cm^2 */
++#define GSL_CONST_CGSM_FOOTCANDLE (1.076e-3) /* cd sr / cm^2 */
++#define GSL_CONST_CGSM_LAMBERT (1e0) /* cd sr / cm^2 */
++#define GSL_CONST_CGSM_FOOTLAMBERT (1.07639104e-3) /* cd sr / cm^2 */
++#define GSL_CONST_CGSM_CURIE (3.7e10) /* 1 / s */
++#define GSL_CONST_CGSM_ROENTGEN (2.58e-8) /* abamp s / g */
++#define GSL_CONST_CGSM_RAD (1e2) /* cm^2 / s^2 */
++#define GSL_CONST_CGSM_SOLAR_MASS (1.98892e33) /* g */
++#define GSL_CONST_CGSM_BOHR_RADIUS (5.291772083e-9) /* cm */
++#define GSL_CONST_CGSM_NEWTON (1e5) /* cm g / s^2 */
++#define GSL_CONST_CGSM_DYNE (1e0) /* cm g / s^2 */
++#define GSL_CONST_CGSM_JOULE (1e7) /* g cm^2 / s^2 */
++#define GSL_CONST_CGSM_ERG (1e0) /* g cm^2 / s^2 */
++#define GSL_CONST_CGSM_STEFAN_BOLTZMANN_CONSTANT (5.67040047374e-5) /* g / K^4 s^3 */
++#define GSL_CONST_CGSM_THOMSON_CROSS_SECTION (6.65245893699e-25) /* cm^2 */
++#define GSL_CONST_CGSM_BOHR_MAGNETON (9.27400899e-21) /* abamp cm^2 */
++#define GSL_CONST_CGSM_NUCLEAR_MAGNETON (5.05078317e-24) /* abamp cm^2 */
++#define GSL_CONST_CGSM_ELECTRON_MAGNETIC_MOMENT (9.28476362e-21) /* abamp cm^2 */
++#define GSL_CONST_CGSM_PROTON_MAGNETIC_MOMENT (1.410606633e-23) /* abamp cm^2 */
++#define GSL_CONST_CGSM_FARADAY (9.64853429775e3) /* abamp s / mol */
++#define GSL_CONST_CGSM_ELECTRON_CHARGE (1.602176487e-20) /* abamp s */
++
++#endif /* __GSL_CONST_CGSM__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_char.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_char.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_char.h	(revision 14078)
+@@ -0,0 +1,350 @@
++/* matrix/gsl_matrix_char.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_MATRIX_CHAR_H__
++#define __GSL_MATRIX_CHAR_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_types.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_inline.h>
++#include <gsl/gsl_check_range.h>
++#include <gsl/gsl_vector_char.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++typedef struct 
++{
++  size_t size1;
++  size_t size2;
++  size_t tda;
++  char * data;
++  gsl_block_char * block;
++  int owner;
++} gsl_matrix_char;
++
++typedef struct
++{
++  gsl_matrix_char matrix;
++} _gsl_matrix_char_view;
++
++typedef _gsl_matrix_char_view gsl_matrix_char_view;
++
++typedef struct
++{
++  gsl_matrix_char matrix;
++} _gsl_matrix_char_const_view;
++
++typedef const _gsl_matrix_char_const_view gsl_matrix_char_const_view;
++
++/* Allocation */
++
++gsl_matrix_char * 
++gsl_matrix_char_alloc (const size_t n1, const size_t n2);
++
++gsl_matrix_char * 
++gsl_matrix_char_calloc (const size_t n1, const size_t n2);
++
++gsl_matrix_char * 
++gsl_matrix_char_alloc_from_block (gsl_block_char * b, 
++                                   const size_t offset, 
++                                   const size_t n1, 
++                                   const size_t n2, 
++                                   const size_t d2);
++
++gsl_matrix_char * 
++gsl_matrix_char_alloc_from_matrix (gsl_matrix_char * m,
++                                    const size_t k1, 
++                                    const size_t k2,
++                                    const size_t n1, 
++                                    const size_t n2);
++
++gsl_vector_char * 
++gsl_vector_char_alloc_row_from_matrix (gsl_matrix_char * m,
++                                        const size_t i);
++
++gsl_vector_char * 
++gsl_vector_char_alloc_col_from_matrix (gsl_matrix_char * m,
++                                        const size_t j);
++
++void gsl_matrix_char_free (gsl_matrix_char * m);
++
++/* Views */
++
++_gsl_matrix_char_view 
++gsl_matrix_char_submatrix (gsl_matrix_char * m, 
++                            const size_t i, const size_t j, 
++                            const size_t n1, const size_t n2);
++
++_gsl_vector_char_view 
++gsl_matrix_char_row (gsl_matrix_char * m, const size_t i);
++
++_gsl_vector_char_view 
++gsl_matrix_char_column (gsl_matrix_char * m, const size_t j);
++
++_gsl_vector_char_view 
++gsl_matrix_char_diagonal (gsl_matrix_char * m);
++
++_gsl_vector_char_view 
++gsl_matrix_char_subdiagonal (gsl_matrix_char * m, const size_t k);
++
++_gsl_vector_char_view 
++gsl_matrix_char_superdiagonal (gsl_matrix_char * m, const size_t k);
++
++_gsl_vector_char_view
++gsl_matrix_char_subrow (gsl_matrix_char * m, const size_t i,
++                         const size_t offset, const size_t n);
++
++_gsl_vector_char_view
++gsl_matrix_char_subcolumn (gsl_matrix_char * m, const size_t j,
++                            const size_t offset, const size_t n);
++
++_gsl_matrix_char_view
++gsl_matrix_char_view_array (char * base,
++                             const size_t n1, 
++                             const size_t n2);
++
++_gsl_matrix_char_view
++gsl_matrix_char_view_array_with_tda (char * base, 
++                                      const size_t n1, 
++                                      const size_t n2,
++                                      const size_t tda);
++
++
++_gsl_matrix_char_view
++gsl_matrix_char_view_vector (gsl_vector_char * v,
++                              const size_t n1, 
++                              const size_t n2);
++
++_gsl_matrix_char_view
++gsl_matrix_char_view_vector_with_tda (gsl_vector_char * v,
++                                       const size_t n1, 
++                                       const size_t n2,
++                                       const size_t tda);
++
++
++_gsl_matrix_char_const_view 
++gsl_matrix_char_const_submatrix (const gsl_matrix_char * m, 
++                                  const size_t i, const size_t j, 
++                                  const size_t n1, const size_t n2);
++
++_gsl_vector_char_const_view 
++gsl_matrix_char_const_row (const gsl_matrix_char * m, 
++                            const size_t i);
++
++_gsl_vector_char_const_view 
++gsl_matrix_char_const_column (const gsl_matrix_char * m, 
++                               const size_t j);
++
++_gsl_vector_char_const_view
++gsl_matrix_char_const_diagonal (const gsl_matrix_char * m);
++
++_gsl_vector_char_const_view 
++gsl_matrix_char_const_subdiagonal (const gsl_matrix_char * m, 
++                                    const size_t k);
++
++_gsl_vector_char_const_view 
++gsl_matrix_char_const_superdiagonal (const gsl_matrix_char * m, 
++                                      const size_t k);
++
++_gsl_vector_char_const_view
++gsl_matrix_char_const_subrow (const gsl_matrix_char * m, const size_t i,
++                               const size_t offset, const size_t n);
++
++_gsl_vector_char_const_view
++gsl_matrix_char_const_subcolumn (const gsl_matrix_char * m, const size_t j,
++                                  const size_t offset, const size_t n);
++
++_gsl_matrix_char_const_view
++gsl_matrix_char_const_view_array (const char * base,
++                                   const size_t n1, 
++                                   const size_t n2);
++
++_gsl_matrix_char_const_view
++gsl_matrix_char_const_view_array_with_tda (const char * base, 
++                                            const size_t n1, 
++                                            const size_t n2,
++                                            const size_t tda);
++
++_gsl_matrix_char_const_view
++gsl_matrix_char_const_view_vector (const gsl_vector_char * v,
++                                    const size_t n1, 
++                                    const size_t n2);
++
++_gsl_matrix_char_const_view
++gsl_matrix_char_const_view_vector_with_tda (const gsl_vector_char * v,
++                                             const size_t n1, 
++                                             const size_t n2,
++                                             const size_t tda);
++
++/* Operations */
++
++void gsl_matrix_char_set_zero (gsl_matrix_char * m);
++void gsl_matrix_char_set_identity (gsl_matrix_char * m);
++void gsl_matrix_char_set_all (gsl_matrix_char * m, char x);
++
++int gsl_matrix_char_fread (FILE * stream, gsl_matrix_char * m) ;
++int gsl_matrix_char_fwrite (FILE * stream, const gsl_matrix_char * m) ;
++int gsl_matrix_char_fscanf (FILE * stream, gsl_matrix_char * m);
++int gsl_matrix_char_fprintf (FILE * stream, const gsl_matrix_char * m, const char * format);
++ 
++int gsl_matrix_char_memcpy(gsl_matrix_char * dest, const gsl_matrix_char * src);
++int gsl_matrix_char_swap(gsl_matrix_char * m1, gsl_matrix_char * m2);
++
++int gsl_matrix_char_swap_rows(gsl_matrix_char * m, const size_t i, const size_t j);
++int gsl_matrix_char_swap_columns(gsl_matrix_char * m, const size_t i, const size_t j);
++int gsl_matrix_char_swap_rowcol(gsl_matrix_char * m, const size_t i, const size_t j);
++int gsl_matrix_char_transpose (gsl_matrix_char * m);
++int gsl_matrix_char_transpose_memcpy (gsl_matrix_char * dest, const gsl_matrix_char * src);
++
++char gsl_matrix_char_max (const gsl_matrix_char * m);
++char gsl_matrix_char_min (const gsl_matrix_char * m);
++void gsl_matrix_char_minmax (const gsl_matrix_char * m, char * min_out, char * max_out);
++
++void gsl_matrix_char_max_index (const gsl_matrix_char * m, size_t * imax, size_t *jmax);
++void gsl_matrix_char_min_index (const gsl_matrix_char * m, size_t * imin, size_t *jmin);
++void gsl_matrix_char_minmax_index (const gsl_matrix_char * m, size_t * imin, size_t * jmin, size_t * imax, size_t * jmax);
++
++int gsl_matrix_char_equal (const gsl_matrix_char * a, const gsl_matrix_char * b);
++
++int gsl_matrix_char_isnull (const gsl_matrix_char * m);
++int gsl_matrix_char_ispos (const gsl_matrix_char * m);
++int gsl_matrix_char_isneg (const gsl_matrix_char * m);
++int gsl_matrix_char_isnonneg (const gsl_matrix_char * m);
++
++int gsl_matrix_char_add (gsl_matrix_char * a, const gsl_matrix_char * b);
++int gsl_matrix_char_sub (gsl_matrix_char * a, const gsl_matrix_char * b);
++int gsl_matrix_char_mul_elements (gsl_matrix_char * a, const gsl_matrix_char * b);
++int gsl_matrix_char_div_elements (gsl_matrix_char * a, const gsl_matrix_char * b);
++int gsl_matrix_char_scale (gsl_matrix_char * a, const double x);
++int gsl_matrix_char_add_constant (gsl_matrix_char * a, const double x);
++int gsl_matrix_char_add_diagonal (gsl_matrix_char * a, const double x);
++
++/***********************************************************************/
++/* The functions below are obsolete                                    */
++/***********************************************************************/
++int gsl_matrix_char_get_row(gsl_vector_char * v, const gsl_matrix_char * m, const size_t i);
++int gsl_matrix_char_get_col(gsl_vector_char * v, const gsl_matrix_char * m, const size_t j);
++int gsl_matrix_char_set_row(gsl_matrix_char * m, const size_t i, const gsl_vector_char * v);
++int gsl_matrix_char_set_col(gsl_matrix_char * m, const size_t j, const gsl_vector_char * v);
++/***********************************************************************/
++
++/* inline functions if you are using GCC */
++
++INLINE_DECL char   gsl_matrix_char_get(const gsl_matrix_char * m, const size_t i, const size_t j);
++INLINE_DECL void    gsl_matrix_char_set(gsl_matrix_char * m, const size_t i, const size_t j, const char x);
++INLINE_DECL char * gsl_matrix_char_ptr(gsl_matrix_char * m, const size_t i, const size_t j);
++INLINE_DECL const char * gsl_matrix_char_const_ptr(const gsl_matrix_char * m, const size_t i, const size_t j);
++
++#ifdef HAVE_INLINE
++INLINE_FUN 
++char
++gsl_matrix_char_get(const gsl_matrix_char * m, const size_t i, const size_t j)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(1)) 
++    {
++      if (i >= m->size1)
++        {
++          GSL_ERROR_VAL("first index out of range", GSL_EINVAL, 0) ;
++        }
++      else if (j >= m->size2)
++        {
++          GSL_ERROR_VAL("second index out of range", GSL_EINVAL, 0) ;
++        }
++    }
++#endif
++  return m->data[i * m->tda + j] ;
++} 
++
++INLINE_FUN 
++void
++gsl_matrix_char_set(gsl_matrix_char * m, const size_t i, const size_t j, const char x)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(1)) 
++    {
++      if (i >= m->size1)
++        {
++          GSL_ERROR_VOID("first index out of range", GSL_EINVAL) ;
++        }
++      else if (j >= m->size2)
++        {
++          GSL_ERROR_VOID("second index out of range", GSL_EINVAL) ;
++        }
++    }
++#endif
++  m->data[i * m->tda + j] = x ;
++}
++
++INLINE_FUN 
++char *
++gsl_matrix_char_ptr(gsl_matrix_char * m, const size_t i, const size_t j)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(1)) 
++    {
++      if (i >= m->size1)
++        {
++          GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
++        }
++      else if (j >= m->size2)
++        {
++          GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
++        }
++    }
++#endif
++  return (char *) (m->data + (i * m->tda + j)) ;
++} 
++
++INLINE_FUN 
++const char *
++gsl_matrix_char_const_ptr(const gsl_matrix_char * m, const size_t i, const size_t j)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(1)) 
++    {
++      if (i >= m->size1)
++        {
++          GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
++        }
++      else if (j >= m->size2)
++        {
++          GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
++        }
++    }
++#endif
++  return (const char *) (m->data + (i * m->tda + j)) ;
++} 
++
++#endif
++
++__END_DECLS
++
++#endif /* __GSL_MATRIX_CHAR_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_uint.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_uint.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_uint.h	(revision 14078)
+@@ -0,0 +1,230 @@
++/* vector/gsl_vector_uint.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_VECTOR_UINT_H__
++#define __GSL_VECTOR_UINT_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_types.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_inline.h>
++#include <gsl/gsl_check_range.h>
++#include <gsl/gsl_block_uint.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++typedef struct 
++{
++  size_t size;
++  size_t stride;
++  unsigned int *data;
++  gsl_block_uint *block;
++  int owner;
++} 
++gsl_vector_uint;
++
++typedef struct
++{
++  gsl_vector_uint vector;
++} _gsl_vector_uint_view;
++
++typedef _gsl_vector_uint_view gsl_vector_uint_view;
++
++typedef struct
++{
++  gsl_vector_uint vector;
++} _gsl_vector_uint_const_view;
++
++typedef const _gsl_vector_uint_const_view gsl_vector_uint_const_view;
++
++
++/* Allocation */
++
++gsl_vector_uint *gsl_vector_uint_alloc (const size_t n);
++gsl_vector_uint *gsl_vector_uint_calloc (const size_t n);
++
++gsl_vector_uint *gsl_vector_uint_alloc_from_block (gsl_block_uint * b,
++                                                     const size_t offset, 
++                                                     const size_t n, 
++                                                     const size_t stride);
++
++gsl_vector_uint *gsl_vector_uint_alloc_from_vector (gsl_vector_uint * v,
++                                                      const size_t offset, 
++                                                      const size_t n, 
++                                                      const size_t stride);
++
++void gsl_vector_uint_free (gsl_vector_uint * v);
++
++/* Views */
++
++_gsl_vector_uint_view 
++gsl_vector_uint_view_array (unsigned int *v, size_t n);
++
++_gsl_vector_uint_view 
++gsl_vector_uint_view_array_with_stride (unsigned int *base,
++                                         size_t stride,
++                                         size_t n);
++
++_gsl_vector_uint_const_view 
++gsl_vector_uint_const_view_array (const unsigned int *v, size_t n);
++
++_gsl_vector_uint_const_view 
++gsl_vector_uint_const_view_array_with_stride (const unsigned int *base,
++                                               size_t stride,
++                                               size_t n);
++
++_gsl_vector_uint_view 
++gsl_vector_uint_subvector (gsl_vector_uint *v, 
++                            size_t i, 
++                            size_t n);
++
++_gsl_vector_uint_view 
++gsl_vector_uint_subvector_with_stride (gsl_vector_uint *v, 
++                                        size_t i,
++                                        size_t stride,
++                                        size_t n);
++
++_gsl_vector_uint_const_view 
++gsl_vector_uint_const_subvector (const gsl_vector_uint *v, 
++                                  size_t i, 
++                                  size_t n);
++
++_gsl_vector_uint_const_view 
++gsl_vector_uint_const_subvector_with_stride (const gsl_vector_uint *v, 
++                                              size_t i, 
++                                              size_t stride,
++                                              size_t n);
++
++/* Operations */
++
++void gsl_vector_uint_set_zero (gsl_vector_uint * v);
++void gsl_vector_uint_set_all (gsl_vector_uint * v, unsigned int x);
++int gsl_vector_uint_set_basis (gsl_vector_uint * v, size_t i);
++
++int gsl_vector_uint_fread (FILE * stream, gsl_vector_uint * v);
++int gsl_vector_uint_fwrite (FILE * stream, const gsl_vector_uint * v);
++int gsl_vector_uint_fscanf (FILE * stream, gsl_vector_uint * v);
++int gsl_vector_uint_fprintf (FILE * stream, const gsl_vector_uint * v,
++                              const char *format);
++
++int gsl_vector_uint_memcpy (gsl_vector_uint * dest, const gsl_vector_uint * src);
++
++int gsl_vector_uint_reverse (gsl_vector_uint * v);
++
++int gsl_vector_uint_swap (gsl_vector_uint * v, gsl_vector_uint * w);
++int gsl_vector_uint_swap_elements (gsl_vector_uint * v, const size_t i, const size_t j);
++
++unsigned int gsl_vector_uint_max (const gsl_vector_uint * v);
++unsigned int gsl_vector_uint_min (const gsl_vector_uint * v);
++void gsl_vector_uint_minmax (const gsl_vector_uint * v, unsigned int * min_out, unsigned int * max_out);
++
++size_t gsl_vector_uint_max_index (const gsl_vector_uint * v);
++size_t gsl_vector_uint_min_index (const gsl_vector_uint * v);
++void gsl_vector_uint_minmax_index (const gsl_vector_uint * v, size_t * imin, size_t * imax);
++
++int gsl_vector_uint_add (gsl_vector_uint * a, const gsl_vector_uint * b);
++int gsl_vector_uint_sub (gsl_vector_uint * a, const gsl_vector_uint * b);
++int gsl_vector_uint_mul (gsl_vector_uint * a, const gsl_vector_uint * b);
++int gsl_vector_uint_div (gsl_vector_uint * a, const gsl_vector_uint * b);
++int gsl_vector_uint_scale (gsl_vector_uint * a, const double x);
++int gsl_vector_uint_add_constant (gsl_vector_uint * a, const double x);
++
++int gsl_vector_uint_equal (const gsl_vector_uint * u, 
++                            const gsl_vector_uint * v);
++
++int gsl_vector_uint_isnull (const gsl_vector_uint * v);
++int gsl_vector_uint_ispos (const gsl_vector_uint * v);
++int gsl_vector_uint_isneg (const gsl_vector_uint * v);
++int gsl_vector_uint_isnonneg (const gsl_vector_uint * v);
++
++INLINE_DECL unsigned int gsl_vector_uint_get (const gsl_vector_uint * v, const size_t i);
++INLINE_DECL void gsl_vector_uint_set (gsl_vector_uint * v, const size_t i, unsigned int x);
++INLINE_DECL unsigned int * gsl_vector_uint_ptr (gsl_vector_uint * v, const size_t i);
++INLINE_DECL const unsigned int * gsl_vector_uint_const_ptr (const gsl_vector_uint * v, const size_t i);
++
++#ifdef HAVE_INLINE
++
++INLINE_FUN
++unsigned int
++gsl_vector_uint_get (const gsl_vector_uint * v, const size_t i)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(i >= v->size))
++    {
++      GSL_ERROR_VAL ("index out of range", GSL_EINVAL, 0);
++    }
++#endif
++  return v->data[i * v->stride];
++}
++
++INLINE_FUN
++void
++gsl_vector_uint_set (gsl_vector_uint * v, const size_t i, unsigned int x)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(i >= v->size))
++    {
++      GSL_ERROR_VOID ("index out of range", GSL_EINVAL);
++    }
++#endif
++  v->data[i * v->stride] = x;
++}
++
++INLINE_FUN
++unsigned int *
++gsl_vector_uint_ptr (gsl_vector_uint * v, const size_t i)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(i >= v->size))
++    {
++      GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
++    }
++#endif
++  return (unsigned int *) (v->data + i * v->stride);
++}
++
++INLINE_FUN
++const unsigned int *
++gsl_vector_uint_const_ptr (const gsl_vector_uint * v, const size_t i)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(i >= v->size))
++    {
++      GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
++    }
++#endif
++  return (const unsigned int *) (v->data + i * v->stride);
++}
++#endif /* HAVE_INLINE */
++
++__END_DECLS
++
++#endif /* __GSL_VECTOR_UINT_H__ */
++
++
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_uint.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_uint.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_uint.h	(revision 14078)
+@@ -0,0 +1,45 @@
++/* permutation/gsl_permute_vector_uint.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_PERMUTE_VECTOR_UINT_H__
++#define __GSL_PERMUTE_VECTOR_UINT_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_permutation.h>
++#include <gsl/gsl_vector_uint.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++int gsl_permute_vector_uint (const gsl_permutation * p, gsl_vector_uint * v);
++int gsl_permute_vector_uint_inverse (const gsl_permutation * p, gsl_vector_uint * v);
++
++__END_DECLS
++
++#endif /* __GSL_PERMUTE_VECTOR_UINT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_complex_long_double.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_complex_long_double.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_complex_long_double.h	(revision 14078)
+@@ -0,0 +1,45 @@
++/* permutation/gsl_permute_vector_complex_long_double.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_PERMUTE_VECTOR_COMPLEX_LONG_DOUBLE_H__
++#define __GSL_PERMUTE_VECTOR_COMPLEX_LONG_DOUBLE_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_permutation.h>
++#include <gsl/gsl_vector_complex_long_double.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++int gsl_permute_vector_complex_long_double (const gsl_permutation * p, gsl_vector_complex_long_double * v);
++int gsl_permute_vector_complex_long_double_inverse (const gsl_permutation * p, gsl_vector_complex_long_double * v);
++
++__END_DECLS
++
++#endif /* __GSL_PERMUTE_VECTOR_COMPLEX_LONG_DOUBLE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_int.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_int.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_int.h	(revision 14078)
+@@ -0,0 +1,79 @@
++/* statistics/gsl_statistics_int.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_STATISTICS_INT_H__
++#define __GSL_STATISTICS_INT_H__
++
++#include <stddef.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++double gsl_stats_int_mean (const int data[], const size_t stride, const size_t n);
++double gsl_stats_int_variance (const int data[], const size_t stride, const size_t n);
++double gsl_stats_int_sd (const int data[], const size_t stride, const size_t n);
++double gsl_stats_int_variance_with_fixed_mean (const int data[], const size_t stride, const size_t n, const double mean);
++double gsl_stats_int_sd_with_fixed_mean (const int data[], const size_t stride, const size_t n, const double mean);
++double gsl_stats_int_tss (const int data[], const size_t stride, const size_t n);
++double gsl_stats_int_tss_m (const int data[], const size_t stride, const size_t n, const double mean);
++
++double gsl_stats_int_absdev (const int data[], const size_t stride, const size_t n);
++double gsl_stats_int_skew (const int data[], const size_t stride, const size_t n);
++double gsl_stats_int_kurtosis (const int data[], const size_t stride, const size_t n);
++double gsl_stats_int_lag1_autocorrelation (const int data[], const size_t stride, const size_t n);
++
++double gsl_stats_int_covariance (const int data1[], const size_t stride1,const int data2[], const size_t stride2, const size_t n);
++double gsl_stats_int_correlation (const int data1[], const size_t stride1,const int data2[], const size_t stride2, const size_t n);
++
++double gsl_stats_int_variance_m (const int data[], const size_t stride, const size_t n, const double mean);
++double gsl_stats_int_sd_m (const int data[], const size_t stride, const size_t n, const double mean);
++double gsl_stats_int_absdev_m (const int data[], const size_t stride, const size_t n, const double mean);
++double gsl_stats_int_skew_m_sd (const int data[], const size_t stride, const size_t n, const double mean, const double sd);
++double gsl_stats_int_kurtosis_m_sd (const int data[], const size_t stride, const size_t n, const double mean, const double sd);
++double gsl_stats_int_lag1_autocorrelation_m (const int data[], const size_t stride, const size_t n, const double mean);
++
++double gsl_stats_int_covariance_m (const int data1[], const size_t stride1,const int data2[], const size_t stride2, const size_t n, const double mean1, const double mean2);
++
++
++double gsl_stats_int_pvariance (const int data1[], const size_t stride1, const size_t n1, const int data2[], const size_t stride2, const size_t n2);
++double gsl_stats_int_ttest (const int data1[], const size_t stride1, const size_t n1, const int data2[], const size_t stride2, const size_t n2);
++
++int gsl_stats_int_max (const int data[], const size_t stride, const size_t n);
++int gsl_stats_int_min (const int data[], const size_t stride, const size_t n);
++void gsl_stats_int_minmax (int * min, int * max, const int data[], const size_t stride, const size_t n);
++
++size_t gsl_stats_int_max_index (const int data[], const size_t stride, const size_t n);
++size_t gsl_stats_int_min_index (const int data[], const size_t stride, const size_t n);
++void gsl_stats_int_minmax_index (size_t * min_index, size_t * max_index, const int data[], const size_t stride, const size_t n);
++
++double gsl_stats_int_median_from_sorted_data (const int sorted_data[], const size_t stride, const size_t n) ;
++double gsl_stats_int_quantile_from_sorted_data (const int sorted_data[], const size_t stride, const size_t n, const double f) ;
++
++__END_DECLS
++
++#endif /* __GSL_STATISTICS_INT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_types.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_types.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_types.h	(revision 14078)
+@@ -0,0 +1,41 @@
++/* gsl_types.h
++ * 
++ * Copyright (C) 2001, 2007 Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_TYPES_H__
++#define __GSL_TYPES_H__
++
++#ifndef GSL_VAR
++
++#ifdef WIN32
++#  ifdef GSL_DLL
++#    ifdef DLL_EXPORT
++#      define GSL_VAR extern __declspec(dllexport)
++#    else
++#      define GSL_VAR extern __declspec(dllimport)
++#    endif
++#  else
++#    define GSL_VAR extern
++#  endif
++#else
++#  define GSL_VAR extern
++#endif
++
++#endif
++
++#endif /* __GSL_TYPES_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_monte_plain.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_monte_plain.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_monte_plain.h	(revision 14078)
+@@ -0,0 +1,65 @@
++/* monte/gsl_monte_plain.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Michael Booth
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++/* Plain Monte-Carlo. */
++
++/* Author: MJB */
++
++#ifndef __GSL_MONTE_PLAIN_H__
++#define __GSL_MONTE_PLAIN_H__
++
++#include <stdio.h>
++#include <gsl/gsl_monte.h>
++#include <gsl/gsl_rng.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++typedef struct {
++  size_t dim;
++  double *x;
++} gsl_monte_plain_state;
++
++int
++gsl_monte_plain_integrate (const gsl_monte_function * f,
++                           const double xl[], const double xu[],
++                           const size_t dim,
++                           const size_t calls, 
++                           gsl_rng * r,
++                           gsl_monte_plain_state * state,
++                           double *result, double *abserr);
++
++gsl_monte_plain_state* gsl_monte_plain_alloc(size_t dim);
++
++int gsl_monte_plain_init(gsl_monte_plain_state* state);
++
++void gsl_monte_plain_free (gsl_monte_plain_state* state);
++
++__END_DECLS
++
++#endif /* __GSL_MONTE_PLAIN_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_bessel.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_bessel.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_bessel.h	(revision 14078)
+@@ -0,0 +1,549 @@
++/* specfunc/gsl_sf_bessel.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++/* Author:  G. Jungman */
++
++#ifndef __GSL_SF_BESSEL_H__
++#define __GSL_SF_BESSEL_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_mode.h>
++#include <gsl/gsl_precision.h>
++#include <gsl/gsl_sf_result.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++
++/* Regular Bessel Function J_0(x)
++ *
++ * exceptions: none
++ */
++int gsl_sf_bessel_J0_e(const double x,  gsl_sf_result * result);
++double gsl_sf_bessel_J0(const double x);
++
++
++/* Regular Bessel Function J_1(x)
++ *
++ * exceptions: GSL_EUNDRFLW
++ */
++int gsl_sf_bessel_J1_e(const double x, gsl_sf_result * result);
++double gsl_sf_bessel_J1(const double x);
++
++
++/* Regular Bessel Function J_n(x)
++ *
++ * exceptions: GSL_EUNDRFLW
++ */
++int gsl_sf_bessel_Jn_e(int n, double x, gsl_sf_result * result);
++double gsl_sf_bessel_Jn(const int n, const double x);
++
++
++/* Regular Bessel Function J_n(x),  nmin <= n <= nmax
++ *
++ * exceptions: GSL_EDOM, GSL_EUNDRFLW
++ */
++int gsl_sf_bessel_Jn_array(int nmin, int nmax, double x, double * result_array);
++
++
++/* Irregular Bessel function Y_0(x)
++ *
++ * x > 0.0
++ * exceptions: GSL_EDOM, GSL_EUNDRFLW
++ */
++int gsl_sf_bessel_Y0_e(const double x, gsl_sf_result * result);
++double gsl_sf_bessel_Y0(const double x);
++
++
++/* Irregular Bessel function Y_1(x)
++ *
++ * x > 0.0
++ * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW
++ */
++int gsl_sf_bessel_Y1_e(const double x, gsl_sf_result * result);
++double gsl_sf_bessel_Y1(const double x);
++
++
++/* Irregular Bessel function Y_n(x)
++ *
++ * x > 0.0
++ * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW
++ */
++int gsl_sf_bessel_Yn_e(int n,const double x, gsl_sf_result * result);
++double gsl_sf_bessel_Yn(const int n,const double x);
++
++
++/* Irregular Bessel function Y_n(x), nmin <= n <= nmax
++ *
++ * x > 0.0
++ * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW
++ */
++int gsl_sf_bessel_Yn_array(const int nmin, const int nmax, const double x, double * result_array);
++
++
++/* Regular modified Bessel function I_0(x)
++ *
++ * exceptions: GSL_EOVRFLW
++ */
++int gsl_sf_bessel_I0_e(const double x, gsl_sf_result * result);
++double gsl_sf_bessel_I0(const double x);
++
++
++/* Regular modified Bessel function I_1(x)
++ *
++ * exceptions: GSL_EOVRFLW, GSL_EUNDRFLW
++ */
++int gsl_sf_bessel_I1_e(const double x, gsl_sf_result * result);
++double gsl_sf_bessel_I1(const double x);
++
++
++/* Regular modified Bessel function I_n(x)
++ *
++ * exceptions: GSL_EOVRFLW, GSL_EUNDRFLW
++ */
++int gsl_sf_bessel_In_e(const int n, const double x, gsl_sf_result * result);
++double gsl_sf_bessel_In(const int n, const double x);
++
++
++/* Regular modified Bessel function  I_n(x) for n=nmin,...,nmax
++ *
++ * nmin >=0, nmax >= nmin
++ * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW
++ */
++int gsl_sf_bessel_In_array(const int nmin, const int nmax, const double x, double * result_array);
++
++
++/* Scaled regular modified Bessel function
++ *  exp(-|x|) I_0(x)
++ *
++ * exceptions: none
++ */
++int gsl_sf_bessel_I0_scaled_e(const double x, gsl_sf_result * result);
++double gsl_sf_bessel_I0_scaled(const double x);
++
++
++/* Scaled regular modified Bessel function
++ *  exp(-|x|) I_1(x)
++ *
++ * exceptions: GSL_EUNDRFLW
++ */
++int gsl_sf_bessel_I1_scaled_e(const double x, gsl_sf_result * result);
++double gsl_sf_bessel_I1_scaled(const double x);
++
++
++/* Scaled regular modified Bessel function
++ *  exp(-|x|) I_n(x)
++ *
++ * exceptions: GSL_EUNDRFLW
++ */
++int gsl_sf_bessel_In_scaled_e(int n, const double x, gsl_sf_result * result);
++double gsl_sf_bessel_In_scaled(const int n, const double x);
++
++
++/* Scaled regular modified Bessel function
++ *  exp(-|x|) I_n(x)  for n=nmin,...,nmax
++ *
++ * nmin >=0, nmax >= nmin
++ * exceptions: GSL_EUNDRFLW
++ */
++int gsl_sf_bessel_In_scaled_array(const int nmin, const int nmax, const double x, double * result_array);
++
++
++/* Irregular modified Bessel function K_0(x)
++ *
++ * x > 0.0
++ * exceptions: GSL_EDOM, GSL_EUNDRFLW
++ */
++int gsl_sf_bessel_K0_e(const double x, gsl_sf_result * result);
++double gsl_sf_bessel_K0(const double x);
++
++
++/* Irregular modified Bessel function K_1(x)
++ *
++ * x > 0.0
++ * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW
++ */
++int gsl_sf_bessel_K1_e(const double x, gsl_sf_result * result);
++double gsl_sf_bessel_K1(const double x);
++
++
++/* Irregular modified Bessel function K_n(x)
++ *
++ * x > 0.0
++ * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW
++ */
++int gsl_sf_bessel_Kn_e(const int n, const double x, gsl_sf_result * result);
++double gsl_sf_bessel_Kn(const int n, const double x);
++
++
++/* Irregular modified Bessel function  K_n(x)  for n=nmin,...,nmax
++ *
++ * x > 0.0, nmin >=0, nmax >= nmin
++ * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW
++ */
++int gsl_sf_bessel_Kn_array(const int nmin, const int nmax, const double x, double * result_array);
++
++
++/* Scaled irregular modified Bessel function
++ *  exp(x) K_0(x)
++ *
++ * x > 0.0
++ * exceptions: GSL_EDOM
++ */
++int gsl_sf_bessel_K0_scaled_e(const double x, gsl_sf_result * result);
++double gsl_sf_bessel_K0_scaled(const double x);
++
++
++/* Scaled irregular modified Bessel function
++ *  exp(x) K_1(x)
++ *
++ * x > 0.0
++ * exceptions: GSL_EDOM, GSL_EUNDRFLW
++ */
++int gsl_sf_bessel_K1_scaled_e(const double x, gsl_sf_result * result); 
++double gsl_sf_bessel_K1_scaled(const double x);
++
++
++/* Scaled irregular modified Bessel function
++ *  exp(x) K_n(x)
++ *
++ * x > 0.0
++ * exceptions: GSL_EDOM, GSL_EUNDRFLW
++ */
++int gsl_sf_bessel_Kn_scaled_e(int n, const double x, gsl_sf_result * result);
++double gsl_sf_bessel_Kn_scaled(const int n, const double x);
++
++
++/* Scaled irregular modified Bessel function  exp(x) K_n(x)  for n=nmin,...,nmax
++ *
++ * x > 0.0, nmin >=0, nmax >= nmin
++ * exceptions: GSL_EDOM, GSL_EUNDRFLW
++ */
++int gsl_sf_bessel_Kn_scaled_array(const int nmin, const int nmax, const double x, double * result_array);
++
++
++/* Regular spherical Bessel function j_0(x) = sin(x)/x
++ *
++ * exceptions: none
++ */
++int gsl_sf_bessel_j0_e(const double x, gsl_sf_result * result);
++double gsl_sf_bessel_j0(const double x);
++
++
++/* Regular spherical Bessel function j_1(x) = (sin(x)/x - cos(x))/x
++ *
++ * exceptions: GSL_EUNDRFLW
++ */
++int gsl_sf_bessel_j1_e(const double x, gsl_sf_result * result);
++double gsl_sf_bessel_j1(const double x);
++
++
++/* Regular spherical Bessel function j_2(x) = ((3/x^2 - 1)sin(x) - 3cos(x)/x)/x
++ *
++ * exceptions: GSL_EUNDRFLW
++ */
++int gsl_sf_bessel_j2_e(const double x, gsl_sf_result * result);
++double gsl_sf_bessel_j2(const double x);
++
++
++/* Regular spherical Bessel function j_l(x)
++ *
++ * l >= 0, x >= 0.0
++ * exceptions: GSL_EDOM, GSL_EUNDRFLW
++ */
++int gsl_sf_bessel_jl_e(const int l, const double x, gsl_sf_result * result);
++double gsl_sf_bessel_jl(const int l, const double x);
++
++
++/* Regular spherical Bessel function j_l(x) for l=0,1,...,lmax
++ *
++ * exceptions: GSL_EDOM, GSL_EUNDRFLW
++ */
++int gsl_sf_bessel_jl_array(const int lmax, const double x, double * result_array);
++
++
++/* Regular spherical Bessel function j_l(x) for l=0,1,...,lmax
++ * Uses Steed's method.
++ *
++ * exceptions: GSL_EDOM, GSL_EUNDRFLW
++ */
++int gsl_sf_bessel_jl_steed_array(const int lmax, const double x, double * jl_x_array);
++
++
++/* Irregular spherical Bessel function y_0(x)
++ *
++ * exceptions: none
++ */
++int gsl_sf_bessel_y0_e(const double x, gsl_sf_result * result);
++double gsl_sf_bessel_y0(const double x);
++
++
++/* Irregular spherical Bessel function y_1(x)
++ *
++ * exceptions: GSL_EUNDRFLW
++ */
++int gsl_sf_bessel_y1_e(const double x, gsl_sf_result * result);
++double gsl_sf_bessel_y1(const double x);
++
++
++/* Irregular spherical Bessel function y_2(x)
++ *
++ * exceptions: GSL_EUNDRFLW
++ */
++int gsl_sf_bessel_y2_e(const double x, gsl_sf_result * result);
++double gsl_sf_bessel_y2(const double x);
++
++
++/* Irregular spherical Bessel function y_l(x)
++ *
++ * exceptions: GSL_EUNDRFLW
++ */
++int gsl_sf_bessel_yl_e(int l, const double x, gsl_sf_result * result);
++double gsl_sf_bessel_yl(const int l, const double x);
++
++
++/* Irregular spherical Bessel function y_l(x) for l=0,1,...,lmax
++ *
++ * exceptions: GSL_EUNDRFLW
++ */
++int gsl_sf_bessel_yl_array(const int lmax, const double x, double * result_array);
++
++
++/* Regular scaled modified spherical Bessel function
++ *
++ * Exp[-|x|] i_0(x)
++ *
++ * exceptions: none
++ */
++int gsl_sf_bessel_i0_scaled_e(const double x, gsl_sf_result * result);
++double gsl_sf_bessel_i0_scaled(const double x);
++
++
++/* Regular scaled modified spherical Bessel function
++ *
++ * Exp[-|x|] i_1(x)
++ *
++ * exceptions: GSL_EUNDRFLW
++ */
++int gsl_sf_bessel_i1_scaled_e(const double x, gsl_sf_result * result);
++double gsl_sf_bessel_i1_scaled(const double x);
++
++
++/* Regular scaled modified spherical Bessel function
++ *
++ * Exp[-|x|] i_2(x)
++ *
++ * exceptions: GSL_EUNDRFLW
++ */
++int gsl_sf_bessel_i2_scaled_e(const double x, gsl_sf_result * result);
++double gsl_sf_bessel_i2_scaled(const double x);
++
++
++/* Regular scaled modified spherical Bessel functions
++ *
++ * Exp[-|x|] i_l(x)
++ *
++ * i_l(x) = Sqrt[Pi/(2x)] BesselI[l+1/2,x]
++ *
++ * l >= 0
++ * exceptions: GSL_EDOM, GSL_EUNDRFLW
++ */
++int gsl_sf_bessel_il_scaled_e(const int l, double x, gsl_sf_result * result);
++double gsl_sf_bessel_il_scaled(const int l, const double x);
++
++
++/* Regular scaled modified spherical Bessel functions
++ *
++ * Exp[-|x|] i_l(x)
++ * for l=0,1,...,lmax
++ *
++ * exceptions: GSL_EUNDRFLW
++ */
++int gsl_sf_bessel_il_scaled_array(const int lmax, const double x, double * result_array);
++
++
++/* Irregular scaled modified spherical Bessel function
++ * Exp[x] k_0(x)
++ *
++ * x > 0.0
++ * exceptions: GSL_EDOM, GSL_EUNDRFLW
++ */
++int gsl_sf_bessel_k0_scaled_e(const double x, gsl_sf_result * result);
++double gsl_sf_bessel_k0_scaled(const double x);
++
++
++/* Irregular modified spherical Bessel function
++ * Exp[x] k_1(x)
++ *
++ * x > 0.0
++ * exceptions: GSL_EDOM, GSL_EUNDRFLW, GSL_EOVRFLW
++ */
++int gsl_sf_bessel_k1_scaled_e(const double x, gsl_sf_result * result);
++double gsl_sf_bessel_k1_scaled(const double x);
++
++
++/* Irregular modified spherical Bessel function
++ * Exp[x] k_2(x)
++ *
++ * x > 0.0
++ * exceptions: GSL_EDOM, GSL_EUNDRFLW, GSL_EOVRFLW
++ */
++int gsl_sf_bessel_k2_scaled_e(const double x, gsl_sf_result * result);
++double gsl_sf_bessel_k2_scaled(const double x);
++
++
++/* Irregular modified spherical Bessel function
++ * Exp[x] k_l[x]
++ *
++ * k_l(x) = Sqrt[Pi/(2x)] BesselK[l+1/2,x]
++ *
++ * exceptions: GSL_EDOM, GSL_EUNDRFLW
++ */
++int gsl_sf_bessel_kl_scaled_e(int l, const double x, gsl_sf_result * result);
++double gsl_sf_bessel_kl_scaled(const int l, const double x);
++
++
++/* Irregular scaled modified spherical Bessel function
++ * Exp[x] k_l(x)
++ *
++ * for l=0,1,...,lmax
++ * exceptions: GSL_EDOM, GSL_EUNDRFLW
++ */
++int gsl_sf_bessel_kl_scaled_array(const int lmax, const double x, double * result_array);
++
++
++/* Regular cylindrical Bessel function J_nu(x)
++ *
++ * exceptions: GSL_EDOM, GSL_EUNDRFLW
++ */
++int gsl_sf_bessel_Jnu_e(const double nu, const double x, gsl_sf_result * result);
++double gsl_sf_bessel_Jnu(const double nu, const double x);
++
++
++/* Irregular cylindrical Bessel function Y_nu(x)
++ *
++ * exceptions:  
++ */
++int gsl_sf_bessel_Ynu_e(double nu, double x, gsl_sf_result * result);
++double gsl_sf_bessel_Ynu(const double nu, const double x);
++
++
++/* Regular cylindrical Bessel function J_nu(x)
++ * evaluated at a series of x values. The array
++ * contains the x values. They are assumed to be
++ * strictly ordered and positive. The array is
++ * over-written with the values of J_nu(x_i).
++ *
++ * exceptions: GSL_EDOM, GSL_EINVAL
++ */
++int gsl_sf_bessel_sequence_Jnu_e(double nu, gsl_mode_t mode, size_t size, double * v);
++
++
++/* Scaled modified cylindrical Bessel functions
++ *
++ * Exp[-|x|] BesselI[nu, x]
++ * x >= 0, nu >= 0
++ *
++ * exceptions: GSL_EDOM
++ */
++int gsl_sf_bessel_Inu_scaled_e(double nu, double x, gsl_sf_result * result);
++double gsl_sf_bessel_Inu_scaled(double nu, double x);
++
++
++/* Modified cylindrical Bessel functions
++ *
++ * BesselI[nu, x]
++ * x >= 0, nu >= 0
++ *
++ * exceptions: GSL_EDOM, GSL_EOVRFLW
++ */
++int gsl_sf_bessel_Inu_e(double nu, double x, gsl_sf_result * result);
++double gsl_sf_bessel_Inu(double nu, double x);
++
++
++/* Scaled modified cylindrical Bessel functions
++ *
++ * Exp[+|x|] BesselK[nu, x]
++ * x > 0, nu >= 0
++ *
++ * exceptions: GSL_EDOM
++ */
++int gsl_sf_bessel_Knu_scaled_e(const double nu, const double x, gsl_sf_result * result);
++double gsl_sf_bessel_Knu_scaled(const double nu, const double x);
++
++int gsl_sf_bessel_Knu_scaled_e10_e(const double nu, const double x, gsl_sf_result_e10 * result);
++
++/* Modified cylindrical Bessel functions
++ *
++ * BesselK[nu, x]
++ * x > 0, nu >= 0
++ *
++ * exceptions: GSL_EDOM, GSL_EUNDRFLW
++ */
++int gsl_sf_bessel_Knu_e(const double nu, const double x, gsl_sf_result * result);
++double gsl_sf_bessel_Knu(const double nu, const double x);
++
++
++/* Logarithm of modified cylindrical Bessel functions.
++ *
++ * Log[BesselK[nu, x]]
++ * x > 0, nu >= 0
++ *
++ * exceptions: GSL_EDOM
++ */
++int gsl_sf_bessel_lnKnu_e(const double nu, const double x, gsl_sf_result * result);
++double gsl_sf_bessel_lnKnu(const double nu, const double x);
++
++
++/* s'th positive zero of the Bessel function J_0(x).
++ *
++ * exceptions: 
++ */
++int gsl_sf_bessel_zero_J0_e(unsigned int s, gsl_sf_result * result);
++double gsl_sf_bessel_zero_J0(unsigned int s);
++
++
++/* s'th positive zero of the Bessel function J_1(x).
++ *
++ * exceptions: 
++ */
++int gsl_sf_bessel_zero_J1_e(unsigned int s, gsl_sf_result * result);
++double gsl_sf_bessel_zero_J1(unsigned int s);
++
++
++/* s'th positive zero of the Bessel function J_nu(x).
++ *
++ * exceptions: 
++ */
++int gsl_sf_bessel_zero_Jnu_e(double nu, unsigned int s, gsl_sf_result * result);
++double gsl_sf_bessel_zero_Jnu(double nu, unsigned int s);
++
++
++__END_DECLS
++
++#endif /* __GSL_SF_BESSEL_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_multiset.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_multiset.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_multiset.h	(revision 14078)
+@@ -0,0 +1,93 @@
++/* multiset/gsl_multiset.h
++ * based on combination/gsl_combination.h by Szymon Jaroszewicz
++ * based on permutation/gsl_permutation.h by Brian Gough
++ *
++ * Copyright (C) 2009 Rhys Ulerich
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_MULTISET_H__
++#define __GSL_MULTISET_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_types.h>
++#include <gsl/gsl_inline.h>
++#include <gsl/gsl_check_range.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++struct gsl_multiset_struct
++{
++  size_t n;
++  size_t k;
++  size_t *data;
++};
++
++typedef struct gsl_multiset_struct gsl_multiset;
++
++gsl_multiset *gsl_multiset_alloc (const size_t n, const size_t k);
++gsl_multiset *gsl_multiset_calloc (const size_t n, const size_t k);
++void gsl_multiset_init_first (gsl_multiset * c);
++void gsl_multiset_init_last (gsl_multiset * c);
++void gsl_multiset_free (gsl_multiset * c);
++int gsl_multiset_memcpy (gsl_multiset * dest, const gsl_multiset * src);
++
++int gsl_multiset_fread (FILE * stream, gsl_multiset * c);
++int gsl_multiset_fwrite (FILE * stream, const gsl_multiset * c);
++int gsl_multiset_fscanf (FILE * stream, gsl_multiset * c);
++int gsl_multiset_fprintf (FILE * stream, const gsl_multiset * c, const char *format);
++
++size_t gsl_multiset_n (const gsl_multiset * c);
++size_t gsl_multiset_k (const gsl_multiset * c);
++size_t * gsl_multiset_data (const gsl_multiset * c);
++
++int gsl_multiset_valid (gsl_multiset * c);
++int gsl_multiset_next (gsl_multiset * c);
++int gsl_multiset_prev (gsl_multiset * c);
++
++INLINE_DECL size_t gsl_multiset_get (const gsl_multiset * c, const size_t i);
++
++#ifdef HAVE_INLINE
++
++INLINE_FUN
++size_t
++gsl_multiset_get (const gsl_multiset * c, const size_t i)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(i >= c->k)) /* size_t is unsigned, can't be negative */
++    {
++      GSL_ERROR_VAL ("index out of range", GSL_EINVAL, 0);
++    }
++#endif
++  return c->data[i];
++}
++
++#endif /* HAVE_INLINE */
++
++__END_DECLS
++
++#endif /* __GSL_MULTISET_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_specfunc.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_specfunc.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_specfunc.h	(revision 14078)
+@@ -0,0 +1,10 @@
++/* Author:  G. Jungman */
++
++        
++/* Convenience header */
++#ifndef __GSL_SPECFUNC_H__
++#define __GSL_SPECFUNC_H__
++
++#include <gsl/gsl_sf.h>
++
++#endif /* __GSL_SPECFUNC_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_uchar.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_uchar.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_uchar.h	(revision 14078)
+@@ -0,0 +1,65 @@
++/* block/gsl_block_uchar.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_BLOCK_UCHAR_H__
++#define __GSL_BLOCK_UCHAR_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++struct gsl_block_uchar_struct
++{
++  size_t size;
++  unsigned char *data;
++};
++
++typedef struct gsl_block_uchar_struct gsl_block_uchar;
++
++gsl_block_uchar *gsl_block_uchar_alloc (const size_t n);
++gsl_block_uchar *gsl_block_uchar_calloc (const size_t n);
++void gsl_block_uchar_free (gsl_block_uchar * b);
++
++int gsl_block_uchar_fread (FILE * stream, gsl_block_uchar * b);
++int gsl_block_uchar_fwrite (FILE * stream, const gsl_block_uchar * b);
++int gsl_block_uchar_fscanf (FILE * stream, gsl_block_uchar * b);
++int gsl_block_uchar_fprintf (FILE * stream, const gsl_block_uchar * b, const char *format);
++
++int gsl_block_uchar_raw_fread (FILE * stream, unsigned char * b, const size_t n, const size_t stride);
++int gsl_block_uchar_raw_fwrite (FILE * stream, const unsigned char * b, const size_t n, const size_t stride);
++int gsl_block_uchar_raw_fscanf (FILE * stream, unsigned char * b, const size_t n, const size_t stride);
++int gsl_block_uchar_raw_fprintf (FILE * stream, const unsigned char * b, const size_t n, const size_t stride, const char *format);
++
++size_t gsl_block_uchar_size (const gsl_block_uchar * b);
++unsigned char * gsl_block_uchar_data (const gsl_block_uchar * b);
++
++__END_DECLS
++
++#endif /* __GSL_BLOCK_UCHAR_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_float.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_float.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_float.h	(revision 14078)
+@@ -0,0 +1,50 @@
++/* sort/gsl_sort_float.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_SORT_FLOAT_H__
++#define __GSL_SORT_FLOAT_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_permutation.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++void gsl_sort_float (float * data, const size_t stride, const size_t n);
++void gsl_sort_float_index (size_t * p, const float * data, const size_t stride, const size_t n);
++
++int gsl_sort_float_smallest (float * dest, const size_t k, const float * src, const size_t stride, const size_t n);
++int gsl_sort_float_smallest_index (size_t * p, const size_t k, const float * src, const size_t stride, const size_t n);
++
++int gsl_sort_float_largest (float * dest, const size_t k, const float * src, const size_t stride, const size_t n);
++int gsl_sort_float_largest_index (size_t * p, const size_t k, const float * src, const size_t stride, const size_t n);
++
++__END_DECLS
++
++#endif /* __GSL_SORT_FLOAT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_complex_math.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_complex_math.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_complex_math.h	(revision 14078)
+@@ -0,0 +1,142 @@
++/* complex/gsl_complex_math.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004, 2007 Jorma Olavi Tähtinen, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_COMPLEX_MATH_H__
++#define __GSL_COMPLEX_MATH_H__
++#include <gsl/gsl_inline.h>
++#include <gsl/gsl_complex.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++#define __BEGIN_DECLS extern "C" {
++#define __END_DECLS }
++#else
++#define __BEGIN_DECLS           /* empty */
++#define __END_DECLS             /* empty */
++#endif
++
++__BEGIN_DECLS
++
++/* Complex numbers */
++
++gsl_complex gsl_complex_polar (double r, double theta); /* r= r e^(i theta) */
++
++INLINE_DECL gsl_complex gsl_complex_rect (double x, double y);  /* r= real+i*imag */
++
++#ifdef HAVE_INLINE
++INLINE_FUN gsl_complex
++gsl_complex_rect (double x, double y)
++{                               /* return z = x + i y */
++  gsl_complex z;
++  GSL_SET_COMPLEX (&z, x, y);
++  return z;
++}
++#endif
++
++#define GSL_COMPLEX_ONE (gsl_complex_rect(1.0,0.0))
++#define GSL_COMPLEX_ZERO (gsl_complex_rect(0.0,0.0))
++#define GSL_COMPLEX_NEGONE (gsl_complex_rect(-1.0,0.0))
++
++/* Properties of complex numbers */
++
++double gsl_complex_arg (gsl_complex z); /* return arg(z), -pi< arg(z) <=+pi */
++double gsl_complex_abs (gsl_complex z);   /* return |z|   */
++double gsl_complex_abs2 (gsl_complex z);  /* return |z|^2 */
++double gsl_complex_logabs (gsl_complex z); /* return log|z| */
++
++/* Complex arithmetic operators */
++
++gsl_complex gsl_complex_add (gsl_complex a, gsl_complex b);  /* r=a+b */
++gsl_complex gsl_complex_sub (gsl_complex a, gsl_complex b);  /* r=a-b */
++gsl_complex gsl_complex_mul (gsl_complex a, gsl_complex b);  /* r=a*b */
++gsl_complex gsl_complex_div (gsl_complex a, gsl_complex b);  /* r=a/b */
++                                                           
++gsl_complex gsl_complex_add_real (gsl_complex a, double x);  /* r=a+x */
++gsl_complex gsl_complex_sub_real (gsl_complex a, double x);  /* r=a-x */
++gsl_complex gsl_complex_mul_real (gsl_complex a, double x);  /* r=a*x */
++gsl_complex gsl_complex_div_real (gsl_complex a, double x);  /* r=a/x */
++
++gsl_complex gsl_complex_add_imag (gsl_complex a, double y);  /* r=a+iy */
++gsl_complex gsl_complex_sub_imag (gsl_complex a, double y);  /* r=a-iy */
++gsl_complex gsl_complex_mul_imag (gsl_complex a, double y);  /* r=a*iy */
++gsl_complex gsl_complex_div_imag (gsl_complex a, double y);  /* r=a/iy */
++
++gsl_complex gsl_complex_conjugate (gsl_complex z);  /* r=conj(z) */
++gsl_complex gsl_complex_inverse (gsl_complex a);    /* r=1/a */
++gsl_complex gsl_complex_negative (gsl_complex a);    /* r=-a */
++
++/* Elementary Complex Functions */
++
++gsl_complex gsl_complex_sqrt (gsl_complex z);  /* r=sqrt(z) */
++gsl_complex gsl_complex_sqrt_real (double x);  /* r=sqrt(x) (x<0 ok) */
++
++gsl_complex gsl_complex_pow (gsl_complex a, gsl_complex b);  /* r=a^b */
++gsl_complex gsl_complex_pow_real (gsl_complex a, double b);  /* r=a^b */
++
++gsl_complex gsl_complex_exp (gsl_complex a);    /* r=exp(a) */
++gsl_complex gsl_complex_log (gsl_complex a);    /* r=log(a) (base e) */
++gsl_complex gsl_complex_log10 (gsl_complex a);  /* r=log10(a) (base 10) */
++gsl_complex gsl_complex_log_b (gsl_complex a, gsl_complex b);   /* r=log_b(a) (base=b) */
++
++/* Complex Trigonometric Functions */
++
++gsl_complex gsl_complex_sin (gsl_complex a);  /* r=sin(a) */
++gsl_complex gsl_complex_cos (gsl_complex a);  /* r=cos(a) */
++gsl_complex gsl_complex_sec (gsl_complex a);  /* r=sec(a) */
++gsl_complex gsl_complex_csc (gsl_complex a);  /* r=csc(a) */
++gsl_complex gsl_complex_tan (gsl_complex a);  /* r=tan(a) */
++gsl_complex gsl_complex_cot (gsl_complex a);  /* r=cot(a) */
++
++/* Inverse Complex Trigonometric Functions */
++
++gsl_complex gsl_complex_arcsin (gsl_complex a);  /* r=arcsin(a) */
++gsl_complex gsl_complex_arcsin_real (double a);  /* r=arcsin(a) */
++gsl_complex gsl_complex_arccos (gsl_complex a);  /* r=arccos(a) */
++gsl_complex gsl_complex_arccos_real (double a);  /* r=arccos(a) */
++gsl_complex gsl_complex_arcsec (gsl_complex a);  /* r=arcsec(a) */
++gsl_complex gsl_complex_arcsec_real (double a);  /* r=arcsec(a) */
++gsl_complex gsl_complex_arccsc (gsl_complex a);  /* r=arccsc(a) */
++gsl_complex gsl_complex_arccsc_real (double a);  /* r=arccsc(a) */
++gsl_complex gsl_complex_arctan (gsl_complex a);  /* r=arctan(a) */
++gsl_complex gsl_complex_arccot (gsl_complex a);  /* r=arccot(a) */
++
++/* Complex Hyperbolic Functions */
++
++gsl_complex gsl_complex_sinh (gsl_complex a);  /* r=sinh(a) */
++gsl_complex gsl_complex_cosh (gsl_complex a);  /* r=coshh(a) */
++gsl_complex gsl_complex_sech (gsl_complex a);  /* r=sech(a) */
++gsl_complex gsl_complex_csch (gsl_complex a);  /* r=csch(a) */
++gsl_complex gsl_complex_tanh (gsl_complex a);  /* r=tanh(a) */
++gsl_complex gsl_complex_coth (gsl_complex a);  /* r=coth(a) */
++
++/* Inverse Complex Hyperbolic Functions */
++
++gsl_complex gsl_complex_arcsinh (gsl_complex a);  /* r=arcsinh(a) */
++gsl_complex gsl_complex_arccosh (gsl_complex a);  /* r=arccosh(a) */
++gsl_complex gsl_complex_arccosh_real (double a);  /* r=arccosh(a) */
++gsl_complex gsl_complex_arcsech (gsl_complex a);  /* r=arcsech(a) */
++gsl_complex gsl_complex_arccsch (gsl_complex a);  /* r=arccsch(a) */
++gsl_complex gsl_complex_arctanh (gsl_complex a);  /* r=arctanh(a) */
++gsl_complex gsl_complex_arctanh_real (double a);  /* r=arctanh(a) */
++gsl_complex gsl_complex_arccoth (gsl_complex a);  /* r=arccoth(a) */
++
++__END_DECLS
++
++#endif /* __GSL_COMPLEX_MATH_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_synchrotron.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_synchrotron.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_synchrotron.h	(revision 14078)
+@@ -0,0 +1,60 @@
++/* specfunc/gsl_sf_synchrotron.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++/* Author:  G. Jungman */
++
++#ifndef __GSL_SF_SYNCHROTRON_H__
++#define __GSL_SF_SYNCHROTRON_H__
++
++#include <gsl/gsl_sf_result.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++
++/* First synchrotron function:
++ *   synchrotron_1(x) = x Integral[ K_{5/3}(t), {t, x, Infinity}]
++ *
++ * exceptions: GSL_EDOM, GSL_EUNDRFLW
++ */
++int     gsl_sf_synchrotron_1_e(const double x, gsl_sf_result * result);
++double     gsl_sf_synchrotron_1(const double x);
++
++
++/* Second synchroton function:
++ *   synchrotron_2(x) = x * K_{2/3}(x)
++ *
++ * exceptions: GSL_EDOM, GSL_EUNDRFLW
++ */
++int     gsl_sf_synchrotron_2_e(const double x, gsl_sf_result * result);
++double     gsl_sf_synchrotron_2(const double x);
++
++
++__END_DECLS
++
++#endif /* __GSL_SF_SYNCHROTRON_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute.h	(revision 14078)
+@@ -0,0 +1,24 @@
++#ifndef __GSL_PERMUTE_H__
++#define __GSL_PERMUTE_H__
++
++#include <gsl/gsl_permute_complex_long_double.h>
++#include <gsl/gsl_permute_complex_double.h>
++#include <gsl/gsl_permute_complex_float.h>
++
++#include <gsl/gsl_permute_long_double.h>
++#include <gsl/gsl_permute_double.h>
++#include <gsl/gsl_permute_float.h>
++
++#include <gsl/gsl_permute_ulong.h>
++#include <gsl/gsl_permute_long.h>
++
++#include <gsl/gsl_permute_uint.h>
++#include <gsl/gsl_permute_int.h>
++
++#include <gsl/gsl_permute_ushort.h>
++#include <gsl/gsl_permute_short.h>
++
++#include <gsl/gsl_permute_uchar.h>
++#include <gsl/gsl_permute_char.h>
++
++#endif /* __GSL_PERMUTE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_long.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_long.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_long.h	(revision 14078)
+@@ -0,0 +1,230 @@
++/* vector/gsl_vector_long.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_VECTOR_LONG_H__
++#define __GSL_VECTOR_LONG_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_types.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_inline.h>
++#include <gsl/gsl_check_range.h>
++#include <gsl/gsl_block_long.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++typedef struct 
++{
++  size_t size;
++  size_t stride;
++  long *data;
++  gsl_block_long *block;
++  int owner;
++} 
++gsl_vector_long;
++
++typedef struct
++{
++  gsl_vector_long vector;
++} _gsl_vector_long_view;
++
++typedef _gsl_vector_long_view gsl_vector_long_view;
++
++typedef struct
++{
++  gsl_vector_long vector;
++} _gsl_vector_long_const_view;
++
++typedef const _gsl_vector_long_const_view gsl_vector_long_const_view;
++
++
++/* Allocation */
++
++gsl_vector_long *gsl_vector_long_alloc (const size_t n);
++gsl_vector_long *gsl_vector_long_calloc (const size_t n);
++
++gsl_vector_long *gsl_vector_long_alloc_from_block (gsl_block_long * b,
++                                                     const size_t offset, 
++                                                     const size_t n, 
++                                                     const size_t stride);
++
++gsl_vector_long *gsl_vector_long_alloc_from_vector (gsl_vector_long * v,
++                                                      const size_t offset, 
++                                                      const size_t n, 
++                                                      const size_t stride);
++
++void gsl_vector_long_free (gsl_vector_long * v);
++
++/* Views */
++
++_gsl_vector_long_view 
++gsl_vector_long_view_array (long *v, size_t n);
++
++_gsl_vector_long_view 
++gsl_vector_long_view_array_with_stride (long *base,
++                                         size_t stride,
++                                         size_t n);
++
++_gsl_vector_long_const_view 
++gsl_vector_long_const_view_array (const long *v, size_t n);
++
++_gsl_vector_long_const_view 
++gsl_vector_long_const_view_array_with_stride (const long *base,
++                                               size_t stride,
++                                               size_t n);
++
++_gsl_vector_long_view 
++gsl_vector_long_subvector (gsl_vector_long *v, 
++                            size_t i, 
++                            size_t n);
++
++_gsl_vector_long_view 
++gsl_vector_long_subvector_with_stride (gsl_vector_long *v, 
++                                        size_t i,
++                                        size_t stride,
++                                        size_t n);
++
++_gsl_vector_long_const_view 
++gsl_vector_long_const_subvector (const gsl_vector_long *v, 
++                                  size_t i, 
++                                  size_t n);
++
++_gsl_vector_long_const_view 
++gsl_vector_long_const_subvector_with_stride (const gsl_vector_long *v, 
++                                              size_t i, 
++                                              size_t stride,
++                                              size_t n);
++
++/* Operations */
++
++void gsl_vector_long_set_zero (gsl_vector_long * v);
++void gsl_vector_long_set_all (gsl_vector_long * v, long x);
++int gsl_vector_long_set_basis (gsl_vector_long * v, size_t i);
++
++int gsl_vector_long_fread (FILE * stream, gsl_vector_long * v);
++int gsl_vector_long_fwrite (FILE * stream, const gsl_vector_long * v);
++int gsl_vector_long_fscanf (FILE * stream, gsl_vector_long * v);
++int gsl_vector_long_fprintf (FILE * stream, const gsl_vector_long * v,
++                              const char *format);
++
++int gsl_vector_long_memcpy (gsl_vector_long * dest, const gsl_vector_long * src);
++
++int gsl_vector_long_reverse (gsl_vector_long * v);
++
++int gsl_vector_long_swap (gsl_vector_long * v, gsl_vector_long * w);
++int gsl_vector_long_swap_elements (gsl_vector_long * v, const size_t i, const size_t j);
++
++long gsl_vector_long_max (const gsl_vector_long * v);
++long gsl_vector_long_min (const gsl_vector_long * v);
++void gsl_vector_long_minmax (const gsl_vector_long * v, long * min_out, long * max_out);
++
++size_t gsl_vector_long_max_index (const gsl_vector_long * v);
++size_t gsl_vector_long_min_index (const gsl_vector_long * v);
++void gsl_vector_long_minmax_index (const gsl_vector_long * v, size_t * imin, size_t * imax);
++
++int gsl_vector_long_add (gsl_vector_long * a, const gsl_vector_long * b);
++int gsl_vector_long_sub (gsl_vector_long * a, const gsl_vector_long * b);
++int gsl_vector_long_mul (gsl_vector_long * a, const gsl_vector_long * b);
++int gsl_vector_long_div (gsl_vector_long * a, const gsl_vector_long * b);
++int gsl_vector_long_scale (gsl_vector_long * a, const double x);
++int gsl_vector_long_add_constant (gsl_vector_long * a, const double x);
++
++int gsl_vector_long_equal (const gsl_vector_long * u, 
++                            const gsl_vector_long * v);
++
++int gsl_vector_long_isnull (const gsl_vector_long * v);
++int gsl_vector_long_ispos (const gsl_vector_long * v);
++int gsl_vector_long_isneg (const gsl_vector_long * v);
++int gsl_vector_long_isnonneg (const gsl_vector_long * v);
++
++INLINE_DECL long gsl_vector_long_get (const gsl_vector_long * v, const size_t i);
++INLINE_DECL void gsl_vector_long_set (gsl_vector_long * v, const size_t i, long x);
++INLINE_DECL long * gsl_vector_long_ptr (gsl_vector_long * v, const size_t i);
++INLINE_DECL const long * gsl_vector_long_const_ptr (const gsl_vector_long * v, const size_t i);
++
++#ifdef HAVE_INLINE
++
++INLINE_FUN
++long
++gsl_vector_long_get (const gsl_vector_long * v, const size_t i)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(i >= v->size))
++    {
++      GSL_ERROR_VAL ("index out of range", GSL_EINVAL, 0);
++    }
++#endif
++  return v->data[i * v->stride];
++}
++
++INLINE_FUN
++void
++gsl_vector_long_set (gsl_vector_long * v, const size_t i, long x)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(i >= v->size))
++    {
++      GSL_ERROR_VOID ("index out of range", GSL_EINVAL);
++    }
++#endif
++  v->data[i * v->stride] = x;
++}
++
++INLINE_FUN
++long *
++gsl_vector_long_ptr (gsl_vector_long * v, const size_t i)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(i >= v->size))
++    {
++      GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
++    }
++#endif
++  return (long *) (v->data + i * v->stride);
++}
++
++INLINE_FUN
++const long *
++gsl_vector_long_const_ptr (const gsl_vector_long * v, const size_t i)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(i >= v->size))
++    {
++      GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
++    }
++#endif
++  return (const long *) (v->data + i * v->stride);
++}
++#endif /* HAVE_INLINE */
++
++__END_DECLS
++
++#endif /* __GSL_VECTOR_LONG_H__ */
++
++
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_short.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_short.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_short.h	(revision 14078)
+@@ -0,0 +1,45 @@
++/* permutation/gsl_permute_vector_short.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_PERMUTE_VECTOR_SHORT_H__
++#define __GSL_PERMUTE_VECTOR_SHORT_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_permutation.h>
++#include <gsl/gsl_vector_short.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++int gsl_permute_vector_short (const gsl_permutation * p, gsl_vector_short * v);
++int gsl_permute_vector_short_inverse (const gsl_permutation * p, gsl_vector_short * v);
++
++__END_DECLS
++
++#endif /* __GSL_PERMUTE_VECTOR_SHORT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_long.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_long.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_long.h	(revision 14078)
+@@ -0,0 +1,45 @@
++/* permutation/gsl_permute_vector_long.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_PERMUTE_VECTOR_LONG_H__
++#define __GSL_PERMUTE_VECTOR_LONG_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_permutation.h>
++#include <gsl/gsl_vector_long.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++int gsl_permute_vector_long (const gsl_permutation * p, gsl_vector_long * v);
++int gsl_permute_vector_long_inverse (const gsl_permutation * p, gsl_vector_long * v);
++
++__END_DECLS
++
++#endif /* __GSL_PERMUTE_VECTOR_LONG_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_ushort.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_ushort.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_ushort.h	(revision 14078)
+@@ -0,0 +1,44 @@
++/* permutation/gsl_permute_ushort.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_PERMUTE_USHORT_H__
++#define __GSL_PERMUTE_USHORT_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_permutation.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++int gsl_permute_ushort (const size_t * p, unsigned short * data, const size_t stride, const size_t n);
++int gsl_permute_ushort_inverse (const size_t * p, unsigned short * data, const size_t stride, const size_t n);
++
++__END_DECLS
++
++#endif /* __GSL_PERMUTE_USHORT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_complex_double.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_complex_double.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_complex_double.h	(revision 14078)
+@@ -0,0 +1,351 @@
++/* matrix/gsl_matrix_complex_double.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_MATRIX_COMPLEX_DOUBLE_H__
++#define __GSL_MATRIX_COMPLEX_DOUBLE_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_types.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_complex.h>
++#include <gsl/gsl_check_range.h>
++#include <gsl/gsl_vector_complex_double.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++typedef struct 
++{
++  size_t size1;
++  size_t size2;
++  size_t tda;
++  double * data;
++  gsl_block_complex * block;
++  int owner;
++} gsl_matrix_complex ;
++
++typedef struct
++{
++  gsl_matrix_complex matrix;
++} _gsl_matrix_complex_view;
++
++typedef _gsl_matrix_complex_view gsl_matrix_complex_view;
++
++typedef struct
++{
++  gsl_matrix_complex matrix;
++} _gsl_matrix_complex_const_view;
++
++typedef const _gsl_matrix_complex_const_view gsl_matrix_complex_const_view;
++
++
++/* Allocation */
++
++gsl_matrix_complex * 
++gsl_matrix_complex_alloc (const size_t n1, const size_t n2);
++
++gsl_matrix_complex * 
++gsl_matrix_complex_calloc (const size_t n1, const size_t n2);
++
++gsl_matrix_complex * 
++gsl_matrix_complex_alloc_from_block (gsl_block_complex * b, 
++                                           const size_t offset, 
++                                           const size_t n1, const size_t n2, const size_t d2);
++
++gsl_matrix_complex * 
++gsl_matrix_complex_alloc_from_matrix (gsl_matrix_complex * b,
++                                            const size_t k1, const size_t k2,
++                                            const size_t n1, const size_t n2);
++
++gsl_vector_complex * 
++gsl_vector_complex_alloc_row_from_matrix (gsl_matrix_complex * m,
++                                                const size_t i);
++
++gsl_vector_complex * 
++gsl_vector_complex_alloc_col_from_matrix (gsl_matrix_complex * m,
++                                                const size_t j);
++
++void gsl_matrix_complex_free (gsl_matrix_complex * m);
++
++/* Views */
++
++_gsl_matrix_complex_view 
++gsl_matrix_complex_submatrix (gsl_matrix_complex * m, 
++                            const size_t i, const size_t j, 
++                            const size_t n1, const size_t n2);
++
++_gsl_vector_complex_view 
++gsl_matrix_complex_row (gsl_matrix_complex * m, const size_t i);
++
++_gsl_vector_complex_view 
++gsl_matrix_complex_column (gsl_matrix_complex * m, const size_t j);
++
++_gsl_vector_complex_view 
++gsl_matrix_complex_diagonal (gsl_matrix_complex * m);
++
++_gsl_vector_complex_view 
++gsl_matrix_complex_subdiagonal (gsl_matrix_complex * m, const size_t k);
++
++_gsl_vector_complex_view 
++gsl_matrix_complex_superdiagonal (gsl_matrix_complex * m, const size_t k);
++
++_gsl_vector_complex_view
++gsl_matrix_complex_subrow (gsl_matrix_complex * m,
++                                 const size_t i, const size_t offset,
++                                 const size_t n);
++
++_gsl_vector_complex_view
++gsl_matrix_complex_subcolumn (gsl_matrix_complex * m,
++                                    const size_t j, const size_t offset,
++                                    const size_t n);
++
++_gsl_matrix_complex_view
++gsl_matrix_complex_view_array (double * base,
++                             const size_t n1, 
++                             const size_t n2);
++
++_gsl_matrix_complex_view
++gsl_matrix_complex_view_array_with_tda (double * base, 
++                                      const size_t n1, 
++                                      const size_t n2,
++                                      const size_t tda);
++
++_gsl_matrix_complex_view
++gsl_matrix_complex_view_vector (gsl_vector_complex * v,
++                              const size_t n1, 
++                              const size_t n2);
++
++_gsl_matrix_complex_view
++gsl_matrix_complex_view_vector_with_tda (gsl_vector_complex * v,
++                                       const size_t n1, 
++                                       const size_t n2,
++                                       const size_t tda);
++
++
++_gsl_matrix_complex_const_view 
++gsl_matrix_complex_const_submatrix (const gsl_matrix_complex * m, 
++                                  const size_t i, const size_t j, 
++                                  const size_t n1, const size_t n2);
++
++_gsl_vector_complex_const_view 
++gsl_matrix_complex_const_row (const gsl_matrix_complex * m, 
++                            const size_t i);
++
++_gsl_vector_complex_const_view 
++gsl_matrix_complex_const_column (const gsl_matrix_complex * m, 
++                               const size_t j);
++
++_gsl_vector_complex_const_view
++gsl_matrix_complex_const_diagonal (const gsl_matrix_complex * m);
++
++_gsl_vector_complex_const_view 
++gsl_matrix_complex_const_subdiagonal (const gsl_matrix_complex * m, 
++                                    const size_t k);
++
++_gsl_vector_complex_const_view 
++gsl_matrix_complex_const_superdiagonal (const gsl_matrix_complex * m, 
++                                      const size_t k);
++
++_gsl_vector_complex_const_view
++gsl_matrix_complex_const_subrow (const gsl_matrix_complex * m,
++                                       const size_t i, const size_t offset,
++                                       const size_t n);
++
++_gsl_vector_complex_const_view
++gsl_matrix_complex_const_subcolumn (const gsl_matrix_complex * m,
++                                          const size_t j, const size_t offset,
++                                          const size_t n);
++
++_gsl_matrix_complex_const_view
++gsl_matrix_complex_const_view_array (const double * base,
++                                   const size_t n1, 
++                                   const size_t n2);
++
++_gsl_matrix_complex_const_view
++gsl_matrix_complex_const_view_array_with_tda (const double * base, 
++                                            const size_t n1, 
++                                            const size_t n2,
++                                            const size_t tda);
++
++_gsl_matrix_complex_const_view
++gsl_matrix_complex_const_view_vector (const gsl_vector_complex * v,
++                                    const size_t n1, 
++                                    const size_t n2);
++
++_gsl_matrix_complex_const_view
++gsl_matrix_complex_const_view_vector_with_tda (const gsl_vector_complex * v,
++                                             const size_t n1, 
++                                             const size_t n2,
++                                             const size_t tda);
++
++/* Operations */
++
++void gsl_matrix_complex_set_zero (gsl_matrix_complex * m);
++void gsl_matrix_complex_set_identity (gsl_matrix_complex * m);
++void gsl_matrix_complex_set_all (gsl_matrix_complex * m, gsl_complex x);
++
++int gsl_matrix_complex_fread (FILE * stream, gsl_matrix_complex * m) ;
++int gsl_matrix_complex_fwrite (FILE * stream, const gsl_matrix_complex * m) ;
++int gsl_matrix_complex_fscanf (FILE * stream, gsl_matrix_complex * m);
++int gsl_matrix_complex_fprintf (FILE * stream, const gsl_matrix_complex * m, const char * format);
++
++int gsl_matrix_complex_memcpy(gsl_matrix_complex * dest, const gsl_matrix_complex * src);
++int gsl_matrix_complex_swap(gsl_matrix_complex * m1, gsl_matrix_complex * m2);
++
++int gsl_matrix_complex_swap_rows(gsl_matrix_complex * m, const size_t i, const size_t j);
++int gsl_matrix_complex_swap_columns(gsl_matrix_complex * m, const size_t i, const size_t j);
++int gsl_matrix_complex_swap_rowcol(gsl_matrix_complex * m, const size_t i, const size_t j);
++
++int gsl_matrix_complex_transpose (gsl_matrix_complex * m);
++int gsl_matrix_complex_transpose_memcpy (gsl_matrix_complex * dest, const gsl_matrix_complex * src);
++
++int gsl_matrix_complex_equal (const gsl_matrix_complex * a, const gsl_matrix_complex * b);
++
++int gsl_matrix_complex_isnull (const gsl_matrix_complex * m);
++int gsl_matrix_complex_ispos (const gsl_matrix_complex * m);
++int gsl_matrix_complex_isneg (const gsl_matrix_complex * m);
++int gsl_matrix_complex_isnonneg (const gsl_matrix_complex * m);
++
++int gsl_matrix_complex_add (gsl_matrix_complex * a, const gsl_matrix_complex * b);
++int gsl_matrix_complex_sub (gsl_matrix_complex * a, const gsl_matrix_complex * b);
++int gsl_matrix_complex_mul_elements (gsl_matrix_complex * a, const gsl_matrix_complex * b);
++int gsl_matrix_complex_div_elements (gsl_matrix_complex * a, const gsl_matrix_complex * b);
++int gsl_matrix_complex_scale (gsl_matrix_complex * a, const gsl_complex x);
++int gsl_matrix_complex_add_constant (gsl_matrix_complex * a, const gsl_complex x);
++int gsl_matrix_complex_add_diagonal (gsl_matrix_complex * a, const gsl_complex x);
++
++/***********************************************************************/
++/* The functions below are obsolete                                    */
++/***********************************************************************/
++int gsl_matrix_complex_get_row(gsl_vector_complex * v, const gsl_matrix_complex * m, const size_t i);
++int gsl_matrix_complex_get_col(gsl_vector_complex * v, const gsl_matrix_complex * m, const size_t j);
++int gsl_matrix_complex_set_row(gsl_matrix_complex * m, const size_t i, const gsl_vector_complex * v);
++int gsl_matrix_complex_set_col(gsl_matrix_complex * m, const size_t j, const gsl_vector_complex * v);
++/***********************************************************************/
++
++/* inline functions if you are using GCC */
++
++INLINE_DECL gsl_complex gsl_matrix_complex_get(const gsl_matrix_complex * m, const size_t i, const size_t j);
++INLINE_DECL void gsl_matrix_complex_set(gsl_matrix_complex * m, const size_t i, const size_t j, const gsl_complex x);
++
++INLINE_DECL gsl_complex * gsl_matrix_complex_ptr(gsl_matrix_complex * m, const size_t i, const size_t j);
++INLINE_DECL const gsl_complex * gsl_matrix_complex_const_ptr(const gsl_matrix_complex * m, const size_t i, const size_t j);
++
++#ifdef HAVE_INLINE
++
++INLINE_FUN 
++gsl_complex
++gsl_matrix_complex_get(const gsl_matrix_complex * m, 
++                     const size_t i, const size_t j)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(1)) 
++    {
++      gsl_complex zero = {{0,0}};
++
++      if (i >= m->size1)
++        {
++          GSL_ERROR_VAL("first index out of range", GSL_EINVAL, zero) ;
++        }
++      else if (j >= m->size2)
++        {
++          GSL_ERROR_VAL("second index out of range", GSL_EINVAL, zero) ;
++        }
++    }
++#endif
++  return *(gsl_complex *)(m->data + 2*(i * m->tda + j)) ;
++} 
++
++INLINE_FUN 
++void
++gsl_matrix_complex_set(gsl_matrix_complex * m, 
++                     const size_t i, const size_t j, const gsl_complex x)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(1)) 
++    {
++      if (i >= m->size1)
++        {
++          GSL_ERROR_VOID("first index out of range", GSL_EINVAL) ;
++        }
++      else if (j >= m->size2)
++        {
++          GSL_ERROR_VOID("second index out of range", GSL_EINVAL) ;
++        }
++    }
++#endif
++  *(gsl_complex *)(m->data + 2*(i * m->tda + j)) = x ;
++}
++
++INLINE_FUN 
++gsl_complex *
++gsl_matrix_complex_ptr(gsl_matrix_complex * m, 
++                             const size_t i, const size_t j)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(1)) 
++    {
++      if (i >= m->size1)
++        {
++          GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
++        }
++      else if (j >= m->size2)
++        {
++          GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
++        }
++    }
++#endif
++  return (gsl_complex *)(m->data + 2*(i * m->tda + j)) ;
++} 
++
++INLINE_FUN 
++const gsl_complex *
++gsl_matrix_complex_const_ptr(const gsl_matrix_complex * m, 
++                                   const size_t i, const size_t j)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(1)) 
++    {
++      if (i >= m->size1)
++        {
++          GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
++        }
++      else if (j >= m->size2)
++        {
++          GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
++        }
++    }
++#endif
++  return (const gsl_complex *)(m->data + 2*(i * m->tda + j)) ;
++} 
++
++#endif /* HAVE_INLINE */
++
++__END_DECLS
++
++#endif /* __GSL_MATRIX_COMPLEX_DOUBLE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_hyperg.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_hyperg.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_hyperg.h	(revision 14078)
+@@ -0,0 +1,154 @@
++/* specfunc/gsl_sf_hyperg.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++/* Author:  G. Jungman */
++
++#ifndef __GSL_SF_HYPERG_H__
++#define __GSL_SF_HYPERG_H__
++
++#include <gsl/gsl_sf_result.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++
++/* Hypergeometric function related to Bessel functions
++ * 0F1[c,x] =
++ *            Gamma[c]    x^(1/2(1-c)) I_{c-1}(2 Sqrt[x])
++ *            Gamma[c] (-x)^(1/2(1-c)) J_{c-1}(2 Sqrt[-x])
++ *
++ * exceptions: GSL_EOVRFLW, GSL_EUNDRFLW
++ */
++int gsl_sf_hyperg_0F1_e(double c, double x, gsl_sf_result * result);
++double gsl_sf_hyperg_0F1(const double c, const double x);
++
++
++/* Confluent hypergeometric function  for integer parameters.
++ * 1F1[m,n,x] = M(m,n,x)
++ *
++ * exceptions: 
++ */
++int gsl_sf_hyperg_1F1_int_e(const int m, const int n, const double x, gsl_sf_result * result);
++double gsl_sf_hyperg_1F1_int(const int m, const int n, double x);
++
++
++/* Confluent hypergeometric function.
++ * 1F1[a,b,x] = M(a,b,x)
++ *
++ * exceptions:
++ */
++int gsl_sf_hyperg_1F1_e(const double a, const double b, const double x, gsl_sf_result * result);
++double gsl_sf_hyperg_1F1(double a, double b, double x);
++
++
++/* Confluent hypergeometric function for integer parameters.
++ * U(m,n,x)
++ *
++ * exceptions:
++ */
++int gsl_sf_hyperg_U_int_e(const int m, const int n, const double x, gsl_sf_result * result);
++double gsl_sf_hyperg_U_int(const int m, const int n, const double x);
++
++
++/* Confluent hypergeometric function for integer parameters.
++ * U(m,n,x)
++ *
++ * exceptions:
++ */
++int gsl_sf_hyperg_U_int_e10_e(const int m, const int n, const double x, gsl_sf_result_e10 * result);
++
++
++/* Confluent hypergeometric function.
++ * U(a,b,x)
++ *
++ * exceptions:
++ */
++int gsl_sf_hyperg_U_e(const double a, const double b, const double x, gsl_sf_result * result);
++double gsl_sf_hyperg_U(const double a, const double b, const double x);
++
++
++/* Confluent hypergeometric function.
++ * U(a,b,x)
++ *
++ * exceptions:
++ */
++int gsl_sf_hyperg_U_e10_e(const double a, const double b, const double x, gsl_sf_result_e10 * result);
++
++
++/* Gauss hypergeometric function 2F1[a,b,c,x]
++ * |x| < 1
++ *
++ * exceptions:
++ */
++int gsl_sf_hyperg_2F1_e(double a, double b, const double c, const double x, gsl_sf_result * result);
++double gsl_sf_hyperg_2F1(double a, double b, double c, double x);
++
++
++/* Gauss hypergeometric function
++ * 2F1[aR + I aI, aR - I aI, c, x]
++ * |x| < 1
++ *
++ * exceptions:
++ */
++int gsl_sf_hyperg_2F1_conj_e(const double aR, const double aI, const double c, const double x, gsl_sf_result * result);
++double gsl_sf_hyperg_2F1_conj(double aR, double aI, double c, double x);
++
++
++/* Renormalized Gauss hypergeometric function
++ * 2F1[a,b,c,x] / Gamma[c]
++ * |x| < 1
++ *
++ * exceptions:
++ */
++int gsl_sf_hyperg_2F1_renorm_e(const double a, const double b, const double c, const double x, gsl_sf_result * result);
++double gsl_sf_hyperg_2F1_renorm(double a, double b, double c, double x);
++
++
++/* Renormalized Gauss hypergeometric function
++ * 2F1[aR + I aI, aR - I aI, c, x] / Gamma[c]
++ * |x| < 1
++ *
++ * exceptions:
++ */
++int gsl_sf_hyperg_2F1_conj_renorm_e(const double aR, const double aI, const double c, const double x, gsl_sf_result * result);
++double gsl_sf_hyperg_2F1_conj_renorm(double aR, double aI, double c, double x);
++
++
++/* Mysterious hypergeometric function. The series representation
++ * is a divergent hypergeometric series. However, for x < 0 we
++ * have 2F0(a,b,x) = (-1/x)^a U(a,1+a-b,-1/x)
++ *
++ * exceptions: GSL_EDOM
++ */
++int     gsl_sf_hyperg_2F0_e(const double a, const double b, const double x, gsl_sf_result * result);
++double     gsl_sf_hyperg_2F0(const double a, const double b, const double x);
++
++
++__END_DECLS
++
++#endif /* __GSL_SF_HYPERG_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_ushort.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_ushort.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_ushort.h	(revision 14078)
+@@ -0,0 +1,50 @@
++/* sort/gsl_sort_ushort.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_SORT_USHORT_H__
++#define __GSL_SORT_USHORT_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_permutation.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++void gsl_sort_ushort (unsigned short * data, const size_t stride, const size_t n);
++void gsl_sort_ushort_index (size_t * p, const unsigned short * data, const size_t stride, const size_t n);
++
++int gsl_sort_ushort_smallest (unsigned short * dest, const size_t k, const unsigned short * src, const size_t stride, const size_t n);
++int gsl_sort_ushort_smallest_index (size_t * p, const size_t k, const unsigned short * src, const size_t stride, const size_t n);
++
++int gsl_sort_ushort_largest (unsigned short * dest, const size_t k, const unsigned short * src, const size_t stride, const size_t n);
++int gsl_sort_ushort_largest_index (size_t * p, const size_t k, const unsigned short * src, const size_t stride, const size_t n);
++
++__END_DECLS
++
++#endif /* __GSL_SORT_USHORT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_ushort.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_ushort.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_ushort.h	(revision 14078)
+@@ -0,0 +1,79 @@
++/* statistics/gsl_statistics_ushort.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_STATISTICS_USHORT_H__
++#define __GSL_STATISTICS_USHORT_H__
++
++#include <stddef.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++double gsl_stats_ushort_mean (const unsigned short data[], const size_t stride, const size_t n);
++double gsl_stats_ushort_variance (const unsigned short data[], const size_t stride, const size_t n);
++double gsl_stats_ushort_sd (const unsigned short data[], const size_t stride, const size_t n);
++double gsl_stats_ushort_variance_with_fixed_mean (const unsigned short data[], const size_t stride, const size_t n, const double mean);
++double gsl_stats_ushort_sd_with_fixed_mean (const unsigned short data[], const size_t stride, const size_t n, const double mean);
++double gsl_stats_ushort_tss (const unsigned short data[], const size_t stride, const size_t n);
++double gsl_stats_ushort_tss_m (const unsigned short data[], const size_t stride, const size_t n, const double mean);
++
++double gsl_stats_ushort_absdev (const unsigned short data[], const size_t stride, const size_t n);
++double gsl_stats_ushort_skew (const unsigned short data[], const size_t stride, const size_t n);
++double gsl_stats_ushort_kurtosis (const unsigned short data[], const size_t stride, const size_t n);
++double gsl_stats_ushort_lag1_autocorrelation (const unsigned short data[], const size_t stride, const size_t n);
++
++double gsl_stats_ushort_covariance (const unsigned short data1[], const size_t stride1,const unsigned short data2[], const size_t stride2, const size_t n);
++double gsl_stats_ushort_correlation (const unsigned short data1[], const size_t stride1,const unsigned short data2[], const size_t stride2, const size_t n);
++
++double gsl_stats_ushort_variance_m (const unsigned short data[], const size_t stride, const size_t n, const double mean);
++double gsl_stats_ushort_sd_m (const unsigned short data[], const size_t stride, const size_t n, const double mean);
++double gsl_stats_ushort_absdev_m (const unsigned short data[], const size_t stride, const size_t n, const double mean);
++double gsl_stats_ushort_skew_m_sd (const unsigned short data[], const size_t stride, const size_t n, const double mean, const double sd);
++double gsl_stats_ushort_kurtosis_m_sd (const unsigned short data[], const size_t stride, const size_t n, const double mean, const double sd);
++double gsl_stats_ushort_lag1_autocorrelation_m (const unsigned short data[], const size_t stride, const size_t n, const double mean);
++
++double gsl_stats_ushort_covariance_m (const unsigned short data1[], const size_t stride1,const unsigned short data2[], const size_t stride2, const size_t n, const double mean1, const double mean2);
++
++
++double gsl_stats_ushort_pvariance (const unsigned short data1[], const size_t stride1, const size_t n1, const unsigned short data2[], const size_t stride2, const size_t n2);
++double gsl_stats_ushort_ttest (const unsigned short data1[], const size_t stride1, const size_t n1, const unsigned short data2[], const size_t stride2, const size_t n2);
++
++unsigned short gsl_stats_ushort_max (const unsigned short data[], const size_t stride, const size_t n);
++unsigned short gsl_stats_ushort_min (const unsigned short data[], const size_t stride, const size_t n);
++void gsl_stats_ushort_minmax (unsigned short * min, unsigned short * max, const unsigned short data[], const size_t stride, const size_t n);
++
++size_t gsl_stats_ushort_max_index (const unsigned short data[], const size_t stride, const size_t n);
++size_t gsl_stats_ushort_min_index (const unsigned short data[], const size_t stride, const size_t n);
++void gsl_stats_ushort_minmax_index (size_t * min_index, size_t * max_index, const unsigned short data[], const size_t stride, const size_t n);
++
++double gsl_stats_ushort_median_from_sorted_data (const unsigned short sorted_data[], const size_t stride, const size_t n) ;
++double gsl_stats_ushort_quantile_from_sorted_data (const unsigned short sorted_data[], const size_t stride, const size_t n, const double f) ;
++
++__END_DECLS
++
++#endif /* __GSL_STATISTICS_USHORT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_int.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_int.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_int.h	(revision 14078)
+@@ -0,0 +1,50 @@
++/* sort/gsl_sort_int.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_SORT_INT_H__
++#define __GSL_SORT_INT_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_permutation.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++void gsl_sort_int (int * data, const size_t stride, const size_t n);
++void gsl_sort_int_index (size_t * p, const int * data, const size_t stride, const size_t n);
++
++int gsl_sort_int_smallest (int * dest, const size_t k, const int * src, const size_t stride, const size_t n);
++int gsl_sort_int_smallest_index (size_t * p, const size_t k, const int * src, const size_t stride, const size_t n);
++
++int gsl_sort_int_largest (int * dest, const size_t k, const int * src, const size_t stride, const size_t n);
++int gsl_sort_int_largest_index (size_t * p, const size_t k, const int * src, const size_t stride, const size_t n);
++
++__END_DECLS
++
++#endif /* __GSL_SORT_INT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_complex_long_double.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_complex_long_double.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_complex_long_double.h	(revision 14078)
+@@ -0,0 +1,251 @@
++/* vector/gsl_vector_complex_long_double.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_VECTOR_COMPLEX_LONG_DOUBLE_H__
++#define __GSL_VECTOR_COMPLEX_LONG_DOUBLE_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_types.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_complex.h>
++#include <gsl/gsl_check_range.h>
++#include <gsl/gsl_vector_long_double.h>
++#include <gsl/gsl_vector_complex.h>
++#include <gsl/gsl_block_complex_long_double.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++typedef struct 
++{
++  size_t size;
++  size_t stride;
++  long double *data;
++  gsl_block_complex_long_double *block;
++  int owner;
++} gsl_vector_complex_long_double;
++
++typedef struct
++{
++  gsl_vector_complex_long_double vector;
++} _gsl_vector_complex_long_double_view;
++
++typedef _gsl_vector_complex_long_double_view gsl_vector_complex_long_double_view;
++
++typedef struct
++{
++  gsl_vector_complex_long_double vector;
++} _gsl_vector_complex_long_double_const_view;
++
++typedef const _gsl_vector_complex_long_double_const_view gsl_vector_complex_long_double_const_view;
++
++/* Allocation */
++
++gsl_vector_complex_long_double *gsl_vector_complex_long_double_alloc (const size_t n);
++gsl_vector_complex_long_double *gsl_vector_complex_long_double_calloc (const size_t n);
++
++gsl_vector_complex_long_double *
++gsl_vector_complex_long_double_alloc_from_block (gsl_block_complex_long_double * b, 
++                                           const size_t offset, 
++                                           const size_t n, 
++                                           const size_t stride);
++
++gsl_vector_complex_long_double *
++gsl_vector_complex_long_double_alloc_from_vector (gsl_vector_complex_long_double * v, 
++                                             const size_t offset, 
++                                             const size_t n, 
++                                             const size_t stride);
++
++void gsl_vector_complex_long_double_free (gsl_vector_complex_long_double * v);
++
++/* Views */
++
++_gsl_vector_complex_long_double_view
++gsl_vector_complex_long_double_view_array (long double *base,
++                                     size_t n);
++
++_gsl_vector_complex_long_double_view
++gsl_vector_complex_long_double_view_array_with_stride (long double *base,
++                                                 size_t stride,
++                                                 size_t n);
++
++_gsl_vector_complex_long_double_const_view
++gsl_vector_complex_long_double_const_view_array (const long double *base,
++                                           size_t n);
++
++_gsl_vector_complex_long_double_const_view
++gsl_vector_complex_long_double_const_view_array_with_stride (const long double *base,
++                                                       size_t stride,
++                                                       size_t n);
++
++_gsl_vector_complex_long_double_view
++gsl_vector_complex_long_double_subvector (gsl_vector_complex_long_double *base,
++                                         size_t i, 
++                                         size_t n);
++
++
++_gsl_vector_complex_long_double_view 
++gsl_vector_complex_long_double_subvector_with_stride (gsl_vector_complex_long_double *v, 
++                                                size_t i, 
++                                                size_t stride, 
++                                                size_t n);
++
++_gsl_vector_complex_long_double_const_view
++gsl_vector_complex_long_double_const_subvector (const gsl_vector_complex_long_double *base,
++                                               size_t i, 
++                                               size_t n);
++
++
++_gsl_vector_complex_long_double_const_view 
++gsl_vector_complex_long_double_const_subvector_with_stride (const gsl_vector_complex_long_double *v, 
++                                                      size_t i, 
++                                                      size_t stride, 
++                                                      size_t n);
++
++_gsl_vector_long_double_view
++gsl_vector_complex_long_double_real (gsl_vector_complex_long_double *v);
++
++_gsl_vector_long_double_view 
++gsl_vector_complex_long_double_imag (gsl_vector_complex_long_double *v);
++
++_gsl_vector_long_double_const_view
++gsl_vector_complex_long_double_const_real (const gsl_vector_complex_long_double *v);
++
++_gsl_vector_long_double_const_view 
++gsl_vector_complex_long_double_const_imag (const gsl_vector_complex_long_double *v);
++
++
++/* Operations */
++
++void gsl_vector_complex_long_double_set_zero (gsl_vector_complex_long_double * v);
++void gsl_vector_complex_long_double_set_all (gsl_vector_complex_long_double * v,
++                                       gsl_complex_long_double z);
++int gsl_vector_complex_long_double_set_basis (gsl_vector_complex_long_double * v, size_t i);
++
++int gsl_vector_complex_long_double_fread (FILE * stream,
++                                    gsl_vector_complex_long_double * v);
++int gsl_vector_complex_long_double_fwrite (FILE * stream,
++                                     const gsl_vector_complex_long_double * v);
++int gsl_vector_complex_long_double_fscanf (FILE * stream,
++                                     gsl_vector_complex_long_double * v);
++int gsl_vector_complex_long_double_fprintf (FILE * stream,
++                                      const gsl_vector_complex_long_double * v,
++                                      const char *format);
++
++int gsl_vector_complex_long_double_memcpy (gsl_vector_complex_long_double * dest, const gsl_vector_complex_long_double * src);
++
++int gsl_vector_complex_long_double_reverse (gsl_vector_complex_long_double * v);
++
++int gsl_vector_complex_long_double_swap (gsl_vector_complex_long_double * v, gsl_vector_complex_long_double * w);
++int gsl_vector_complex_long_double_swap_elements (gsl_vector_complex_long_double * v, const size_t i, const size_t j);
++
++int gsl_vector_complex_long_double_equal (const gsl_vector_complex_long_double * u, 
++                                    const gsl_vector_complex_long_double * v);
++
++int gsl_vector_complex_long_double_isnull (const gsl_vector_complex_long_double * v);
++int gsl_vector_complex_long_double_ispos (const gsl_vector_complex_long_double * v);
++int gsl_vector_complex_long_double_isneg (const gsl_vector_complex_long_double * v);
++int gsl_vector_complex_long_double_isnonneg (const gsl_vector_complex_long_double * v);
++
++int gsl_vector_complex_long_double_add (gsl_vector_complex_long_double * a, const gsl_vector_complex_long_double * b);
++int gsl_vector_complex_long_double_sub (gsl_vector_complex_long_double * a, const gsl_vector_complex_long_double * b);
++int gsl_vector_complex_long_double_mul (gsl_vector_complex_long_double * a, const gsl_vector_complex_long_double * b);
++int gsl_vector_complex_long_double_div (gsl_vector_complex_long_double * a, const gsl_vector_complex_long_double * b);
++int gsl_vector_complex_long_double_scale (gsl_vector_complex_long_double * a, const gsl_complex_long_double x);
++int gsl_vector_complex_long_double_add_constant (gsl_vector_complex_long_double * a, const gsl_complex_long_double x);
++
++INLINE_DECL gsl_complex_long_double gsl_vector_complex_long_double_get (const gsl_vector_complex_long_double * v, const size_t i);
++INLINE_DECL void gsl_vector_complex_long_double_set (gsl_vector_complex_long_double * v, const size_t i, gsl_complex_long_double z);
++INLINE_DECL gsl_complex_long_double *gsl_vector_complex_long_double_ptr (gsl_vector_complex_long_double * v, const size_t i);
++INLINE_DECL const gsl_complex_long_double *gsl_vector_complex_long_double_const_ptr (const gsl_vector_complex_long_double * v, const size_t i);
++
++#ifdef HAVE_INLINE
++
++INLINE_FUN
++gsl_complex_long_double
++gsl_vector_complex_long_double_get (const gsl_vector_complex_long_double * v,
++                              const size_t i)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(i >= v->size))
++    {
++      gsl_complex_long_double zero = {{0, 0}};
++      GSL_ERROR_VAL ("index out of range", GSL_EINVAL, zero);
++    }
++#endif
++  return *GSL_COMPLEX_LONG_DOUBLE_AT (v, i);
++}
++
++INLINE_FUN
++void
++gsl_vector_complex_long_double_set (gsl_vector_complex_long_double * v,
++                              const size_t i, gsl_complex_long_double z)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(i >= v->size))
++    {
++      GSL_ERROR_VOID ("index out of range", GSL_EINVAL);
++    }
++#endif
++  *GSL_COMPLEX_LONG_DOUBLE_AT (v, i) = z;
++}
++
++INLINE_FUN
++gsl_complex_long_double *
++gsl_vector_complex_long_double_ptr (gsl_vector_complex_long_double * v,
++                              const size_t i)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(i >= v->size))
++    {
++      GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
++    }
++#endif
++  return GSL_COMPLEX_LONG_DOUBLE_AT (v, i);
++}
++
++INLINE_FUN
++const gsl_complex_long_double *
++gsl_vector_complex_long_double_const_ptr (const gsl_vector_complex_long_double * v,
++                                    const size_t i)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(i >= v->size))
++    {
++      GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
++    }
++#endif
++  return GSL_COMPLEX_LONG_DOUBLE_AT (v, i);
++}
++
++
++#endif /* HAVE_INLINE */
++
++__END_DECLS
++
++#endif /* __GSL_VECTOR_COMPLEX_LONG_DOUBLE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector.h	(revision 14078)
+@@ -0,0 +1,24 @@
++#ifndef __GSL_PERMUTE_VECTOR_H__
++#define __GSL_PERMUTE_VECTOR_H__
++
++#include <gsl/gsl_permute_vector_complex_long_double.h>
++#include <gsl/gsl_permute_vector_complex_double.h>
++#include <gsl/gsl_permute_vector_complex_float.h>
++
++#include <gsl/gsl_permute_vector_long_double.h>
++#include <gsl/gsl_permute_vector_double.h>
++#include <gsl/gsl_permute_vector_float.h>
++
++#include <gsl/gsl_permute_vector_ulong.h>
++#include <gsl/gsl_permute_vector_long.h>
++
++#include <gsl/gsl_permute_vector_uint.h>
++#include <gsl/gsl_permute_vector_int.h>
++
++#include <gsl/gsl_permute_vector_ushort.h>
++#include <gsl/gsl_permute_vector_short.h>
++
++#include <gsl/gsl_permute_vector_uchar.h>
++#include <gsl/gsl_permute_vector_char.h>
++
++#endif /* __GSL_PERMUTE_VECTOR_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_long_double.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_long_double.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_long_double.h	(revision 14078)
+@@ -0,0 +1,99 @@
++/* statistics/gsl_statistics_long_double.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_STATISTICS_LONG_DOUBLE_H__
++#define __GSL_STATISTICS_LONG_DOUBLE_H__
++
++#include <stddef.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++double gsl_stats_long_double_mean (const long double data[], const size_t stride, const size_t n);
++double gsl_stats_long_double_variance (const long double data[], const size_t stride, const size_t n);
++double gsl_stats_long_double_sd (const long double data[], const size_t stride, const size_t n);
++double gsl_stats_long_double_variance_with_fixed_mean (const long double data[], const size_t stride, const size_t n, const double mean);
++double gsl_stats_long_double_sd_with_fixed_mean (const long double data[], const size_t stride, const size_t n, const double mean);
++double gsl_stats_long_double_tss (const long double data[], const size_t stride, const size_t n);
++double gsl_stats_long_double_tss_m (const long double data[], const size_t stride, const size_t n, const double mean);
++
++double gsl_stats_long_double_absdev (const long double data[], const size_t stride, const size_t n);
++double gsl_stats_long_double_skew (const long double data[], const size_t stride, const size_t n);
++double gsl_stats_long_double_kurtosis (const long double data[], const size_t stride, const size_t n);
++double gsl_stats_long_double_lag1_autocorrelation (const long double data[], const size_t stride, const size_t n);
++
++double gsl_stats_long_double_covariance (const long double data1[], const size_t stride1,const long double data2[], const size_t stride2, const size_t n);
++double gsl_stats_long_double_correlation (const long double data1[], const size_t stride1,const long double data2[], const size_t stride2, const size_t n);
++
++double gsl_stats_long_double_variance_m (const long double data[], const size_t stride, const size_t n, const double mean);
++double gsl_stats_long_double_sd_m (const long double data[], const size_t stride, const size_t n, const double mean);
++double gsl_stats_long_double_absdev_m (const long double data[], const size_t stride, const size_t n, const double mean);
++double gsl_stats_long_double_skew_m_sd (const long double data[], const size_t stride, const size_t n, const double mean, const double sd);
++double gsl_stats_long_double_kurtosis_m_sd (const long double data[], const size_t stride, const size_t n, const double mean, const double sd);
++double gsl_stats_long_double_lag1_autocorrelation_m (const long double data[], const size_t stride, const size_t n, const double mean);
++
++double gsl_stats_long_double_covariance_m (const long double data1[], const size_t stride1,const long double data2[], const size_t stride2, const size_t n, const double mean1, const double mean2);
++
++/* DEFINED FOR FLOATING POINT TYPES ONLY */
++
++double gsl_stats_long_double_wmean (const long double w[], const size_t wstride, const long double data[], const size_t stride, const size_t n);
++double gsl_stats_long_double_wvariance (const long double w[], const size_t wstride, const long double data[], const size_t stride, const size_t n);
++double gsl_stats_long_double_wsd (const long double w[], const size_t wstride, const long double data[], const size_t stride, const size_t n);
++double gsl_stats_long_double_wvariance_with_fixed_mean (const long double w[], const size_t wstride, const long double data[], const size_t stride, const size_t n, const double mean);
++double gsl_stats_long_double_wsd_with_fixed_mean (const long double w[], const size_t wstride, const long double data[], const size_t stride, const size_t n, const double mean);
++double gsl_stats_long_double_wtss (const long double w[], const size_t wstride, const long double data[], const size_t stride, const size_t n);
++double gsl_stats_long_double_wtss_m (const long double w[], const size_t wstride, const long double data[], const size_t stride, const size_t n, const double wmean);
++double gsl_stats_long_double_wabsdev (const long double w[], const size_t wstride, const long double data[], const size_t stride, const size_t n);
++double gsl_stats_long_double_wskew (const long double w[], const size_t wstride, const long double data[], const size_t stride, const size_t n);
++double gsl_stats_long_double_wkurtosis (const long double w[], const size_t wstride, const long double data[], const size_t stride, const size_t n);
++
++double gsl_stats_long_double_wvariance_m (const long double w[], const size_t wstride, const long double data[], const size_t stride, const size_t n, const double wmean);
++double gsl_stats_long_double_wsd_m (const long double w[], const size_t wstride, const long double data[], const size_t stride, const size_t n, const double wmean);
++double gsl_stats_long_double_wabsdev_m (const long double w[], const size_t wstride, const long double data[], const size_t stride, const size_t n, const double wmean);
++double gsl_stats_long_double_wskew_m_sd (const long double w[], const size_t wstride, const long double data[], const size_t stride, const size_t n, const double wmean, const double wsd);
++double gsl_stats_long_double_wkurtosis_m_sd (const long double w[], const size_t wstride, const long double data[], const size_t stride, const size_t n, const double wmean, const double wsd);
++
++/* END OF FLOATING POINT TYPES */
++
++double gsl_stats_long_double_pvariance (const long double data1[], const size_t stride1, const size_t n1, const long double data2[], const size_t stride2, const size_t n2);
++double gsl_stats_long_double_ttest (const long double data1[], const size_t stride1, const size_t n1, const long double data2[], const size_t stride2, const size_t n2);
++
++long double gsl_stats_long_double_max (const long double data[], const size_t stride, const size_t n);
++long double gsl_stats_long_double_min (const long double data[], const size_t stride, const size_t n);
++void gsl_stats_long_double_minmax (long double * min, long double * max, const long double data[], const size_t stride, const size_t n);
++
++size_t gsl_stats_long_double_max_index (const long double data[], const size_t stride, const size_t n);
++size_t gsl_stats_long_double_min_index (const long double data[], const size_t stride, const size_t n);
++void gsl_stats_long_double_minmax_index (size_t * min_index, size_t * max_index, const long double data[], const size_t stride, const size_t n);
++
++double gsl_stats_long_double_median_from_sorted_data (const long double sorted_data[], const size_t stride, const size_t n) ;
++double gsl_stats_long_double_quantile_from_sorted_data (const long double sorted_data[], const size_t stride, const size_t n, const double f) ;
++
++__END_DECLS
++
++#endif /* __GSL_STATISTICS_LONG_DOUBLE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_complex_long_double.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_complex_long_double.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_complex_long_double.h	(revision 14078)
+@@ -0,0 +1,351 @@
++/* matrix/gsl_matrix_complex_long_double.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_MATRIX_COMPLEX_LONG_DOUBLE_H__
++#define __GSL_MATRIX_COMPLEX_LONG_DOUBLE_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_types.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_complex.h>
++#include <gsl/gsl_check_range.h>
++#include <gsl/gsl_vector_complex_long_double.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++typedef struct 
++{
++  size_t size1;
++  size_t size2;
++  size_t tda;
++  long double * data;
++  gsl_block_complex_long_double * block;
++  int owner;
++} gsl_matrix_complex_long_double ;
++
++typedef struct
++{
++  gsl_matrix_complex_long_double matrix;
++} _gsl_matrix_complex_long_double_view;
++
++typedef _gsl_matrix_complex_long_double_view gsl_matrix_complex_long_double_view;
++
++typedef struct
++{
++  gsl_matrix_complex_long_double matrix;
++} _gsl_matrix_complex_long_double_const_view;
++
++typedef const _gsl_matrix_complex_long_double_const_view gsl_matrix_complex_long_double_const_view;
++
++
++/* Allocation */
++
++gsl_matrix_complex_long_double * 
++gsl_matrix_complex_long_double_alloc (const size_t n1, const size_t n2);
++
++gsl_matrix_complex_long_double * 
++gsl_matrix_complex_long_double_calloc (const size_t n1, const size_t n2);
++
++gsl_matrix_complex_long_double * 
++gsl_matrix_complex_long_double_alloc_from_block (gsl_block_complex_long_double * b, 
++                                           const size_t offset, 
++                                           const size_t n1, const size_t n2, const size_t d2);
++
++gsl_matrix_complex_long_double * 
++gsl_matrix_complex_long_double_alloc_from_matrix (gsl_matrix_complex_long_double * b,
++                                            const size_t k1, const size_t k2,
++                                            const size_t n1, const size_t n2);
++
++gsl_vector_complex_long_double * 
++gsl_vector_complex_long_double_alloc_row_from_matrix (gsl_matrix_complex_long_double * m,
++                                                const size_t i);
++
++gsl_vector_complex_long_double * 
++gsl_vector_complex_long_double_alloc_col_from_matrix (gsl_matrix_complex_long_double * m,
++                                                const size_t j);
++
++void gsl_matrix_complex_long_double_free (gsl_matrix_complex_long_double * m);
++
++/* Views */
++
++_gsl_matrix_complex_long_double_view 
++gsl_matrix_complex_long_double_submatrix (gsl_matrix_complex_long_double * m, 
++                            const size_t i, const size_t j, 
++                            const size_t n1, const size_t n2);
++
++_gsl_vector_complex_long_double_view 
++gsl_matrix_complex_long_double_row (gsl_matrix_complex_long_double * m, const size_t i);
++
++_gsl_vector_complex_long_double_view 
++gsl_matrix_complex_long_double_column (gsl_matrix_complex_long_double * m, const size_t j);
++
++_gsl_vector_complex_long_double_view 
++gsl_matrix_complex_long_double_diagonal (gsl_matrix_complex_long_double * m);
++
++_gsl_vector_complex_long_double_view 
++gsl_matrix_complex_long_double_subdiagonal (gsl_matrix_complex_long_double * m, const size_t k);
++
++_gsl_vector_complex_long_double_view 
++gsl_matrix_complex_long_double_superdiagonal (gsl_matrix_complex_long_double * m, const size_t k);
++
++_gsl_vector_complex_long_double_view
++gsl_matrix_complex_long_double_subrow (gsl_matrix_complex_long_double * m,
++                                 const size_t i, const size_t offset,
++                                 const size_t n);
++
++_gsl_vector_complex_long_double_view
++gsl_matrix_complex_long_double_subcolumn (gsl_matrix_complex_long_double * m,
++                                    const size_t j, const size_t offset,
++                                    const size_t n);
++
++_gsl_matrix_complex_long_double_view
++gsl_matrix_complex_long_double_view_array (long double * base,
++                             const size_t n1, 
++                             const size_t n2);
++
++_gsl_matrix_complex_long_double_view
++gsl_matrix_complex_long_double_view_array_with_tda (long double * base, 
++                                      const size_t n1, 
++                                      const size_t n2,
++                                      const size_t tda);
++
++_gsl_matrix_complex_long_double_view
++gsl_matrix_complex_long_double_view_vector (gsl_vector_complex_long_double * v,
++                              const size_t n1, 
++                              const size_t n2);
++
++_gsl_matrix_complex_long_double_view
++gsl_matrix_complex_long_double_view_vector_with_tda (gsl_vector_complex_long_double * v,
++                                       const size_t n1, 
++                                       const size_t n2,
++                                       const size_t tda);
++
++
++_gsl_matrix_complex_long_double_const_view 
++gsl_matrix_complex_long_double_const_submatrix (const gsl_matrix_complex_long_double * m, 
++                                  const size_t i, const size_t j, 
++                                  const size_t n1, const size_t n2);
++
++_gsl_vector_complex_long_double_const_view 
++gsl_matrix_complex_long_double_const_row (const gsl_matrix_complex_long_double * m, 
++                            const size_t i);
++
++_gsl_vector_complex_long_double_const_view 
++gsl_matrix_complex_long_double_const_column (const gsl_matrix_complex_long_double * m, 
++                               const size_t j);
++
++_gsl_vector_complex_long_double_const_view
++gsl_matrix_complex_long_double_const_diagonal (const gsl_matrix_complex_long_double * m);
++
++_gsl_vector_complex_long_double_const_view 
++gsl_matrix_complex_long_double_const_subdiagonal (const gsl_matrix_complex_long_double * m, 
++                                    const size_t k);
++
++_gsl_vector_complex_long_double_const_view 
++gsl_matrix_complex_long_double_const_superdiagonal (const gsl_matrix_complex_long_double * m, 
++                                      const size_t k);
++
++_gsl_vector_complex_long_double_const_view
++gsl_matrix_complex_long_double_const_subrow (const gsl_matrix_complex_long_double * m,
++                                       const size_t i, const size_t offset,
++                                       const size_t n);
++
++_gsl_vector_complex_long_double_const_view
++gsl_matrix_complex_long_double_const_subcolumn (const gsl_matrix_complex_long_double * m,
++                                          const size_t j, const size_t offset,
++                                          const size_t n);
++
++_gsl_matrix_complex_long_double_const_view
++gsl_matrix_complex_long_double_const_view_array (const long double * base,
++                                   const size_t n1, 
++                                   const size_t n2);
++
++_gsl_matrix_complex_long_double_const_view
++gsl_matrix_complex_long_double_const_view_array_with_tda (const long double * base, 
++                                            const size_t n1, 
++                                            const size_t n2,
++                                            const size_t tda);
++
++_gsl_matrix_complex_long_double_const_view
++gsl_matrix_complex_long_double_const_view_vector (const gsl_vector_complex_long_double * v,
++                                    const size_t n1, 
++                                    const size_t n2);
++
++_gsl_matrix_complex_long_double_const_view
++gsl_matrix_complex_long_double_const_view_vector_with_tda (const gsl_vector_complex_long_double * v,
++                                             const size_t n1, 
++                                             const size_t n2,
++                                             const size_t tda);
++
++/* Operations */
++
++void gsl_matrix_complex_long_double_set_zero (gsl_matrix_complex_long_double * m);
++void gsl_matrix_complex_long_double_set_identity (gsl_matrix_complex_long_double * m);
++void gsl_matrix_complex_long_double_set_all (gsl_matrix_complex_long_double * m, gsl_complex_long_double x);
++
++int gsl_matrix_complex_long_double_fread (FILE * stream, gsl_matrix_complex_long_double * m) ;
++int gsl_matrix_complex_long_double_fwrite (FILE * stream, const gsl_matrix_complex_long_double * m) ;
++int gsl_matrix_complex_long_double_fscanf (FILE * stream, gsl_matrix_complex_long_double * m);
++int gsl_matrix_complex_long_double_fprintf (FILE * stream, const gsl_matrix_complex_long_double * m, const char * format);
++
++int gsl_matrix_complex_long_double_memcpy(gsl_matrix_complex_long_double * dest, const gsl_matrix_complex_long_double * src);
++int gsl_matrix_complex_long_double_swap(gsl_matrix_complex_long_double * m1, gsl_matrix_complex_long_double * m2);
++
++int gsl_matrix_complex_long_double_swap_rows(gsl_matrix_complex_long_double * m, const size_t i, const size_t j);
++int gsl_matrix_complex_long_double_swap_columns(gsl_matrix_complex_long_double * m, const size_t i, const size_t j);
++int gsl_matrix_complex_long_double_swap_rowcol(gsl_matrix_complex_long_double * m, const size_t i, const size_t j);
++
++int gsl_matrix_complex_long_double_transpose (gsl_matrix_complex_long_double * m);
++int gsl_matrix_complex_long_double_transpose_memcpy (gsl_matrix_complex_long_double * dest, const gsl_matrix_complex_long_double * src);
++
++int gsl_matrix_complex_long_double_equal (const gsl_matrix_complex_long_double * a, const gsl_matrix_complex_long_double * b);
++
++int gsl_matrix_complex_long_double_isnull (const gsl_matrix_complex_long_double * m);
++int gsl_matrix_complex_long_double_ispos (const gsl_matrix_complex_long_double * m);
++int gsl_matrix_complex_long_double_isneg (const gsl_matrix_complex_long_double * m);
++int gsl_matrix_complex_long_double_isnonneg (const gsl_matrix_complex_long_double * m);
++
++int gsl_matrix_complex_long_double_add (gsl_matrix_complex_long_double * a, const gsl_matrix_complex_long_double * b);
++int gsl_matrix_complex_long_double_sub (gsl_matrix_complex_long_double * a, const gsl_matrix_complex_long_double * b);
++int gsl_matrix_complex_long_double_mul_elements (gsl_matrix_complex_long_double * a, const gsl_matrix_complex_long_double * b);
++int gsl_matrix_complex_long_double_div_elements (gsl_matrix_complex_long_double * a, const gsl_matrix_complex_long_double * b);
++int gsl_matrix_complex_long_double_scale (gsl_matrix_complex_long_double * a, const gsl_complex_long_double x);
++int gsl_matrix_complex_long_double_add_constant (gsl_matrix_complex_long_double * a, const gsl_complex_long_double x);
++int gsl_matrix_complex_long_double_add_diagonal (gsl_matrix_complex_long_double * a, const gsl_complex_long_double x);
++
++/***********************************************************************/
++/* The functions below are obsolete                                    */
++/***********************************************************************/
++int gsl_matrix_complex_long_double_get_row(gsl_vector_complex_long_double * v, const gsl_matrix_complex_long_double * m, const size_t i);
++int gsl_matrix_complex_long_double_get_col(gsl_vector_complex_long_double * v, const gsl_matrix_complex_long_double * m, const size_t j);
++int gsl_matrix_complex_long_double_set_row(gsl_matrix_complex_long_double * m, const size_t i, const gsl_vector_complex_long_double * v);
++int gsl_matrix_complex_long_double_set_col(gsl_matrix_complex_long_double * m, const size_t j, const gsl_vector_complex_long_double * v);
++/***********************************************************************/
++
++/* inline functions if you are using GCC */
++
++INLINE_DECL gsl_complex_long_double gsl_matrix_complex_long_double_get(const gsl_matrix_complex_long_double * m, const size_t i, const size_t j);
++INLINE_DECL void gsl_matrix_complex_long_double_set(gsl_matrix_complex_long_double * m, const size_t i, const size_t j, const gsl_complex_long_double x);
++
++INLINE_DECL gsl_complex_long_double * gsl_matrix_complex_long_double_ptr(gsl_matrix_complex_long_double * m, const size_t i, const size_t j);
++INLINE_DECL const gsl_complex_long_double * gsl_matrix_complex_long_double_const_ptr(const gsl_matrix_complex_long_double * m, const size_t i, const size_t j);
++
++#ifdef HAVE_INLINE
++
++INLINE_FUN 
++gsl_complex_long_double
++gsl_matrix_complex_long_double_get(const gsl_matrix_complex_long_double * m, 
++                     const size_t i, const size_t j)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(1)) 
++    {
++      gsl_complex_long_double zero = {{0,0}};
++
++      if (i >= m->size1)
++        {
++          GSL_ERROR_VAL("first index out of range", GSL_EINVAL, zero) ;
++        }
++      else if (j >= m->size2)
++        {
++          GSL_ERROR_VAL("second index out of range", GSL_EINVAL, zero) ;
++        }
++    }
++#endif
++  return *(gsl_complex_long_double *)(m->data + 2*(i * m->tda + j)) ;
++} 
++
++INLINE_FUN 
++void
++gsl_matrix_complex_long_double_set(gsl_matrix_complex_long_double * m, 
++                     const size_t i, const size_t j, const gsl_complex_long_double x)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(1)) 
++    {
++      if (i >= m->size1)
++        {
++          GSL_ERROR_VOID("first index out of range", GSL_EINVAL) ;
++        }
++      else if (j >= m->size2)
++        {
++          GSL_ERROR_VOID("second index out of range", GSL_EINVAL) ;
++        }
++    }
++#endif
++  *(gsl_complex_long_double *)(m->data + 2*(i * m->tda + j)) = x ;
++}
++
++INLINE_FUN 
++gsl_complex_long_double *
++gsl_matrix_complex_long_double_ptr(gsl_matrix_complex_long_double * m, 
++                             const size_t i, const size_t j)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(1)) 
++    {
++      if (i >= m->size1)
++        {
++          GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
++        }
++      else if (j >= m->size2)
++        {
++          GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
++        }
++    }
++#endif
++  return (gsl_complex_long_double *)(m->data + 2*(i * m->tda + j)) ;
++} 
++
++INLINE_FUN 
++const gsl_complex_long_double *
++gsl_matrix_complex_long_double_const_ptr(const gsl_matrix_complex_long_double * m, 
++                                   const size_t i, const size_t j)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(1)) 
++    {
++      if (i >= m->size1)
++        {
++          GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
++        }
++      else if (j >= m->size2)
++        {
++          GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
++        }
++    }
++#endif
++  return (const gsl_complex_long_double *)(m->data + 2*(i * m->tda + j)) ;
++} 
++
++#endif /* HAVE_INLINE */
++
++__END_DECLS
++
++#endif /* __GSL_MATRIX_COMPLEX_LONG_DOUBLE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_blas_types.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_blas_types.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_blas_types.h	(revision 14078)
+@@ -0,0 +1,54 @@
++/* blas/gsl_blas_types.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++/*
++ * Author:  G. Jungman
++ */
++/* Based on draft BLAST C interface specification  [Jul 7 1998]
++ */
++#ifndef __GSL_BLAS_TYPES_H__
++#define __GSL_BLAS_TYPES_H__
++
++#include <gsl/gsl_cblas.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++typedef  CBLAS_INDEX  CBLAS_INDEX_t;
++typedef  enum CBLAS_ORDER       CBLAS_ORDER_t;
++typedef  enum CBLAS_TRANSPOSE   CBLAS_TRANSPOSE_t;
++typedef  enum CBLAS_UPLO        CBLAS_UPLO_t;
++typedef  enum CBLAS_DIAG        CBLAS_DIAG_t;
++typedef  enum CBLAS_SIDE        CBLAS_SIDE_t;
++
++/* typedef  gsl_complex  COMPLEX; */
++
++__END_DECLS
++
++
++#endif /* __GSL_BLAS_TYPES_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_ulong.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_ulong.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_ulong.h	(revision 14078)
+@@ -0,0 +1,230 @@
++/* vector/gsl_vector_ulong.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_VECTOR_ULONG_H__
++#define __GSL_VECTOR_ULONG_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_types.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_inline.h>
++#include <gsl/gsl_check_range.h>
++#include <gsl/gsl_block_ulong.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++typedef struct 
++{
++  size_t size;
++  size_t stride;
++  unsigned long *data;
++  gsl_block_ulong *block;
++  int owner;
++} 
++gsl_vector_ulong;
++
++typedef struct
++{
++  gsl_vector_ulong vector;
++} _gsl_vector_ulong_view;
++
++typedef _gsl_vector_ulong_view gsl_vector_ulong_view;
++
++typedef struct
++{
++  gsl_vector_ulong vector;
++} _gsl_vector_ulong_const_view;
++
++typedef const _gsl_vector_ulong_const_view gsl_vector_ulong_const_view;
++
++
++/* Allocation */
++
++gsl_vector_ulong *gsl_vector_ulong_alloc (const size_t n);
++gsl_vector_ulong *gsl_vector_ulong_calloc (const size_t n);
++
++gsl_vector_ulong *gsl_vector_ulong_alloc_from_block (gsl_block_ulong * b,
++                                                     const size_t offset, 
++                                                     const size_t n, 
++                                                     const size_t stride);
++
++gsl_vector_ulong *gsl_vector_ulong_alloc_from_vector (gsl_vector_ulong * v,
++                                                      const size_t offset, 
++                                                      const size_t n, 
++                                                      const size_t stride);
++
++void gsl_vector_ulong_free (gsl_vector_ulong * v);
++
++/* Views */
++
++_gsl_vector_ulong_view 
++gsl_vector_ulong_view_array (unsigned long *v, size_t n);
++
++_gsl_vector_ulong_view 
++gsl_vector_ulong_view_array_with_stride (unsigned long *base,
++                                         size_t stride,
++                                         size_t n);
++
++_gsl_vector_ulong_const_view 
++gsl_vector_ulong_const_view_array (const unsigned long *v, size_t n);
++
++_gsl_vector_ulong_const_view 
++gsl_vector_ulong_const_view_array_with_stride (const unsigned long *base,
++                                               size_t stride,
++                                               size_t n);
++
++_gsl_vector_ulong_view 
++gsl_vector_ulong_subvector (gsl_vector_ulong *v, 
++                            size_t i, 
++                            size_t n);
++
++_gsl_vector_ulong_view 
++gsl_vector_ulong_subvector_with_stride (gsl_vector_ulong *v, 
++                                        size_t i,
++                                        size_t stride,
++                                        size_t n);
++
++_gsl_vector_ulong_const_view 
++gsl_vector_ulong_const_subvector (const gsl_vector_ulong *v, 
++                                  size_t i, 
++                                  size_t n);
++
++_gsl_vector_ulong_const_view 
++gsl_vector_ulong_const_subvector_with_stride (const gsl_vector_ulong *v, 
++                                              size_t i, 
++                                              size_t stride,
++                                              size_t n);
++
++/* Operations */
++
++void gsl_vector_ulong_set_zero (gsl_vector_ulong * v);
++void gsl_vector_ulong_set_all (gsl_vector_ulong * v, unsigned long x);
++int gsl_vector_ulong_set_basis (gsl_vector_ulong * v, size_t i);
++
++int gsl_vector_ulong_fread (FILE * stream, gsl_vector_ulong * v);
++int gsl_vector_ulong_fwrite (FILE * stream, const gsl_vector_ulong * v);
++int gsl_vector_ulong_fscanf (FILE * stream, gsl_vector_ulong * v);
++int gsl_vector_ulong_fprintf (FILE * stream, const gsl_vector_ulong * v,
++                              const char *format);
++
++int gsl_vector_ulong_memcpy (gsl_vector_ulong * dest, const gsl_vector_ulong * src);
++
++int gsl_vector_ulong_reverse (gsl_vector_ulong * v);
++
++int gsl_vector_ulong_swap (gsl_vector_ulong * v, gsl_vector_ulong * w);
++int gsl_vector_ulong_swap_elements (gsl_vector_ulong * v, const size_t i, const size_t j);
++
++unsigned long gsl_vector_ulong_max (const gsl_vector_ulong * v);
++unsigned long gsl_vector_ulong_min (const gsl_vector_ulong * v);
++void gsl_vector_ulong_minmax (const gsl_vector_ulong * v, unsigned long * min_out, unsigned long * max_out);
++
++size_t gsl_vector_ulong_max_index (const gsl_vector_ulong * v);
++size_t gsl_vector_ulong_min_index (const gsl_vector_ulong * v);
++void gsl_vector_ulong_minmax_index (const gsl_vector_ulong * v, size_t * imin, size_t * imax);
++
++int gsl_vector_ulong_add (gsl_vector_ulong * a, const gsl_vector_ulong * b);
++int gsl_vector_ulong_sub (gsl_vector_ulong * a, const gsl_vector_ulong * b);
++int gsl_vector_ulong_mul (gsl_vector_ulong * a, const gsl_vector_ulong * b);
++int gsl_vector_ulong_div (gsl_vector_ulong * a, const gsl_vector_ulong * b);
++int gsl_vector_ulong_scale (gsl_vector_ulong * a, const double x);
++int gsl_vector_ulong_add_constant (gsl_vector_ulong * a, const double x);
++
++int gsl_vector_ulong_equal (const gsl_vector_ulong * u, 
++                            const gsl_vector_ulong * v);
++
++int gsl_vector_ulong_isnull (const gsl_vector_ulong * v);
++int gsl_vector_ulong_ispos (const gsl_vector_ulong * v);
++int gsl_vector_ulong_isneg (const gsl_vector_ulong * v);
++int gsl_vector_ulong_isnonneg (const gsl_vector_ulong * v);
++
++INLINE_DECL unsigned long gsl_vector_ulong_get (const gsl_vector_ulong * v, const size_t i);
++INLINE_DECL void gsl_vector_ulong_set (gsl_vector_ulong * v, const size_t i, unsigned long x);
++INLINE_DECL unsigned long * gsl_vector_ulong_ptr (gsl_vector_ulong * v, const size_t i);
++INLINE_DECL const unsigned long * gsl_vector_ulong_const_ptr (const gsl_vector_ulong * v, const size_t i);
++
++#ifdef HAVE_INLINE
++
++INLINE_FUN
++unsigned long
++gsl_vector_ulong_get (const gsl_vector_ulong * v, const size_t i)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(i >= v->size))
++    {
++      GSL_ERROR_VAL ("index out of range", GSL_EINVAL, 0);
++    }
++#endif
++  return v->data[i * v->stride];
++}
++
++INLINE_FUN
++void
++gsl_vector_ulong_set (gsl_vector_ulong * v, const size_t i, unsigned long x)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(i >= v->size))
++    {
++      GSL_ERROR_VOID ("index out of range", GSL_EINVAL);
++    }
++#endif
++  v->data[i * v->stride] = x;
++}
++
++INLINE_FUN
++unsigned long *
++gsl_vector_ulong_ptr (gsl_vector_ulong * v, const size_t i)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(i >= v->size))
++    {
++      GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
++    }
++#endif
++  return (unsigned long *) (v->data + i * v->stride);
++}
++
++INLINE_FUN
++const unsigned long *
++gsl_vector_ulong_const_ptr (const gsl_vector_ulong * v, const size_t i)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(i >= v->size))
++    {
++      GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
++    }
++#endif
++  return (const unsigned long *) (v->data + i * v->stride);
++}
++#endif /* HAVE_INLINE */
++
++__END_DECLS
++
++#endif /* __GSL_VECTOR_ULONG_H__ */
++
++
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_wavelet.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_wavelet.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_wavelet.h	(revision 14078)
+@@ -0,0 +1,108 @@
++/* wavelet/gsl_wavelet.h
++ * 
++ * Copyright (C) 2004 Ivo Alxneit
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_WAVELET_H__
++#define __GSL_WAVELET_H__
++#include <stdlib.h>
++#include <gsl/gsl_types.h>
++#include <gsl/gsl_errno.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS          /* empty */
++# define __END_DECLS            /* empty */
++#endif
++
++__BEGIN_DECLS
++
++#ifndef GSL_DISABLE_DEPRECATED
++typedef enum {
++  forward = 1, backward = -1,
++  gsl_wavelet_forward = 1, gsl_wavelet_backward = -1
++} 
++gsl_wavelet_direction;
++#else
++typedef enum {
++  gsl_wavelet_forward = 1, gsl_wavelet_backward = -1
++} 
++gsl_wavelet_direction;
++#endif
++
++typedef struct
++{
++  const char *name;
++  int (*init) (const double **h1, const double **g1,
++               const double **h2, const double **g2, size_t * nc,
++               size_t * offset, size_t member);
++}
++gsl_wavelet_type;
++
++typedef struct
++{
++  const gsl_wavelet_type *type;
++  const double *h1;
++  const double *g1;
++  const double *h2;
++  const double *g2;
++  size_t nc;
++  size_t offset;
++}
++gsl_wavelet;
++
++typedef struct
++{
++  double *scratch;
++  size_t n;
++}
++gsl_wavelet_workspace;
++
++GSL_VAR const gsl_wavelet_type *gsl_wavelet_daubechies;
++GSL_VAR const gsl_wavelet_type *gsl_wavelet_daubechies_centered;
++GSL_VAR const gsl_wavelet_type *gsl_wavelet_haar;
++GSL_VAR const gsl_wavelet_type *gsl_wavelet_haar_centered;
++GSL_VAR const gsl_wavelet_type *gsl_wavelet_bspline;
++GSL_VAR const gsl_wavelet_type *gsl_wavelet_bspline_centered;
++
++gsl_wavelet *gsl_wavelet_alloc (const gsl_wavelet_type * T, size_t k);
++void gsl_wavelet_free (gsl_wavelet * w);
++const char *gsl_wavelet_name (const gsl_wavelet * w);
++
++gsl_wavelet_workspace *gsl_wavelet_workspace_alloc (size_t n);
++void gsl_wavelet_workspace_free (gsl_wavelet_workspace * work);
++
++int gsl_wavelet_transform (const gsl_wavelet * w, 
++                           double *data, size_t stride, size_t n,
++                           gsl_wavelet_direction dir, 
++                           gsl_wavelet_workspace * work);
++
++int gsl_wavelet_transform_forward (const gsl_wavelet * w, 
++                                   double *data, size_t stride, size_t n, 
++                                   gsl_wavelet_workspace * work);
++
++int gsl_wavelet_transform_inverse (const gsl_wavelet * w, 
++                                    double *data, size_t stride, size_t n, 
++                                    gsl_wavelet_workspace * work);
++
++__END_DECLS
++
++#endif /* __GSL_WAVELET_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf.h	(revision 14078)
+@@ -0,0 +1,39 @@
++/* Author:  G. Jungman */
++
++#ifndef __GSL_SF_H__
++#define __GSL_SF_H__
++
++#include <gsl/gsl_sf_result.h>
++
++#include <gsl/gsl_sf_airy.h>
++#include <gsl/gsl_sf_bessel.h>
++#include <gsl/gsl_sf_clausen.h>
++#include <gsl/gsl_sf_coupling.h>
++#include <gsl/gsl_sf_coulomb.h>
++#include <gsl/gsl_sf_dawson.h>
++#include <gsl/gsl_sf_debye.h>
++#include <gsl/gsl_sf_dilog.h>
++#include <gsl/gsl_sf_elementary.h>
++#include <gsl/gsl_sf_ellint.h>
++#include <gsl/gsl_sf_elljac.h>
++#include <gsl/gsl_sf_erf.h>
++#include <gsl/gsl_sf_exp.h>
++#include <gsl/gsl_sf_expint.h>
++#include <gsl/gsl_sf_fermi_dirac.h>
++#include <gsl/gsl_sf_gamma.h>
++#include <gsl/gsl_sf_gegenbauer.h>
++#include <gsl/gsl_sf_hyperg.h>
++#include <gsl/gsl_sf_laguerre.h>
++#include <gsl/gsl_sf_lambert.h>
++#include <gsl/gsl_sf_legendre.h>
++#include <gsl/gsl_sf_log.h>
++#include <gsl/gsl_sf_mathieu.h>
++#include <gsl/gsl_sf_pow_int.h>
++#include <gsl/gsl_sf_psi.h>
++#include <gsl/gsl_sf_synchrotron.h>
++#include <gsl/gsl_sf_transport.h>
++#include <gsl/gsl_sf_trig.h>
++#include <gsl/gsl_sf_zeta.h>
++
++
++#endif /* __GSL_SF_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_coupling.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_coupling.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_coupling.h	(revision 14078)
+@@ -0,0 +1,125 @@
++/* specfunc/gsl_sf_coupling.h
++ * 
++ * Copyright (C) 1996,1997,1998,1999,2000,2001,2002 Gerard Jungman
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++/* Author:  G. Jungman */
++
++#ifndef __GSL_SF_COUPLING_H__
++#define __GSL_SF_COUPLING_H__
++
++#include <gsl/gsl_sf_result.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++
++/* 3j Symbols:  / ja jb jc \
++ *              \ ma mb mc /
++ *
++ * exceptions: GSL_EDOM, GSL_EOVRFLW
++ */
++int gsl_sf_coupling_3j_e(int two_ja, int two_jb, int two_jc,
++                            int two_ma, int two_mb, int two_mc,
++                            gsl_sf_result * result
++                            );
++double gsl_sf_coupling_3j(int two_ja, int two_jb, int two_jc,
++                          int two_ma, int two_mb, int two_mc
++                          );
++
++
++/* 6j Symbols:  / ja jb jc \
++ *              \ jd je jf /
++ *
++ * exceptions: GSL_EDOM, GSL_EOVRFLW
++ */
++int gsl_sf_coupling_6j_e(int two_ja, int two_jb, int two_jc,
++                         int two_jd, int two_je, int two_jf,
++                         gsl_sf_result * result
++                         );
++double gsl_sf_coupling_6j(int two_ja, int two_jb, int two_jc,
++                          int two_jd, int two_je, int two_jf
++                          );
++
++/* Racah W coefficients:
++ *
++ *   W(a b c d; e f) = (-1)^{a+b+c+d} / a b e \
++ *                                    \ d c f /
++ *
++ * exceptions: GSL_EDOM, GSL_EOVRFLW
++ */
++int gsl_sf_coupling_RacahW_e(int two_ja, int two_jb, int two_jc,
++                             int two_jd, int two_je, int two_jf,
++                             gsl_sf_result * result
++                             );
++double gsl_sf_coupling_RacahW(int two_ja, int two_jb, int two_jc,
++                              int two_jd, int two_je, int two_jf
++                              );
++
++
++/* 9j Symbols:  / ja jb jc \
++ *              | jd je jf |
++ *              \ jg jh ji /
++ *
++ * exceptions: GSL_EDOM, GSL_EOVRFLW
++ */
++int gsl_sf_coupling_9j_e(int two_ja, int two_jb, int two_jc,
++                         int two_jd, int two_je, int two_jf,
++                         int two_jg, int two_jh, int two_ji,
++                         gsl_sf_result * result
++                         );
++double gsl_sf_coupling_9j(int two_ja, int two_jb, int two_jc,
++                          int two_jd, int two_je, int two_jf,
++                          int two_jg, int two_jh, int two_ji
++                          );
++
++
++/* INCORRECT version of 6j Symbols:
++ * This function actually calculates
++ *              / ja jb je \
++ *              \ jd jc jf /
++ * It represents the original implementation,
++ * which had the above permutation of the
++ * arguments. This was wrong and confusing,
++ * and I had to fix it. Sorry for the trouble.
++ * [GJ] Tue Nov 26 12:53:39 MST 2002
++ *
++ * exceptions: GSL_EDOM, GSL_EOVRFLW
++ */
++#ifndef GSL_DISABLE_DEPRECATED
++int gsl_sf_coupling_6j_INCORRECT_e(int two_ja, int two_jb, int two_jc,
++                                   int two_jd, int two_je, int two_jf,
++                                   gsl_sf_result * result
++                                   );
++double gsl_sf_coupling_6j_INCORRECT(int two_ja, int two_jb, int two_jc,
++                                    int two_jd, int two_je, int two_jf
++                                    );
++#endif /* !GSL_DISABLE_DEPRECATED */
++
++
++__END_DECLS
++
++#endif /* __GSL_SF_COUPLING_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_short.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_short.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_short.h	(revision 14078)
+@@ -0,0 +1,65 @@
++/* block/gsl_block_short.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_BLOCK_SHORT_H__
++#define __GSL_BLOCK_SHORT_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++struct gsl_block_short_struct
++{
++  size_t size;
++  short *data;
++};
++
++typedef struct gsl_block_short_struct gsl_block_short;
++
++gsl_block_short *gsl_block_short_alloc (const size_t n);
++gsl_block_short *gsl_block_short_calloc (const size_t n);
++void gsl_block_short_free (gsl_block_short * b);
++
++int gsl_block_short_fread (FILE * stream, gsl_block_short * b);
++int gsl_block_short_fwrite (FILE * stream, const gsl_block_short * b);
++int gsl_block_short_fscanf (FILE * stream, gsl_block_short * b);
++int gsl_block_short_fprintf (FILE * stream, const gsl_block_short * b, const char *format);
++
++int gsl_block_short_raw_fread (FILE * stream, short * b, const size_t n, const size_t stride);
++int gsl_block_short_raw_fwrite (FILE * stream, const short * b, const size_t n, const size_t stride);
++int gsl_block_short_raw_fscanf (FILE * stream, short * b, const size_t n, const size_t stride);
++int gsl_block_short_raw_fprintf (FILE * stream, const short * b, const size_t n, const size_t stride, const char *format);
++
++size_t gsl_block_short_size (const gsl_block_short * b);
++short * gsl_block_short_data (const gsl_block_short * b);
++
++__END_DECLS
++
++#endif /* __GSL_BLOCK_SHORT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector.h	(revision 14078)
+@@ -0,0 +1,20 @@
++#ifndef __GSL_SORT_VECTOR_H__
++#define __GSL_SORT_VECTOR_H__
++
++#include <gsl/gsl_sort_vector_long_double.h>
++#include <gsl/gsl_sort_vector_double.h>
++#include <gsl/gsl_sort_vector_float.h>
++
++#include <gsl/gsl_sort_vector_ulong.h>
++#include <gsl/gsl_sort_vector_long.h>
++
++#include <gsl/gsl_sort_vector_uint.h>
++#include <gsl/gsl_sort_vector_int.h>
++
++#include <gsl/gsl_sort_vector_ushort.h>
++#include <gsl/gsl_sort_vector_short.h>
++
++#include <gsl/gsl_sort_vector_uchar.h>
++#include <gsl/gsl_sort_vector_char.h>
++
++#endif /* __GSL_SORT_VECTOR_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_ushort.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_ushort.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_ushort.h	(revision 14078)
+@@ -0,0 +1,51 @@
++/* sort/gsl_sort_vector_ushort.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_SORT_VECTOR_USHORT_H__
++#define __GSL_SORT_VECTOR_USHORT_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_permutation.h>
++#include <gsl/gsl_vector_ushort.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++void gsl_sort_vector_ushort (gsl_vector_ushort * v);
++int gsl_sort_vector_ushort_index (gsl_permutation * p, const gsl_vector_ushort * v);
++
++int gsl_sort_vector_ushort_smallest (unsigned short * dest, const size_t k, const gsl_vector_ushort * v);
++int gsl_sort_vector_ushort_largest (unsigned short * dest, const size_t k, const gsl_vector_ushort * v);
++
++int gsl_sort_vector_ushort_smallest_index (size_t * p, const size_t k, const gsl_vector_ushort * v);
++int gsl_sort_vector_ushort_largest_index (size_t * p, const size_t k, const gsl_vector_ushort * v);
++
++__END_DECLS
++
++#endif /* __GSL_SORT_VECTOR_USHORT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_multiroots.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_multiroots.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_multiroots.h	(revision 14078)
+@@ -0,0 +1,177 @@
++/* multiroots/gsl_multiroots.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_MULTIROOTS_H__
++#define __GSL_MULTIROOTS_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_types.h>
++#include <gsl/gsl_math.h>
++#include <gsl/gsl_vector.h>
++#include <gsl/gsl_matrix.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++/* Definition of vector-valued functions with parameters based on gsl_vector */
++
++struct gsl_multiroot_function_struct
++{
++  int (* f) (const gsl_vector * x, void * params, gsl_vector * f);
++  size_t n;
++  void * params;
++};
++
++typedef struct gsl_multiroot_function_struct gsl_multiroot_function ;
++
++#define GSL_MULTIROOT_FN_EVAL(F,x,y) (*((F)->f))(x,(F)->params,(y))
++
++int gsl_multiroot_fdjacobian (gsl_multiroot_function * F,
++                              const gsl_vector * x, const gsl_vector * f,
++                              double epsrel, gsl_matrix * jacobian);
++
++
++typedef struct
++  {
++    const char *name;
++    size_t size;
++    int (*alloc) (void *state, size_t n);
++    int (*set) (void *state, gsl_multiroot_function * function, gsl_vector * x, gsl_vector * f, gsl_vector * dx);
++    int (*iterate) (void *state, gsl_multiroot_function * function, gsl_vector * x, gsl_vector * f, gsl_vector * dx);
++    void (*free) (void *state);
++  }
++gsl_multiroot_fsolver_type;
++
++typedef struct
++  {
++    const gsl_multiroot_fsolver_type * type;
++    gsl_multiroot_function * function ;
++    gsl_vector * x ;
++    gsl_vector * f ;
++    gsl_vector * dx ;
++    void *state;
++  }
++gsl_multiroot_fsolver;
++
++gsl_multiroot_fsolver * 
++gsl_multiroot_fsolver_alloc (const gsl_multiroot_fsolver_type * T, 
++                                     size_t n); 
++
++void gsl_multiroot_fsolver_free (gsl_multiroot_fsolver * s);
++
++int gsl_multiroot_fsolver_set (gsl_multiroot_fsolver * s, 
++                               gsl_multiroot_function * f, 
++                               const gsl_vector * x);
++
++int gsl_multiroot_fsolver_iterate (gsl_multiroot_fsolver * s);
++
++const char * gsl_multiroot_fsolver_name (const gsl_multiroot_fsolver * s);
++gsl_vector * gsl_multiroot_fsolver_root (const gsl_multiroot_fsolver * s);
++gsl_vector * gsl_multiroot_fsolver_dx (const gsl_multiroot_fsolver * s);
++gsl_vector * gsl_multiroot_fsolver_f (const gsl_multiroot_fsolver * s);
++
++/* Definition of vector-valued functions and gradient with parameters
++   based on gsl_vector */
++
++struct gsl_multiroot_function_fdf_struct
++{
++  int (* f) (const gsl_vector * x, void * params, gsl_vector * f);
++  int (* df) (const gsl_vector * x, void * params, gsl_matrix * df);
++  int (* fdf) (const gsl_vector * x, void * params, gsl_vector * f, gsl_matrix *df);
++  size_t n;
++  void * params;
++};
++
++typedef struct gsl_multiroot_function_fdf_struct gsl_multiroot_function_fdf ;
++
++#define GSL_MULTIROOT_FN_EVAL_F(F,x,y) ((*((F)->f))(x,(F)->params,(y)))
++#define GSL_MULTIROOT_FN_EVAL_DF(F,x,dy) ((*((F)->df))(x,(F)->params,(dy)))
++#define GSL_MULTIROOT_FN_EVAL_F_DF(F,x,y,dy) ((*((F)->fdf))(x,(F)->params,(y),(dy)))
++
++typedef struct
++  {
++    const char *name;
++    size_t size;
++    int (*alloc) (void *state, size_t n);
++    int (*set) (void *state, gsl_multiroot_function_fdf * fdf, gsl_vector * x, gsl_vector * f, gsl_matrix * J, gsl_vector * dx);
++    int (*iterate) (void *state, gsl_multiroot_function_fdf * fdf, gsl_vector * x, gsl_vector * f, gsl_matrix * J, gsl_vector * dx);
++    void (*free) (void *state);
++  }
++gsl_multiroot_fdfsolver_type;
++
++typedef struct
++  {
++    const gsl_multiroot_fdfsolver_type * type;
++    gsl_multiroot_function_fdf * fdf ;
++    gsl_vector * x;
++    gsl_vector * f;
++    gsl_matrix * J;
++    gsl_vector * dx;
++    void *state;
++  }
++gsl_multiroot_fdfsolver;
++
++gsl_multiroot_fdfsolver *
++gsl_multiroot_fdfsolver_alloc (const gsl_multiroot_fdfsolver_type * T,
++                                      size_t n);
++
++int
++gsl_multiroot_fdfsolver_set (gsl_multiroot_fdfsolver * s, 
++                             gsl_multiroot_function_fdf * fdf,
++                             const gsl_vector * x);
++
++int
++gsl_multiroot_fdfsolver_iterate (gsl_multiroot_fdfsolver * s);
++
++void
++gsl_multiroot_fdfsolver_free (gsl_multiroot_fdfsolver * s);
++
++const char * gsl_multiroot_fdfsolver_name (const gsl_multiroot_fdfsolver * s);
++gsl_vector * gsl_multiroot_fdfsolver_root (const gsl_multiroot_fdfsolver * s);
++gsl_vector * gsl_multiroot_fdfsolver_dx (const gsl_multiroot_fdfsolver * s);
++gsl_vector * gsl_multiroot_fdfsolver_f (const gsl_multiroot_fdfsolver * s);
++
++int gsl_multiroot_test_delta (const gsl_vector * dx, const gsl_vector * x, 
++                              double epsabs, double epsrel);
++
++int gsl_multiroot_test_residual (const gsl_vector * f, double epsabs);
++
++GSL_VAR const gsl_multiroot_fsolver_type * gsl_multiroot_fsolver_dnewton;
++GSL_VAR const gsl_multiroot_fsolver_type * gsl_multiroot_fsolver_broyden;
++GSL_VAR const gsl_multiroot_fsolver_type * gsl_multiroot_fsolver_hybrid;
++GSL_VAR const gsl_multiroot_fsolver_type * gsl_multiroot_fsolver_hybrids;
++
++GSL_VAR const gsl_multiroot_fdfsolver_type * gsl_multiroot_fdfsolver_newton;
++GSL_VAR const gsl_multiroot_fdfsolver_type * gsl_multiroot_fdfsolver_gnewton;
++GSL_VAR const gsl_multiroot_fdfsolver_type * gsl_multiroot_fdfsolver_hybridj;
++GSL_VAR const gsl_multiroot_fdfsolver_type * gsl_multiroot_fdfsolver_hybridsj;
++
++
++__END_DECLS
++
++#endif /* __GSL_MULTIROOTS_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_elljac.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_elljac.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_elljac.h	(revision 14078)
+@@ -0,0 +1,48 @@
++/* specfunc/gsl_sf_elljac.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++/* Author:  G. Jungman */
++
++#ifndef __GSL_SF_ELLJAC_H__
++#define __GSL_SF_ELLJAC_H__
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++
++/* Jacobian elliptic functions sn, dn, cn,
++ * by descending Landen transformations
++ *
++ * exceptions: GSL_EDOM
++ */
++int gsl_sf_elljac_e(double u, double m, double * sn, double * cn, double * dn);
++
++
++__END_DECLS
++
++#endif /* __GSL_SF_ELLJAC_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_cblas.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_cblas.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_cblas.h	(revision 14078)
+@@ -0,0 +1,606 @@
++/* blas/gsl_cblas.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++/* This is a copy of the CBLAS standard header.
++ * We carry this around so we do not have to
++ * break our model for flexible BLAS functionality.
++ */
++
++#ifndef __GSL_CBLAS_H__
++#define __GSL_CBLAS_H__
++#include <stddef.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++#define __BEGIN_DECLS extern "C" {
++#define __END_DECLS }
++#else
++#define __BEGIN_DECLS           /* empty */
++#define __END_DECLS             /* empty */
++#endif
++
++__BEGIN_DECLS
++
++/*
++ * Enumerated and derived types
++ */
++#define CBLAS_INDEX size_t  /* this may vary between platforms */
++
++enum CBLAS_ORDER {CblasRowMajor=101, CblasColMajor=102};
++enum CBLAS_TRANSPOSE {CblasNoTrans=111, CblasTrans=112, CblasConjTrans=113};
++enum CBLAS_UPLO {CblasUpper=121, CblasLower=122};
++enum CBLAS_DIAG {CblasNonUnit=131, CblasUnit=132};
++enum CBLAS_SIDE {CblasLeft=141, CblasRight=142};
++
++/*
++ * ===========================================================================
++ * Prototypes for level 1 BLAS functions (complex are recast as routines)
++ * ===========================================================================
++ */
++float  cblas_sdsdot(const int N, const float alpha, const float *X,
++                    const int incX, const float *Y, const int incY);
++double cblas_dsdot(const int N, const float *X, const int incX, const float *Y,
++                   const int incY);
++float  cblas_sdot(const int N, const float  *X, const int incX,
++                  const float  *Y, const int incY);
++double cblas_ddot(const int N, const double *X, const int incX,
++                  const double *Y, const int incY);
++
++/*
++ * Functions having prefixes Z and C only
++ */
++void   cblas_cdotu_sub(const int N, const void *X, const int incX,
++                       const void *Y, const int incY, void *dotu);
++void   cblas_cdotc_sub(const int N, const void *X, const int incX,
++                       const void *Y, const int incY, void *dotc);
++
++void   cblas_zdotu_sub(const int N, const void *X, const int incX,
++                       const void *Y, const int incY, void *dotu);
++void   cblas_zdotc_sub(const int N, const void *X, const int incX,
++                       const void *Y, const int incY, void *dotc);
++
++
++/*
++ * Functions having prefixes S D SC DZ
++ */
++float  cblas_snrm2(const int N, const float *X, const int incX);
++float  cblas_sasum(const int N, const float *X, const int incX);
++
++double cblas_dnrm2(const int N, const double *X, const int incX);
++double cblas_dasum(const int N, const double *X, const int incX);
++
++float  cblas_scnrm2(const int N, const void *X, const int incX);
++float  cblas_scasum(const int N, const void *X, const int incX);
++
++double cblas_dznrm2(const int N, const void *X, const int incX);
++double cblas_dzasum(const int N, const void *X, const int incX);
++
++
++/*
++ * Functions having standard 4 prefixes (S D C Z)
++ */
++CBLAS_INDEX cblas_isamax(const int N, const float  *X, const int incX);
++CBLAS_INDEX cblas_idamax(const int N, const double *X, const int incX);
++CBLAS_INDEX cblas_icamax(const int N, const void   *X, const int incX);
++CBLAS_INDEX cblas_izamax(const int N, const void   *X, const int incX);
++
++/*
++ * ===========================================================================
++ * Prototypes for level 1 BLAS routines
++ * ===========================================================================
++ */
++
++/* 
++ * Routines with standard 4 prefixes (s, d, c, z)
++ */
++void cblas_sswap(const int N, float *X, const int incX, 
++                 float *Y, const int incY);
++void cblas_scopy(const int N, const float *X, const int incX, 
++                 float *Y, const int incY);
++void cblas_saxpy(const int N, const float alpha, const float *X,
++                 const int incX, float *Y, const int incY);
++
++void cblas_dswap(const int N, double *X, const int incX, 
++                 double *Y, const int incY);
++void cblas_dcopy(const int N, const double *X, const int incX, 
++                 double *Y, const int incY);
++void cblas_daxpy(const int N, const double alpha, const double *X,
++                 const int incX, double *Y, const int incY);
++
++void cblas_cswap(const int N, void *X, const int incX, 
++                 void *Y, const int incY);
++void cblas_ccopy(const int N, const void *X, const int incX, 
++                 void *Y, const int incY);
++void cblas_caxpy(const int N, const void *alpha, const void *X,
++                 const int incX, void *Y, const int incY);
++
++void cblas_zswap(const int N, void *X, const int incX, 
++                 void *Y, const int incY);
++void cblas_zcopy(const int N, const void *X, const int incX, 
++                 void *Y, const int incY);
++void cblas_zaxpy(const int N, const void *alpha, const void *X,
++                 const int incX, void *Y, const int incY);
++
++
++/* 
++ * Routines with S and D prefix only
++ */
++void cblas_srotg(float *a, float *b, float *c, float *s);
++void cblas_srotmg(float *d1, float *d2, float *b1, const float b2, float *P);
++void cblas_srot(const int N, float *X, const int incX,
++                float *Y, const int incY, const float c, const float s);
++void cblas_srotm(const int N, float *X, const int incX,
++                float *Y, const int incY, const float *P);
++
++void cblas_drotg(double *a, double *b, double *c, double *s);
++void cblas_drotmg(double *d1, double *d2, double *b1, const double b2, double *P);
++void cblas_drot(const int N, double *X, const int incX,
++                double *Y, const int incY, const double c, const double  s);
++void cblas_drotm(const int N, double *X, const int incX,
++                double *Y, const int incY, const double *P);
++
++
++/* 
++ * Routines with S D C Z CS and ZD prefixes
++ */
++void cblas_sscal(const int N, const float alpha, float *X, const int incX);
++void cblas_dscal(const int N, const double alpha, double *X, const int incX);
++void cblas_cscal(const int N, const void *alpha, void *X, const int incX);
++void cblas_zscal(const int N, const void *alpha, void *X, const int incX);
++void cblas_csscal(const int N, const float alpha, void *X, const int incX);
++void cblas_zdscal(const int N, const double alpha, void *X, const int incX);
++
++/*
++ * ===========================================================================
++ * Prototypes for level 2 BLAS
++ * ===========================================================================
++ */
++
++/* 
++ * Routines with standard 4 prefixes (S, D, C, Z)
++ */
++void cblas_sgemv(const enum CBLAS_ORDER order,
++                 const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
++                 const float alpha, const float *A, const int lda,
++                 const float *X, const int incX, const float beta,
++                 float *Y, const int incY);
++void cblas_sgbmv(const enum CBLAS_ORDER order,
++                 const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
++                 const int KL, const int KU, const float alpha,
++                 const float *A, const int lda, const float *X,
++                 const int incX, const float beta, float *Y, const int incY);
++void cblas_strmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
++                 const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
++                 const int N, const float *A, const int lda, 
++                 float *X, const int incX);
++void cblas_stbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
++                 const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
++                 const int N, const int K, const float *A, const int lda, 
++                 float *X, const int incX);
++void cblas_stpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
++                 const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
++                 const int N, const float *Ap, float *X, const int incX);
++void cblas_strsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
++                 const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
++                 const int N, const float *A, const int lda, float *X,
++                 const int incX);
++void cblas_stbsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
++                 const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
++                 const int N, const int K, const float *A, const int lda,
++                 float *X, const int incX);
++void cblas_stpsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
++                 const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
++                 const int N, const float *Ap, float *X, const int incX);
++
++void cblas_dgemv(const enum CBLAS_ORDER order,
++                 const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
++                 const double alpha, const double *A, const int lda,
++                 const double *X, const int incX, const double beta,
++                 double *Y, const int incY);
++void cblas_dgbmv(const enum CBLAS_ORDER order,
++                 const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
++                 const int KL, const int KU, const double alpha,
++                 const double *A, const int lda, const double *X,
++                 const int incX, const double beta, double *Y, const int incY);
++void cblas_dtrmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
++                 const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
++                 const int N, const double *A, const int lda, 
++                 double *X, const int incX);
++void cblas_dtbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
++                 const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
++                 const int N, const int K, const double *A, const int lda, 
++                 double *X, const int incX);
++void cblas_dtpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
++                 const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
++                 const int N, const double *Ap, double *X, const int incX);
++void cblas_dtrsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
++                 const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
++                 const int N, const double *A, const int lda, double *X,
++                 const int incX);
++void cblas_dtbsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
++                 const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
++                 const int N, const int K, const double *A, const int lda,
++                 double *X, const int incX);
++void cblas_dtpsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
++                 const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
++                 const int N, const double *Ap, double *X, const int incX);
++
++void cblas_cgemv(const enum CBLAS_ORDER order,
++                 const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
++                 const void *alpha, const void *A, const int lda,
++                 const void *X, const int incX, const void *beta,
++                 void *Y, const int incY);
++void cblas_cgbmv(const enum CBLAS_ORDER order,
++                 const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
++                 const int KL, const int KU, const void *alpha,
++                 const void *A, const int lda, const void *X,
++                 const int incX, const void *beta, void *Y, const int incY);
++void cblas_ctrmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
++                 const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
++                 const int N, const void *A, const int lda, 
++                 void *X, const int incX);
++void cblas_ctbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
++                 const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
++                 const int N, const int K, const void *A, const int lda, 
++                 void *X, const int incX);
++void cblas_ctpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
++                 const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
++                 const int N, const void *Ap, void *X, const int incX);
++void cblas_ctrsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
++                 const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
++                 const int N, const void *A, const int lda, void *X,
++                 const int incX);
++void cblas_ctbsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
++                 const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
++                 const int N, const int K, const void *A, const int lda,
++                 void *X, const int incX);
++void cblas_ctpsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
++                 const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
++                 const int N, const void *Ap, void *X, const int incX);
++
++void cblas_zgemv(const enum CBLAS_ORDER order,
++                 const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
++                 const void *alpha, const void *A, const int lda,
++                 const void *X, const int incX, const void *beta,
++                 void *Y, const int incY);
++void cblas_zgbmv(const enum CBLAS_ORDER order,
++                 const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
++                 const int KL, const int KU, const void *alpha,
++                 const void *A, const int lda, const void *X,
++                 const int incX, const void *beta, void *Y, const int incY);
++void cblas_ztrmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
++                 const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
++                 const int N, const void *A, const int lda, 
++                 void *X, const int incX);
++void cblas_ztbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
++                 const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
++                 const int N, const int K, const void *A, const int lda, 
++                 void *X, const int incX);
++void cblas_ztpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
++                 const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
++                 const int N, const void *Ap, void *X, const int incX);
++void cblas_ztrsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
++                 const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
++                 const int N, const void *A, const int lda, void *X,
++                 const int incX);
++void cblas_ztbsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
++                 const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
++                 const int N, const int K, const void *A, const int lda,
++                 void *X, const int incX);
++void cblas_ztpsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
++                 const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
++                 const int N, const void *Ap, void *X, const int incX);
++
++
++/* 
++ * Routines with S and D prefixes only
++ */
++void cblas_ssymv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
++                 const int N, const float alpha, const float *A,
++                 const int lda, const float *X, const int incX,
++                 const float beta, float *Y, const int incY);
++void cblas_ssbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
++                 const int N, const int K, const float alpha, const float *A,
++                 const int lda, const float *X, const int incX,
++                 const float beta, float *Y, const int incY);
++void cblas_sspmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
++                 const int N, const float alpha, const float *Ap,
++                 const float *X, const int incX,
++                 const float beta, float *Y, const int incY);
++void cblas_sger(const enum CBLAS_ORDER order, const int M, const int N,
++                const float alpha, const float *X, const int incX,
++                const float *Y, const int incY, float *A, const int lda);
++void cblas_ssyr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
++                const int N, const float alpha, const float *X,
++                const int incX, float *A, const int lda);
++void cblas_sspr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
++                const int N, const float alpha, const float *X,
++                const int incX, float *Ap);
++void cblas_ssyr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
++                const int N, const float alpha, const float *X,
++                const int incX, const float *Y, const int incY, float *A,
++                const int lda);
++void cblas_sspr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
++                const int N, const float alpha, const float *X,
++                const int incX, const float *Y, const int incY, float *A);
++
++void cblas_dsymv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
++                 const int N, const double alpha, const double *A,
++                 const int lda, const double *X, const int incX,
++                 const double beta, double *Y, const int incY);
++void cblas_dsbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
++                 const int N, const int K, const double alpha, const double *A,
++                 const int lda, const double *X, const int incX,
++                 const double beta, double *Y, const int incY);
++void cblas_dspmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
++                 const int N, const double alpha, const double *Ap,
++                 const double *X, const int incX,
++                 const double beta, double *Y, const int incY);
++void cblas_dger(const enum CBLAS_ORDER order, const int M, const int N,
++                const double alpha, const double *X, const int incX,
++                const double *Y, const int incY, double *A, const int lda);
++void cblas_dsyr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
++                const int N, const double alpha, const double *X,
++                const int incX, double *A, const int lda);
++void cblas_dspr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
++                const int N, const double alpha, const double *X,
++                const int incX, double *Ap);
++void cblas_dsyr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
++                const int N, const double alpha, const double *X,
++                const int incX, const double *Y, const int incY, double *A,
++                const int lda);
++void cblas_dspr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
++                const int N, const double alpha, const double *X,
++                const int incX, const double *Y, const int incY, double *A);
++
++
++/* 
++ * Routines with C and Z prefixes only
++ */
++void cblas_chemv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
++                 const int N, const void *alpha, const void *A,
++                 const int lda, const void *X, const int incX,
++                 const void *beta, void *Y, const int incY);
++void cblas_chbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
++                 const int N, const int K, const void *alpha, const void *A,
++                 const int lda, const void *X, const int incX,
++                 const void *beta, void *Y, const int incY);
++void cblas_chpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
++                 const int N, const void *alpha, const void *Ap,
++                 const void *X, const int incX,
++                 const void *beta, void *Y, const int incY);
++void cblas_cgeru(const enum CBLAS_ORDER order, const int M, const int N,
++                 const void *alpha, const void *X, const int incX,
++                 const void *Y, const int incY, void *A, const int lda);
++void cblas_cgerc(const enum CBLAS_ORDER order, const int M, const int N,
++                 const void *alpha, const void *X, const int incX,
++                 const void *Y, const int incY, void *A, const int lda);
++void cblas_cher(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
++                const int N, const float alpha, const void *X, const int incX,
++                void *A, const int lda);
++void cblas_chpr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
++                const int N, const float alpha, const void *X,
++                const int incX, void *A);
++void cblas_cher2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N,
++                const void *alpha, const void *X, const int incX,
++                const void *Y, const int incY, void *A, const int lda);
++void cblas_chpr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N,
++                const void *alpha, const void *X, const int incX,
++                const void *Y, const int incY, void *Ap);
++
++void cblas_zhemv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
++                 const int N, const void *alpha, const void *A,
++                 const int lda, const void *X, const int incX,
++                 const void *beta, void *Y, const int incY);
++void cblas_zhbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
++                 const int N, const int K, const void *alpha, const void *A,
++                 const int lda, const void *X, const int incX,
++                 const void *beta, void *Y, const int incY);
++void cblas_zhpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
++                 const int N, const void *alpha, const void *Ap,
++                 const void *X, const int incX,
++                 const void *beta, void *Y, const int incY);
++void cblas_zgeru(const enum CBLAS_ORDER order, const int M, const int N,
++                 const void *alpha, const void *X, const int incX,
++                 const void *Y, const int incY, void *A, const int lda);
++void cblas_zgerc(const enum CBLAS_ORDER order, const int M, const int N,
++                 const void *alpha, const void *X, const int incX,
++                 const void *Y, const int incY, void *A, const int lda);
++void cblas_zher(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
++                const int N, const double alpha, const void *X, const int incX,
++                void *A, const int lda);
++void cblas_zhpr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
++                const int N, const double alpha, const void *X,
++                const int incX, void *A);
++void cblas_zher2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N,
++                const void *alpha, const void *X, const int incX,
++                const void *Y, const int incY, void *A, const int lda);
++void cblas_zhpr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N,
++                const void *alpha, const void *X, const int incX,
++                const void *Y, const int incY, void *Ap);
++
++/*
++ * ===========================================================================
++ * Prototypes for level 3 BLAS
++ * ===========================================================================
++ */
++
++/* 
++ * Routines with standard 4 prefixes (S, D, C, Z)
++ */
++void cblas_sgemm(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA,
++                 const enum CBLAS_TRANSPOSE TransB, const int M, const int N,
++                 const int K, const float alpha, const float *A,
++                 const int lda, const float *B, const int ldb,
++                 const float beta, float *C, const int ldc);
++void cblas_ssymm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
++                 const enum CBLAS_UPLO Uplo, const int M, const int N,
++                 const float alpha, const float *A, const int lda,
++                 const float *B, const int ldb, const float beta,
++                 float *C, const int ldc);
++void cblas_ssyrk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
++                 const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
++                 const float alpha, const float *A, const int lda,
++                 const float beta, float *C, const int ldc);
++void cblas_ssyr2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
++                  const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
++                  const float alpha, const float *A, const int lda,
++                  const float *B, const int ldb, const float beta,
++                  float *C, const int ldc);
++void cblas_strmm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
++                 const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
++                 const enum CBLAS_DIAG Diag, const int M, const int N,
++                 const float alpha, const float *A, const int lda,
++                 float *B, const int ldb);
++void cblas_strsm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
++                 const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
++                 const enum CBLAS_DIAG Diag, const int M, const int N,
++                 const float alpha, const float *A, const int lda,
++                 float *B, const int ldb);
++
++void cblas_dgemm(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA,
++                 const enum CBLAS_TRANSPOSE TransB, const int M, const int N,
++                 const int K, const double alpha, const double *A,
++                 const int lda, const double *B, const int ldb,
++                 const double beta, double *C, const int ldc);
++void cblas_dsymm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
++                 const enum CBLAS_UPLO Uplo, const int M, const int N,
++                 const double alpha, const double *A, const int lda,
++                 const double *B, const int ldb, const double beta,
++                 double *C, const int ldc);
++void cblas_dsyrk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
++                 const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
++                 const double alpha, const double *A, const int lda,
++                 const double beta, double *C, const int ldc);
++void cblas_dsyr2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
++                  const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
++                  const double alpha, const double *A, const int lda,
++                  const double *B, const int ldb, const double beta,
++                  double *C, const int ldc);
++void cblas_dtrmm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
++                 const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
++                 const enum CBLAS_DIAG Diag, const int M, const int N,
++                 const double alpha, const double *A, const int lda,
++                 double *B, const int ldb);
++void cblas_dtrsm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
++                 const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
++                 const enum CBLAS_DIAG Diag, const int M, const int N,
++                 const double alpha, const double *A, const int lda,
++                 double *B, const int ldb);
++
++void cblas_cgemm(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA,
++                 const enum CBLAS_TRANSPOSE TransB, const int M, const int N,
++                 const int K, const void *alpha, const void *A,
++                 const int lda, const void *B, const int ldb,
++                 const void *beta, void *C, const int ldc);
++void cblas_csymm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
++                 const enum CBLAS_UPLO Uplo, const int M, const int N,
++                 const void *alpha, const void *A, const int lda,
++                 const void *B, const int ldb, const void *beta,
++                 void *C, const int ldc);
++void cblas_csyrk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
++                 const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
++                 const void *alpha, const void *A, const int lda,
++                 const void *beta, void *C, const int ldc);
++void cblas_csyr2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
++                  const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
++                  const void *alpha, const void *A, const int lda,
++                  const void *B, const int ldb, const void *beta,
++                  void *C, const int ldc);
++void cblas_ctrmm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
++                 const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
++                 const enum CBLAS_DIAG Diag, const int M, const int N,
++                 const void *alpha, const void *A, const int lda,
++                 void *B, const int ldb);
++void cblas_ctrsm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
++                 const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
++                 const enum CBLAS_DIAG Diag, const int M, const int N,
++                 const void *alpha, const void *A, const int lda,
++                 void *B, const int ldb);
++
++void cblas_zgemm(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA,
++                 const enum CBLAS_TRANSPOSE TransB, const int M, const int N,
++                 const int K, const void *alpha, const void *A,
++                 const int lda, const void *B, const int ldb,
++                 const void *beta, void *C, const int ldc);
++void cblas_zsymm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
++                 const enum CBLAS_UPLO Uplo, const int M, const int N,
++                 const void *alpha, const void *A, const int lda,
++                 const void *B, const int ldb, const void *beta,
++                 void *C, const int ldc);
++void cblas_zsyrk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
++                 const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
++                 const void *alpha, const void *A, const int lda,
++                 const void *beta, void *C, const int ldc);
++void cblas_zsyr2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
++                  const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
++                  const void *alpha, const void *A, const int lda,
++                  const void *B, const int ldb, const void *beta,
++                  void *C, const int ldc);
++void cblas_ztrmm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
++                 const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
++                 const enum CBLAS_DIAG Diag, const int M, const int N,
++                 const void *alpha, const void *A, const int lda,
++                 void *B, const int ldb);
++void cblas_ztrsm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
++                 const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
++                 const enum CBLAS_DIAG Diag, const int M, const int N,
++                 const void *alpha, const void *A, const int lda,
++                 void *B, const int ldb);
++
++
++/* 
++ * Routines with prefixes C and Z only
++ */
++void cblas_chemm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
++                 const enum CBLAS_UPLO Uplo, const int M, const int N,
++                 const void *alpha, const void *A, const int lda,
++                 const void *B, const int ldb, const void *beta,
++                 void *C, const int ldc);
++void cblas_cherk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
++                 const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
++                 const float alpha, const void *A, const int lda,
++                 const float beta, void *C, const int ldc);
++void cblas_cher2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
++                  const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
++                  const void *alpha, const void *A, const int lda,
++                  const void *B, const int ldb, const float beta,
++                  void *C, const int ldc);
++
++void cblas_zhemm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
++                 const enum CBLAS_UPLO Uplo, const int M, const int N,
++                 const void *alpha, const void *A, const int lda,
++                 const void *B, const int ldb, const void *beta,
++                 void *C, const int ldc);
++void cblas_zherk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
++                 const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
++                 const double alpha, const void *A, const int lda,
++                 const double beta, void *C, const int ldc);
++void cblas_zher2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
++                  const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
++                  const void *alpha, const void *A, const int lda,
++                  const void *B, const int ldb, const double beta,
++                  void *C, const int ldc);
++
++void cblas_xerbla(int p, const char *rout, const char *form, ...);
++
++__END_DECLS
++
++#endif /* __GSL_CBLAS_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_version.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_version.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_version.h	(revision 14078)
+@@ -0,0 +1,26 @@
++#ifndef __GSL_VERSION_H__
++#define __GSL_VERSION_H__
++
++#include <gsl/gsl_types.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++__BEGIN_DECLS
++
++
++#define GSL_VERSION "1.15"
++#define GSL_MAJOR_VERSION 1
++#define GSL_MINOR_VERSION 15
++
++GSL_VAR const char * gsl_version;
++
++__END_DECLS
++
++#endif /* __GSL_VERSION_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_fft_halfcomplex_float.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_fft_halfcomplex_float.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_fft_halfcomplex_float.h	(revision 14078)
+@@ -0,0 +1,86 @@
++/* fft/gsl_fft_halfcomplex_float.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_FFT_HALFCOMPLEX_FLOAT_H__
++#define __GSL_FFT_HALFCOMPLEX_FLOAT_H__
++
++#include <stddef.h>
++
++#include <gsl/gsl_math.h>
++#include <gsl/gsl_complex.h>
++#include <gsl/gsl_fft.h>
++#include <gsl/gsl_fft_real_float.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++int gsl_fft_halfcomplex_float_radix2_backward (float data[], const size_t stride, const size_t n);
++int gsl_fft_halfcomplex_float_radix2_inverse (float data[], const size_t stride, const size_t n);
++int gsl_fft_halfcomplex_float_radix2_transform (float data[], const size_t stride, const size_t n);
++
++typedef struct
++  {
++    size_t n;
++    size_t nf;
++    size_t factor[64];
++    gsl_complex_float *twiddle[64];
++    gsl_complex_float *trig;
++  }
++gsl_fft_halfcomplex_wavetable_float;
++
++
++gsl_fft_halfcomplex_wavetable_float * gsl_fft_halfcomplex_wavetable_float_alloc (size_t n);
++
++void
++gsl_fft_halfcomplex_wavetable_float_free (gsl_fft_halfcomplex_wavetable_float * wavetable);
++
++int gsl_fft_halfcomplex_float_backward (float data[], const size_t stride, const size_t n,
++                                        const gsl_fft_halfcomplex_wavetable_float * wavetable,
++                                        gsl_fft_real_workspace_float * work);
++
++int gsl_fft_halfcomplex_float_inverse (float data[], const size_t stride, const size_t n,
++                                       const gsl_fft_halfcomplex_wavetable_float * wavetable,
++                                       gsl_fft_real_workspace_float * work);
++
++int gsl_fft_halfcomplex_float_transform (float data[], const size_t stride, const size_t n,
++                                         const gsl_fft_halfcomplex_wavetable_float * wavetable,
++                                         gsl_fft_real_workspace_float * work);
++
++int
++gsl_fft_halfcomplex_float_unpack (const float halfcomplex_coefficient[],
++                                  float complex_coefficient[],
++                                  const size_t stride, const size_t n);
++
++int
++gsl_fft_halfcomplex_float_radix2_unpack (const float halfcomplex_coefficient[],
++                                         float complex_coefficient[],
++                                         const size_t stride, const size_t n);
++
++__END_DECLS
++
++#endif /* __GSL_FFT_HALFCOMPLEX_FLOAT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_dilog.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_dilog.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_dilog.h	(revision 14078)
+@@ -0,0 +1,130 @@
++/* specfunc/gsl_sf_dilog.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004 Gerard Jungman
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++/* Author:  G. Jungman */
++
++#ifndef __GSL_SF_DILOG_H__
++#define __GSL_SF_DILOG_H__
++
++#include <gsl/gsl_sf_result.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++
++/* Real part of DiLogarithm(x), for real argument.
++ * In Lewin's notation, this is Li_2(x).
++ *
++ *   Li_2(x) = - Re[ Integrate[ Log[1-s] / s, {s, 0, x}] ]
++ *
++ * The function in the complex plane has a branch point
++ * at z = 1; we place the cut in the conventional way,
++ * on [1, +infty). This means that the value for real x > 1
++ * is a matter of definition; however, this choice does not
++ * affect the real part and so is not relevant to the
++ * interpretation of this implemented function.
++ */
++int     gsl_sf_dilog_e(const double x, gsl_sf_result * result);
++double  gsl_sf_dilog(const double x);
++
++
++/* DiLogarithm(z), for complex argument z = x + i y.
++ * Computes the principal branch.
++ *
++ * Recall that the branch cut is on the real axis with x > 1.
++ * The imaginary part of the computed value on the cut is given
++ * by -Pi*log(x), which is the limiting value taken approaching
++ * from y < 0. This is a conventional choice, though there is no
++ * true standardized choice.
++ *
++ * Note that there is no canonical way to lift the defining
++ * contour to the full Riemann surface because of the appearance
++ * of a "hidden branch point" at z = 0 on non-principal sheets.
++ * Experts will know the simple algebraic prescription for
++ * obtaining the sheet they want; non-experts will not want
++ * to know anything about it. This is why GSL chooses to compute
++ * only on the principal branch.
++ */
++int
++gsl_sf_complex_dilog_xy_e(
++  const double x,
++  const double y,
++  gsl_sf_result * result_re,
++  gsl_sf_result * result_im
++  );
++
++
++
++/* DiLogarithm(z), for complex argument z = r Exp[i theta].
++ * Computes the principal branch, thereby assuming an
++ * implicit reduction of theta to the range (-2 pi, 2 pi).
++ *
++ * If theta is identically zero, the imaginary part is computed
++ * as if approaching from y > 0. For other values of theta no
++ * special consideration is given, since it is assumed that
++ * no other machine representations of multiples of pi will
++ * produce y = 0 precisely. This assumption depends on some
++ * subtle properties of the machine arithmetic, such as
++ * correct rounding and monotonicity of the underlying
++ * implementation of sin() and cos().
++ *
++ * This function is ok, but the interface is confusing since
++ * it makes it appear that the branch structure is resolved.
++ * Furthermore the handling of values close to the branch
++ * cut is subtle. Perhap this interface should be deprecated.
++ */
++int
++gsl_sf_complex_dilog_e(
++  const double r,
++  const double theta,
++  gsl_sf_result * result_re,
++  gsl_sf_result * result_im
++  );
++
++
++
++/* Spence integral; spence(s) := Li_2(1-s)
++ *
++ * This function has a branch point at 0; we place the
++ * cut on (-infty,0). Because of our choice for the value
++ * of Li_2(z) on the cut, spence(s) is continuous as
++ * s approaches the cut from above. In other words,
++ * we define spence(x) = spence(x + i 0+).
++ */
++int
++gsl_sf_complex_spence_xy_e(
++  const double x,
++  const double y,
++  gsl_sf_result * real_sp,
++  gsl_sf_result * imag_sp
++  );
++
++
++__END_DECLS
++
++#endif /* __GSL_SF_DILOG_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_uint.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_uint.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_uint.h	(revision 14078)
+@@ -0,0 +1,50 @@
++/* sort/gsl_sort_uint.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_SORT_UINT_H__
++#define __GSL_SORT_UINT_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_permutation.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++void gsl_sort_uint (unsigned int * data, const size_t stride, const size_t n);
++void gsl_sort_uint_index (size_t * p, const unsigned int * data, const size_t stride, const size_t n);
++
++int gsl_sort_uint_smallest (unsigned int * dest, const size_t k, const unsigned int * src, const size_t stride, const size_t n);
++int gsl_sort_uint_smallest_index (size_t * p, const size_t k, const unsigned int * src, const size_t stride, const size_t n);
++
++int gsl_sort_uint_largest (unsigned int * dest, const size_t k, const unsigned int * src, const size_t stride, const size_t n);
++int gsl_sort_uint_largest_index (size_t * p, const size_t k, const unsigned int * src, const size_t stride, const size_t n);
++
++__END_DECLS
++
++#endif /* __GSL_SORT_UINT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_ieee_utils.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_ieee_utils.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_ieee_utils.h	(revision 14078)
+@@ -0,0 +1,99 @@
++/* ieee-utils/gsl_ieee_utils.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_IEEE_UTILS_H__
++#define __GSL_IEEE_UTILS_H__
++#include <stdio.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++enum {
++  GSL_IEEE_TYPE_NAN = 1,
++  GSL_IEEE_TYPE_INF = 2,
++  GSL_IEEE_TYPE_NORMAL = 3,
++  GSL_IEEE_TYPE_DENORMAL = 4,
++  GSL_IEEE_TYPE_ZERO = 5
++} ;
++
++typedef struct  {
++  int sign ;
++  char mantissa[24] ; /* Actual bits are 0..22, element 23 is \0 */
++  int exponent ;
++  int type ;
++} gsl_ieee_float_rep ;
++
++typedef struct  {
++  int sign ;
++  char mantissa[53] ; /* Actual bits are 0..51, element 52 is \0 */
++  int exponent ;
++  int type ;
++} gsl_ieee_double_rep ;
++
++
++void gsl_ieee_printf_float (const float * x) ;
++void gsl_ieee_printf_double (const double * x) ;
++
++void gsl_ieee_fprintf_float (FILE * stream, const float * x) ;
++void gsl_ieee_fprintf_double (FILE * stream, const double * x) ;
++
++void gsl_ieee_float_to_rep (const float * x, gsl_ieee_float_rep * r) ;
++void gsl_ieee_double_to_rep (const double * x, gsl_ieee_double_rep * r) ;
++
++enum {
++  GSL_IEEE_SINGLE_PRECISION = 1,
++  GSL_IEEE_DOUBLE_PRECISION = 2,
++  GSL_IEEE_EXTENDED_PRECISION = 3
++} ;
++
++enum {
++  GSL_IEEE_ROUND_TO_NEAREST = 1,
++  GSL_IEEE_ROUND_DOWN = 2,
++  GSL_IEEE_ROUND_UP = 3,
++  GSL_IEEE_ROUND_TO_ZERO = 4
++} ;
++
++enum {
++  GSL_IEEE_MASK_INVALID = 1,
++  GSL_IEEE_MASK_DENORMALIZED = 2,
++  GSL_IEEE_MASK_DIVISION_BY_ZERO = 4,
++  GSL_IEEE_MASK_OVERFLOW = 8,
++  GSL_IEEE_MASK_UNDERFLOW = 16,
++  GSL_IEEE_MASK_ALL = 31,
++  GSL_IEEE_TRAP_INEXACT = 32
++} ;
++
++void gsl_ieee_env_setup (void) ;
++int gsl_ieee_read_mode_string (const char * description, int * precision,
++                               int * rounding, int * exception_mask) ;
++int gsl_ieee_set_mode (int precision, int rounding, int exception_mask) ;
++
++__END_DECLS
++
++#endif /* __GSL_IEEE_UTILS_H__ */
++
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_char.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_char.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_char.h	(revision 14078)
+@@ -0,0 +1,79 @@
++/* statistics/gsl_statistics_char.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_STATISTICS_CHAR_H__
++#define __GSL_STATISTICS_CHAR_H__
++
++#include <stddef.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++double gsl_stats_char_mean (const char data[], const size_t stride, const size_t n);
++double gsl_stats_char_variance (const char data[], const size_t stride, const size_t n);
++double gsl_stats_char_sd (const char data[], const size_t stride, const size_t n);
++double gsl_stats_char_variance_with_fixed_mean (const char data[], const size_t stride, const size_t n, const double mean);
++double gsl_stats_char_sd_with_fixed_mean (const char data[], const size_t stride, const size_t n, const double mean);
++double gsl_stats_char_tss (const char data[], const size_t stride, const size_t n);
++double gsl_stats_char_tss_m (const char data[], const size_t stride, const size_t n, const double mean);
++
++double gsl_stats_char_absdev (const char data[], const size_t stride, const size_t n);
++double gsl_stats_char_skew (const char data[], const size_t stride, const size_t n);
++double gsl_stats_char_kurtosis (const char data[], const size_t stride, const size_t n);
++double gsl_stats_char_lag1_autocorrelation (const char data[], const size_t stride, const size_t n);
++
++double gsl_stats_char_covariance (const char data1[], const size_t stride1,const char data2[], const size_t stride2, const size_t n);
++double gsl_stats_char_correlation (const char data1[], const size_t stride1,const char data2[], const size_t stride2, const size_t n);
++
++double gsl_stats_char_variance_m (const char data[], const size_t stride, const size_t n, const double mean);
++double gsl_stats_char_sd_m (const char data[], const size_t stride, const size_t n, const double mean);
++double gsl_stats_char_absdev_m (const char data[], const size_t stride, const size_t n, const double mean);
++double gsl_stats_char_skew_m_sd (const char data[], const size_t stride, const size_t n, const double mean, const double sd);
++double gsl_stats_char_kurtosis_m_sd (const char data[], const size_t stride, const size_t n, const double mean, const double sd);
++double gsl_stats_char_lag1_autocorrelation_m (const char data[], const size_t stride, const size_t n, const double mean);
++
++double gsl_stats_char_covariance_m (const char data1[], const size_t stride1,const char data2[], const size_t stride2, const size_t n, const double mean1, const double mean2);
++
++
++double gsl_stats_char_pvariance (const char data1[], const size_t stride1, const size_t n1, const char data2[], const size_t stride2, const size_t n2);
++double gsl_stats_char_ttest (const char data1[], const size_t stride1, const size_t n1, const char data2[], const size_t stride2, const size_t n2);
++
++char gsl_stats_char_max (const char data[], const size_t stride, const size_t n);
++char gsl_stats_char_min (const char data[], const size_t stride, const size_t n);
++void gsl_stats_char_minmax (char * min, char * max, const char data[], const size_t stride, const size_t n);
++
++size_t gsl_stats_char_max_index (const char data[], const size_t stride, const size_t n);
++size_t gsl_stats_char_min_index (const char data[], const size_t stride, const size_t n);
++void gsl_stats_char_minmax_index (size_t * min_index, size_t * max_index, const char data[], const size_t stride, const size_t n);
++
++double gsl_stats_char_median_from_sorted_data (const char sorted_data[], const size_t stride, const size_t n) ;
++double gsl_stats_char_quantile_from_sorted_data (const char sorted_data[], const size_t stride, const size_t n, const double f) ;
++
++__END_DECLS
++
++#endif /* __GSL_STATISTICS_CHAR_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_float.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_float.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_float.h	(revision 14078)
+@@ -0,0 +1,230 @@
++/* vector/gsl_vector_float.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_VECTOR_FLOAT_H__
++#define __GSL_VECTOR_FLOAT_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_types.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_inline.h>
++#include <gsl/gsl_check_range.h>
++#include <gsl/gsl_block_float.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++typedef struct 
++{
++  size_t size;
++  size_t stride;
++  float *data;
++  gsl_block_float *block;
++  int owner;
++} 
++gsl_vector_float;
++
++typedef struct
++{
++  gsl_vector_float vector;
++} _gsl_vector_float_view;
++
++typedef _gsl_vector_float_view gsl_vector_float_view;
++
++typedef struct
++{
++  gsl_vector_float vector;
++} _gsl_vector_float_const_view;
++
++typedef const _gsl_vector_float_const_view gsl_vector_float_const_view;
++
++
++/* Allocation */
++
++gsl_vector_float *gsl_vector_float_alloc (const size_t n);
++gsl_vector_float *gsl_vector_float_calloc (const size_t n);
++
++gsl_vector_float *gsl_vector_float_alloc_from_block (gsl_block_float * b,
++                                                     const size_t offset, 
++                                                     const size_t n, 
++                                                     const size_t stride);
++
++gsl_vector_float *gsl_vector_float_alloc_from_vector (gsl_vector_float * v,
++                                                      const size_t offset, 
++                                                      const size_t n, 
++                                                      const size_t stride);
++
++void gsl_vector_float_free (gsl_vector_float * v);
++
++/* Views */
++
++_gsl_vector_float_view 
++gsl_vector_float_view_array (float *v, size_t n);
++
++_gsl_vector_float_view 
++gsl_vector_float_view_array_with_stride (float *base,
++                                         size_t stride,
++                                         size_t n);
++
++_gsl_vector_float_const_view 
++gsl_vector_float_const_view_array (const float *v, size_t n);
++
++_gsl_vector_float_const_view 
++gsl_vector_float_const_view_array_with_stride (const float *base,
++                                               size_t stride,
++                                               size_t n);
++
++_gsl_vector_float_view 
++gsl_vector_float_subvector (gsl_vector_float *v, 
++                            size_t i, 
++                            size_t n);
++
++_gsl_vector_float_view 
++gsl_vector_float_subvector_with_stride (gsl_vector_float *v, 
++                                        size_t i,
++                                        size_t stride,
++                                        size_t n);
++
++_gsl_vector_float_const_view 
++gsl_vector_float_const_subvector (const gsl_vector_float *v, 
++                                  size_t i, 
++                                  size_t n);
++
++_gsl_vector_float_const_view 
++gsl_vector_float_const_subvector_with_stride (const gsl_vector_float *v, 
++                                              size_t i, 
++                                              size_t stride,
++                                              size_t n);
++
++/* Operations */
++
++void gsl_vector_float_set_zero (gsl_vector_float * v);
++void gsl_vector_float_set_all (gsl_vector_float * v, float x);
++int gsl_vector_float_set_basis (gsl_vector_float * v, size_t i);
++
++int gsl_vector_float_fread (FILE * stream, gsl_vector_float * v);
++int gsl_vector_float_fwrite (FILE * stream, const gsl_vector_float * v);
++int gsl_vector_float_fscanf (FILE * stream, gsl_vector_float * v);
++int gsl_vector_float_fprintf (FILE * stream, const gsl_vector_float * v,
++                              const char *format);
++
++int gsl_vector_float_memcpy (gsl_vector_float * dest, const gsl_vector_float * src);
++
++int gsl_vector_float_reverse (gsl_vector_float * v);
++
++int gsl_vector_float_swap (gsl_vector_float * v, gsl_vector_float * w);
++int gsl_vector_float_swap_elements (gsl_vector_float * v, const size_t i, const size_t j);
++
++float gsl_vector_float_max (const gsl_vector_float * v);
++float gsl_vector_float_min (const gsl_vector_float * v);
++void gsl_vector_float_minmax (const gsl_vector_float * v, float * min_out, float * max_out);
++
++size_t gsl_vector_float_max_index (const gsl_vector_float * v);
++size_t gsl_vector_float_min_index (const gsl_vector_float * v);
++void gsl_vector_float_minmax_index (const gsl_vector_float * v, size_t * imin, size_t * imax);
++
++int gsl_vector_float_add (gsl_vector_float * a, const gsl_vector_float * b);
++int gsl_vector_float_sub (gsl_vector_float * a, const gsl_vector_float * b);
++int gsl_vector_float_mul (gsl_vector_float * a, const gsl_vector_float * b);
++int gsl_vector_float_div (gsl_vector_float * a, const gsl_vector_float * b);
++int gsl_vector_float_scale (gsl_vector_float * a, const double x);
++int gsl_vector_float_add_constant (gsl_vector_float * a, const double x);
++
++int gsl_vector_float_equal (const gsl_vector_float * u, 
++                            const gsl_vector_float * v);
++
++int gsl_vector_float_isnull (const gsl_vector_float * v);
++int gsl_vector_float_ispos (const gsl_vector_float * v);
++int gsl_vector_float_isneg (const gsl_vector_float * v);
++int gsl_vector_float_isnonneg (const gsl_vector_float * v);
++
++INLINE_DECL float gsl_vector_float_get (const gsl_vector_float * v, const size_t i);
++INLINE_DECL void gsl_vector_float_set (gsl_vector_float * v, const size_t i, float x);
++INLINE_DECL float * gsl_vector_float_ptr (gsl_vector_float * v, const size_t i);
++INLINE_DECL const float * gsl_vector_float_const_ptr (const gsl_vector_float * v, const size_t i);
++
++#ifdef HAVE_INLINE
++
++INLINE_FUN
++float
++gsl_vector_float_get (const gsl_vector_float * v, const size_t i)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(i >= v->size))
++    {
++      GSL_ERROR_VAL ("index out of range", GSL_EINVAL, 0);
++    }
++#endif
++  return v->data[i * v->stride];
++}
++
++INLINE_FUN
++void
++gsl_vector_float_set (gsl_vector_float * v, const size_t i, float x)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(i >= v->size))
++    {
++      GSL_ERROR_VOID ("index out of range", GSL_EINVAL);
++    }
++#endif
++  v->data[i * v->stride] = x;
++}
++
++INLINE_FUN
++float *
++gsl_vector_float_ptr (gsl_vector_float * v, const size_t i)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(i >= v->size))
++    {
++      GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
++    }
++#endif
++  return (float *) (v->data + i * v->stride);
++}
++
++INLINE_FUN
++const float *
++gsl_vector_float_const_ptr (const gsl_vector_float * v, const size_t i)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(i >= v->size))
++    {
++      GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
++    }
++#endif
++  return (const float *) (v->data + i * v->stride);
++}
++#endif /* HAVE_INLINE */
++
++__END_DECLS
++
++#endif /* __GSL_VECTOR_FLOAT_H__ */
++
++
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_uint.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_uint.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_uint.h	(revision 14078)
+@@ -0,0 +1,65 @@
++/* block/gsl_block_uint.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_BLOCK_UINT_H__
++#define __GSL_BLOCK_UINT_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++struct gsl_block_uint_struct
++{
++  size_t size;
++  unsigned int *data;
++};
++
++typedef struct gsl_block_uint_struct gsl_block_uint;
++
++gsl_block_uint *gsl_block_uint_alloc (const size_t n);
++gsl_block_uint *gsl_block_uint_calloc (const size_t n);
++void gsl_block_uint_free (gsl_block_uint * b);
++
++int gsl_block_uint_fread (FILE * stream, gsl_block_uint * b);
++int gsl_block_uint_fwrite (FILE * stream, const gsl_block_uint * b);
++int gsl_block_uint_fscanf (FILE * stream, gsl_block_uint * b);
++int gsl_block_uint_fprintf (FILE * stream, const gsl_block_uint * b, const char *format);
++
++int gsl_block_uint_raw_fread (FILE * stream, unsigned int * b, const size_t n, const size_t stride);
++int gsl_block_uint_raw_fwrite (FILE * stream, const unsigned int * b, const size_t n, const size_t stride);
++int gsl_block_uint_raw_fscanf (FILE * stream, unsigned int * b, const size_t n, const size_t stride);
++int gsl_block_uint_raw_fprintf (FILE * stream, const unsigned int * b, const size_t n, const size_t stride, const char *format);
++
++size_t gsl_block_uint_size (const gsl_block_uint * b);
++unsigned int * gsl_block_uint_data (const gsl_block_uint * b);
++
++__END_DECLS
++
++#endif /* __GSL_BLOCK_UINT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics.h	(revision 14078)
+@@ -0,0 +1,20 @@
++#ifndef __GSL_STATISTICS_H__
++#define __GSL_STATISTICS_H__
++
++#include <gsl/gsl_statistics_long_double.h>
++#include <gsl/gsl_statistics_double.h>
++#include <gsl/gsl_statistics_float.h>
++
++#include <gsl/gsl_statistics_ulong.h>
++#include <gsl/gsl_statistics_long.h>
++
++#include <gsl/gsl_statistics_uint.h>
++#include <gsl/gsl_statistics_int.h>
++
++#include <gsl/gsl_statistics_ushort.h>
++#include <gsl/gsl_statistics_short.h>
++
++#include <gsl/gsl_statistics_uchar.h>
++#include <gsl/gsl_statistics_char.h>
++
++#endif /* __GSL_STATISTICS_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_fft_complex_float.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_fft_complex_float.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_fft_complex_float.h	(revision 14078)
+@@ -0,0 +1,139 @@
++/* fft/gsl_fft_complex_float.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_FFT_COMPLEX_FLOAT_H__
++#define __GSL_FFT_COMPLEX_FLOAT_H__
++
++#include <stddef.h>
++
++#include <gsl/gsl_math.h>
++#include <gsl/gsl_complex.h>
++#include <gsl/gsl_fft.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++/*  Power of 2 routines  */
++
++
++int gsl_fft_complex_float_radix2_forward (gsl_complex_packed_array_float data,
++                                          const size_t stride,
++                                          const size_t n);
++
++int gsl_fft_complex_float_radix2_backward (gsl_complex_packed_array_float data,
++                                           const size_t stride,
++                                           const size_t n);
++
++int gsl_fft_complex_float_radix2_inverse (gsl_complex_packed_array_float data,
++                                          const size_t stride,
++                                          const size_t n);
++
++int gsl_fft_complex_float_radix2_transform (gsl_complex_packed_array_float data,
++                                            const size_t stride,
++                                            const size_t n,
++                                            const gsl_fft_direction sign);
++
++int gsl_fft_complex_float_radix2_dif_forward (gsl_complex_packed_array_float data,
++                                              const size_t stride,
++                                              const size_t n);
++
++int gsl_fft_complex_float_radix2_dif_backward (gsl_complex_packed_array_float data,
++                                               const size_t stride,
++                                               const size_t n);
++
++int gsl_fft_complex_float_radix2_dif_inverse (gsl_complex_packed_array_float data,
++                                              const size_t stride,
++                                              const size_t n);
++
++int gsl_fft_complex_float_radix2_dif_transform (gsl_complex_packed_array_float data,
++                                                const size_t stride,
++                                                const size_t n,
++                                                const gsl_fft_direction sign);
++
++/*  Mixed Radix general-N routines  */
++
++typedef struct
++  {
++    size_t n;
++    size_t nf;
++    size_t factor[64];
++    gsl_complex_float *twiddle[64];
++    gsl_complex_float *trig;
++  }
++gsl_fft_complex_wavetable_float;
++
++typedef struct
++{
++    size_t n;
++    float *scratch;
++}
++gsl_fft_complex_workspace_float;
++
++
++gsl_fft_complex_wavetable_float *gsl_fft_complex_wavetable_float_alloc (size_t n);
++
++void gsl_fft_complex_wavetable_float_free (gsl_fft_complex_wavetable_float * wavetable);
++
++gsl_fft_complex_workspace_float *gsl_fft_complex_workspace_float_alloc (size_t n);
++
++void gsl_fft_complex_workspace_float_free (gsl_fft_complex_workspace_float * workspace);
++
++
++int gsl_fft_complex_float_memcpy (gsl_fft_complex_wavetable_float * dest,
++                               gsl_fft_complex_wavetable_float * src);
++
++
++int gsl_fft_complex_float_forward (gsl_complex_packed_array_float data,
++                                   const size_t stride,
++                                   const size_t n,
++                                   const gsl_fft_complex_wavetable_float * wavetable,
++                                   gsl_fft_complex_workspace_float * work);
++
++int gsl_fft_complex_float_backward (gsl_complex_packed_array_float data,
++                                    const size_t stride,
++                                    const size_t n,
++                                    const gsl_fft_complex_wavetable_float * wavetable,
++                                    gsl_fft_complex_workspace_float * work);
++
++int gsl_fft_complex_float_inverse (gsl_complex_packed_array_float data,
++                                   const size_t stride,
++                                   const size_t n,
++                                   const gsl_fft_complex_wavetable_float * wavetable,
++                                   gsl_fft_complex_workspace_float * work);
++
++int gsl_fft_complex_float_transform (gsl_complex_packed_array_float data,
++                                     const size_t stride, const size_t n,
++                                     const gsl_fft_complex_wavetable_float * wavetable,
++                                     gsl_fft_complex_workspace_float * work,
++                                     const gsl_fft_direction sign);
++
++__END_DECLS
++
++#endif /* __GSL_FFT_COMPLEX_FLOAT_H__ */
++
++
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_fermi_dirac.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_fermi_dirac.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_fermi_dirac.h	(revision 14078)
+@@ -0,0 +1,126 @@
++/* specfunc/gsl_sf_fermi_dirac.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++/* Author:  G. Jungman */
++
++#ifndef __GSL_SF_FERMI_DIRAC_H__
++#define __GSL_SF_FERMI_DIRAC_H__
++
++#include <gsl/gsl_sf_result.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++
++/* Complete Fermi-Dirac Integrals:
++ *
++ *  F_j(x)   := 1/Gamma[j+1] Integral[ t^j /(Exp[t-x] + 1), {t,0,Infinity}]
++ *
++ *
++ * Incomplete Fermi-Dirac Integrals:
++ *
++ *  F_j(x,b) := 1/Gamma[j+1] Integral[ t^j /(Exp[t-x] + 1), {t,b,Infinity}]
++ */
++
++
++/* Complete integral F_{-1}(x) = e^x / (1 + e^x)
++ *
++ * exceptions: GSL_EUNDRFLW
++ */
++int     gsl_sf_fermi_dirac_m1_e(const double x, gsl_sf_result * result);
++double     gsl_sf_fermi_dirac_m1(const double x);
++
++
++/* Complete integral F_0(x) = ln(1 + e^x)
++ *
++ * exceptions: GSL_EUNDRFLW
++ */
++int     gsl_sf_fermi_dirac_0_e(const double x, gsl_sf_result * result);
++double     gsl_sf_fermi_dirac_0(const double x);
++
++
++/* Complete integral F_1(x)
++ *
++ * exceptions: GSL_EUNDRFLW, GSL_EOVRFLW
++ */
++int     gsl_sf_fermi_dirac_1_e(const double x, gsl_sf_result * result);
++double     gsl_sf_fermi_dirac_1(const double x);
++
++
++/* Complete integral F_2(x)
++ *
++ * exceptions: GSL_EUNDRFLW, GSL_EOVRFLW
++ */
++int     gsl_sf_fermi_dirac_2_e(const double x, gsl_sf_result * result);
++double     gsl_sf_fermi_dirac_2(const double x);
++
++
++/* Complete integral F_j(x)
++ * for integer j
++ *
++ * exceptions: GSL_EUNDRFLW, GSL_EOVRFLW
++ */
++int     gsl_sf_fermi_dirac_int_e(const int j, const double x, gsl_sf_result * result);
++double     gsl_sf_fermi_dirac_int(const int j, const double x);
++
++
++/* Complete integral F_{-1/2}(x)
++ *
++ * exceptions: GSL_EUNDRFLW, GSL_EOVRFLW
++ */
++int     gsl_sf_fermi_dirac_mhalf_e(const double x, gsl_sf_result * result);
++double     gsl_sf_fermi_dirac_mhalf(const double x);
++
++
++/* Complete integral F_{1/2}(x)
++ *
++ * exceptions: GSL_EUNDRFLW, GSL_EOVRFLW
++ */
++int     gsl_sf_fermi_dirac_half_e(const double x, gsl_sf_result * result);
++double     gsl_sf_fermi_dirac_half(const double x);
++
++
++/* Complete integral F_{3/2}(x)
++ *
++ * exceptions: GSL_EUNDRFLW, GSL_EOVRFLW
++ */
++int     gsl_sf_fermi_dirac_3half_e(const double x, gsl_sf_result * result);
++double     gsl_sf_fermi_dirac_3half(const double x);
++
++
++/* Incomplete integral F_0(x,b) = ln(1 + e^(b-x)) - (b-x)
++ *
++ * exceptions: GSL_EUNDRFLW, GSL_EDOM
++ */
++int     gsl_sf_fermi_dirac_inc_0_e(const double x, const double b, gsl_sf_result * result);
++double     gsl_sf_fermi_dirac_inc_0(const double x, const double b);
++
++
++__END_DECLS
++
++#endif /* __GSL_SF_FERMI_DIRAC_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_double.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_double.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_double.h	(revision 14078)
+@@ -0,0 +1,230 @@
++/* vector/gsl_vector_double.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_VECTOR_DOUBLE_H__
++#define __GSL_VECTOR_DOUBLE_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_types.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_inline.h>
++#include <gsl/gsl_check_range.h>
++#include <gsl/gsl_block_double.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++typedef struct 
++{
++  size_t size;
++  size_t stride;
++  double *data;
++  gsl_block *block;
++  int owner;
++} 
++gsl_vector;
++
++typedef struct
++{
++  gsl_vector vector;
++} _gsl_vector_view;
++
++typedef _gsl_vector_view gsl_vector_view;
++
++typedef struct
++{
++  gsl_vector vector;
++} _gsl_vector_const_view;
++
++typedef const _gsl_vector_const_view gsl_vector_const_view;
++
++
++/* Allocation */
++
++gsl_vector *gsl_vector_alloc (const size_t n);
++gsl_vector *gsl_vector_calloc (const size_t n);
++
++gsl_vector *gsl_vector_alloc_from_block (gsl_block * b,
++                                                     const size_t offset, 
++                                                     const size_t n, 
++                                                     const size_t stride);
++
++gsl_vector *gsl_vector_alloc_from_vector (gsl_vector * v,
++                                                      const size_t offset, 
++                                                      const size_t n, 
++                                                      const size_t stride);
++
++void gsl_vector_free (gsl_vector * v);
++
++/* Views */
++
++_gsl_vector_view 
++gsl_vector_view_array (double *v, size_t n);
++
++_gsl_vector_view 
++gsl_vector_view_array_with_stride (double *base,
++                                         size_t stride,
++                                         size_t n);
++
++_gsl_vector_const_view 
++gsl_vector_const_view_array (const double *v, size_t n);
++
++_gsl_vector_const_view 
++gsl_vector_const_view_array_with_stride (const double *base,
++                                               size_t stride,
++                                               size_t n);
++
++_gsl_vector_view 
++gsl_vector_subvector (gsl_vector *v, 
++                            size_t i, 
++                            size_t n);
++
++_gsl_vector_view 
++gsl_vector_subvector_with_stride (gsl_vector *v, 
++                                        size_t i,
++                                        size_t stride,
++                                        size_t n);
++
++_gsl_vector_const_view 
++gsl_vector_const_subvector (const gsl_vector *v, 
++                                  size_t i, 
++                                  size_t n);
++
++_gsl_vector_const_view 
++gsl_vector_const_subvector_with_stride (const gsl_vector *v, 
++                                              size_t i, 
++                                              size_t stride,
++                                              size_t n);
++
++/* Operations */
++
++void gsl_vector_set_zero (gsl_vector * v);
++void gsl_vector_set_all (gsl_vector * v, double x);
++int gsl_vector_set_basis (gsl_vector * v, size_t i);
++
++int gsl_vector_fread (FILE * stream, gsl_vector * v);
++int gsl_vector_fwrite (FILE * stream, const gsl_vector * v);
++int gsl_vector_fscanf (FILE * stream, gsl_vector * v);
++int gsl_vector_fprintf (FILE * stream, const gsl_vector * v,
++                              const char *format);
++
++int gsl_vector_memcpy (gsl_vector * dest, const gsl_vector * src);
++
++int gsl_vector_reverse (gsl_vector * v);
++
++int gsl_vector_swap (gsl_vector * v, gsl_vector * w);
++int gsl_vector_swap_elements (gsl_vector * v, const size_t i, const size_t j);
++
++double gsl_vector_max (const gsl_vector * v);
++double gsl_vector_min (const gsl_vector * v);
++void gsl_vector_minmax (const gsl_vector * v, double * min_out, double * max_out);
++
++size_t gsl_vector_max_index (const gsl_vector * v);
++size_t gsl_vector_min_index (const gsl_vector * v);
++void gsl_vector_minmax_index (const gsl_vector * v, size_t * imin, size_t * imax);
++
++int gsl_vector_add (gsl_vector * a, const gsl_vector * b);
++int gsl_vector_sub (gsl_vector * a, const gsl_vector * b);
++int gsl_vector_mul (gsl_vector * a, const gsl_vector * b);
++int gsl_vector_div (gsl_vector * a, const gsl_vector * b);
++int gsl_vector_scale (gsl_vector * a, const double x);
++int gsl_vector_add_constant (gsl_vector * a, const double x);
++
++int gsl_vector_equal (const gsl_vector * u, 
++                            const gsl_vector * v);
++
++int gsl_vector_isnull (const gsl_vector * v);
++int gsl_vector_ispos (const gsl_vector * v);
++int gsl_vector_isneg (const gsl_vector * v);
++int gsl_vector_isnonneg (const gsl_vector * v);
++
++INLINE_DECL double gsl_vector_get (const gsl_vector * v, const size_t i);
++INLINE_DECL void gsl_vector_set (gsl_vector * v, const size_t i, double x);
++INLINE_DECL double * gsl_vector_ptr (gsl_vector * v, const size_t i);
++INLINE_DECL const double * gsl_vector_const_ptr (const gsl_vector * v, const size_t i);
++
++#ifdef HAVE_INLINE
++
++INLINE_FUN
++double
++gsl_vector_get (const gsl_vector * v, const size_t i)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(i >= v->size))
++    {
++      GSL_ERROR_VAL ("index out of range", GSL_EINVAL, 0);
++    }
++#endif
++  return v->data[i * v->stride];
++}
++
++INLINE_FUN
++void
++gsl_vector_set (gsl_vector * v, const size_t i, double x)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(i >= v->size))
++    {
++      GSL_ERROR_VOID ("index out of range", GSL_EINVAL);
++    }
++#endif
++  v->data[i * v->stride] = x;
++}
++
++INLINE_FUN
++double *
++gsl_vector_ptr (gsl_vector * v, const size_t i)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(i >= v->size))
++    {
++      GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
++    }
++#endif
++  return (double *) (v->data + i * v->stride);
++}
++
++INLINE_FUN
++const double *
++gsl_vector_const_ptr (const gsl_vector * v, const size_t i)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(i >= v->size))
++    {
++      GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
++    }
++#endif
++  return (const double *) (v->data + i * v->stride);
++}
++#endif /* HAVE_INLINE */
++
++__END_DECLS
++
++#endif /* __GSL_VECTOR_DOUBLE_H__ */
++
++
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_long_double.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_long_double.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_long_double.h	(revision 14078)
+@@ -0,0 +1,50 @@
++/* sort/gsl_sort_long_double.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_SORT_LONG_DOUBLE_H__
++#define __GSL_SORT_LONG_DOUBLE_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_permutation.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++void gsl_sort_long_double (long double * data, const size_t stride, const size_t n);
++void gsl_sort_long_double_index (size_t * p, const long double * data, const size_t stride, const size_t n);
++
++int gsl_sort_long_double_smallest (long double * dest, const size_t k, const long double * src, const size_t stride, const size_t n);
++int gsl_sort_long_double_smallest_index (size_t * p, const size_t k, const long double * src, const size_t stride, const size_t n);
++
++int gsl_sort_long_double_largest (long double * dest, const size_t k, const long double * src, const size_t stride, const size_t n);
++int gsl_sort_long_double_largest_index (size_t * p, const size_t k, const long double * src, const size_t stride, const size_t n);
++
++__END_DECLS
++
++#endif /* __GSL_SORT_LONG_DOUBLE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_const_mksa.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_const_mksa.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_const_mksa.h	(revision 14078)
+@@ -0,0 +1,126 @@
++/* const/gsl_const_mksa.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
++ * 2006, 2007, 2008, 2009 Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_CONST_MKSA__
++#define __GSL_CONST_MKSA__
++
++#define GSL_CONST_MKSA_SPEED_OF_LIGHT (2.99792458e8) /* m / s */
++#define GSL_CONST_MKSA_GRAVITATIONAL_CONSTANT (6.673e-11) /* m^3 / kg s^2 */
++#define GSL_CONST_MKSA_PLANCKS_CONSTANT_H (6.62606896e-34) /* kg m^2 / s */
++#define GSL_CONST_MKSA_PLANCKS_CONSTANT_HBAR (1.05457162825e-34) /* kg m^2 / s */
++#define GSL_CONST_MKSA_ASTRONOMICAL_UNIT (1.49597870691e11) /* m */
++#define GSL_CONST_MKSA_LIGHT_YEAR (9.46053620707e15) /* m */
++#define GSL_CONST_MKSA_PARSEC (3.08567758135e16) /* m */
++#define GSL_CONST_MKSA_GRAV_ACCEL (9.80665e0) /* m / s^2 */
++#define GSL_CONST_MKSA_ELECTRON_VOLT (1.602176487e-19) /* kg m^2 / s^2 */
++#define GSL_CONST_MKSA_MASS_ELECTRON (9.10938188e-31) /* kg */
++#define GSL_CONST_MKSA_MASS_MUON (1.88353109e-28) /* kg */
++#define GSL_CONST_MKSA_MASS_PROTON (1.67262158e-27) /* kg */
++#define GSL_CONST_MKSA_MASS_NEUTRON (1.67492716e-27) /* kg */
++#define GSL_CONST_MKSA_RYDBERG (2.17987196968e-18) /* kg m^2 / s^2 */
++#define GSL_CONST_MKSA_BOLTZMANN (1.3806504e-23) /* kg m^2 / K s^2 */
++#define GSL_CONST_MKSA_MOLAR_GAS (8.314472e0) /* kg m^2 / K mol s^2 */
++#define GSL_CONST_MKSA_STANDARD_GAS_VOLUME (2.2710981e-2) /* m^3 / mol */
++#define GSL_CONST_MKSA_MINUTE (6e1) /* s */
++#define GSL_CONST_MKSA_HOUR (3.6e3) /* s */
++#define GSL_CONST_MKSA_DAY (8.64e4) /* s */
++#define GSL_CONST_MKSA_WEEK (6.048e5) /* s */
++#define GSL_CONST_MKSA_INCH (2.54e-2) /* m */
++#define GSL_CONST_MKSA_FOOT (3.048e-1) /* m */
++#define GSL_CONST_MKSA_YARD (9.144e-1) /* m */
++#define GSL_CONST_MKSA_MILE (1.609344e3) /* m */
++#define GSL_CONST_MKSA_NAUTICAL_MILE (1.852e3) /* m */
++#define GSL_CONST_MKSA_FATHOM (1.8288e0) /* m */
++#define GSL_CONST_MKSA_MIL (2.54e-5) /* m */
++#define GSL_CONST_MKSA_POINT (3.52777777778e-4) /* m */
++#define GSL_CONST_MKSA_TEXPOINT (3.51459803515e-4) /* m */
++#define GSL_CONST_MKSA_MICRON (1e-6) /* m */
++#define GSL_CONST_MKSA_ANGSTROM (1e-10) /* m */
++#define GSL_CONST_MKSA_HECTARE (1e4) /* m^2 */
++#define GSL_CONST_MKSA_ACRE (4.04685642241e3) /* m^2 */
++#define GSL_CONST_MKSA_BARN (1e-28) /* m^2 */
++#define GSL_CONST_MKSA_LITER (1e-3) /* m^3 */
++#define GSL_CONST_MKSA_US_GALLON (3.78541178402e-3) /* m^3 */
++#define GSL_CONST_MKSA_QUART (9.46352946004e-4) /* m^3 */
++#define GSL_CONST_MKSA_PINT (4.73176473002e-4) /* m^3 */
++#define GSL_CONST_MKSA_CUP (2.36588236501e-4) /* m^3 */
++#define GSL_CONST_MKSA_FLUID_OUNCE (2.95735295626e-5) /* m^3 */
++#define GSL_CONST_MKSA_TABLESPOON (1.47867647813e-5) /* m^3 */
++#define GSL_CONST_MKSA_TEASPOON (4.92892159375e-6) /* m^3 */
++#define GSL_CONST_MKSA_CANADIAN_GALLON (4.54609e-3) /* m^3 */
++#define GSL_CONST_MKSA_UK_GALLON (4.546092e-3) /* m^3 */
++#define GSL_CONST_MKSA_MILES_PER_HOUR (4.4704e-1) /* m / s */
++#define GSL_CONST_MKSA_KILOMETERS_PER_HOUR (2.77777777778e-1) /* m / s */
++#define GSL_CONST_MKSA_KNOT (5.14444444444e-1) /* m / s */
++#define GSL_CONST_MKSA_POUND_MASS (4.5359237e-1) /* kg */
++#define GSL_CONST_MKSA_OUNCE_MASS (2.8349523125e-2) /* kg */
++#define GSL_CONST_MKSA_TON (9.0718474e2) /* kg */
++#define GSL_CONST_MKSA_METRIC_TON (1e3) /* kg */
++#define GSL_CONST_MKSA_UK_TON (1.0160469088e3) /* kg */
++#define GSL_CONST_MKSA_TROY_OUNCE (3.1103475e-2) /* kg */
++#define GSL_CONST_MKSA_CARAT (2e-4) /* kg */
++#define GSL_CONST_MKSA_UNIFIED_ATOMIC_MASS (1.660538782e-27) /* kg */
++#define GSL_CONST_MKSA_GRAM_FORCE (9.80665e-3) /* kg m / s^2 */
++#define GSL_CONST_MKSA_POUND_FORCE (4.44822161526e0) /* kg m / s^2 */
++#define GSL_CONST_MKSA_KILOPOUND_FORCE (4.44822161526e3) /* kg m / s^2 */
++#define GSL_CONST_MKSA_POUNDAL (1.38255e-1) /* kg m / s^2 */
++#define GSL_CONST_MKSA_CALORIE (4.1868e0) /* kg m^2 / s^2 */
++#define GSL_CONST_MKSA_BTU (1.05505585262e3) /* kg m^2 / s^2 */
++#define GSL_CONST_MKSA_THERM (1.05506e8) /* kg m^2 / s^2 */
++#define GSL_CONST_MKSA_HORSEPOWER (7.457e2) /* kg m^2 / s^3 */
++#define GSL_CONST_MKSA_BAR (1e5) /* kg / m s^2 */
++#define GSL_CONST_MKSA_STD_ATMOSPHERE (1.01325e5) /* kg / m s^2 */
++#define GSL_CONST_MKSA_TORR (1.33322368421e2) /* kg / m s^2 */
++#define GSL_CONST_MKSA_METER_OF_MERCURY (1.33322368421e5) /* kg / m s^2 */
++#define GSL_CONST_MKSA_INCH_OF_MERCURY (3.38638815789e3) /* kg / m s^2 */
++#define GSL_CONST_MKSA_INCH_OF_WATER (2.490889e2) /* kg / m s^2 */
++#define GSL_CONST_MKSA_PSI (6.89475729317e3) /* kg / m s^2 */
++#define GSL_CONST_MKSA_POISE (1e-1) /* kg m^-1 s^-1 */
++#define GSL_CONST_MKSA_STOKES (1e-4) /* m^2 / s */
++#define GSL_CONST_MKSA_STILB (1e4) /* cd / m^2 */
++#define GSL_CONST_MKSA_LUMEN (1e0) /* cd sr */
++#define GSL_CONST_MKSA_LUX (1e0) /* cd sr / m^2 */
++#define GSL_CONST_MKSA_PHOT (1e4) /* cd sr / m^2 */
++#define GSL_CONST_MKSA_FOOTCANDLE (1.076e1) /* cd sr / m^2 */
++#define GSL_CONST_MKSA_LAMBERT (1e4) /* cd sr / m^2 */
++#define GSL_CONST_MKSA_FOOTLAMBERT (1.07639104e1) /* cd sr / m^2 */
++#define GSL_CONST_MKSA_CURIE (3.7e10) /* 1 / s */
++#define GSL_CONST_MKSA_ROENTGEN (2.58e-4) /* A s / kg */
++#define GSL_CONST_MKSA_RAD (1e-2) /* m^2 / s^2 */
++#define GSL_CONST_MKSA_SOLAR_MASS (1.98892e30) /* kg */
++#define GSL_CONST_MKSA_BOHR_RADIUS (5.291772083e-11) /* m */
++#define GSL_CONST_MKSA_NEWTON (1e0) /* kg m / s^2 */
++#define GSL_CONST_MKSA_DYNE (1e-5) /* kg m / s^2 */
++#define GSL_CONST_MKSA_JOULE (1e0) /* kg m^2 / s^2 */
++#define GSL_CONST_MKSA_ERG (1e-7) /* kg m^2 / s^2 */
++#define GSL_CONST_MKSA_STEFAN_BOLTZMANN_CONSTANT (5.67040047374e-8) /* kg / K^4 s^3 */
++#define GSL_CONST_MKSA_THOMSON_CROSS_SECTION (6.65245893699e-29) /* m^2 */
++#define GSL_CONST_MKSA_BOHR_MAGNETON (9.27400899e-24) /* A m^2 */
++#define GSL_CONST_MKSA_NUCLEAR_MAGNETON (5.05078317e-27) /* A m^2 */
++#define GSL_CONST_MKSA_ELECTRON_MAGNETIC_MOMENT (9.28476362e-24) /* A m^2 */
++#define GSL_CONST_MKSA_PROTON_MAGNETIC_MOMENT (1.410606633e-26) /* A m^2 */
++#define GSL_CONST_MKSA_FARADAY (9.64853429775e4) /* A s / mol */
++#define GSL_CONST_MKSA_ELECTRON_CHARGE (1.602176487e-19) /* A s */
++#define GSL_CONST_MKSA_VACUUM_PERMITTIVITY (8.854187817e-12) /* A^2 s^4 / kg m^3 */
++#define GSL_CONST_MKSA_VACUUM_PERMEABILITY (1.25663706144e-6) /* kg m / A^2 s^2 */
++#define GSL_CONST_MKSA_DEBYE (3.33564095198e-30) /* A s^2 / m^2 */
++#define GSL_CONST_MKSA_GAUSS (1e-4) /* kg / A s^2 */
++
++#endif /* __GSL_CONST_MKSA__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_uint.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_uint.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_uint.h	(revision 14078)
+@@ -0,0 +1,350 @@
++/* matrix/gsl_matrix_uint.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_MATRIX_UINT_H__
++#define __GSL_MATRIX_UINT_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_types.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_inline.h>
++#include <gsl/gsl_check_range.h>
++#include <gsl/gsl_vector_uint.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++typedef struct 
++{
++  size_t size1;
++  size_t size2;
++  size_t tda;
++  unsigned int * data;
++  gsl_block_uint * block;
++  int owner;
++} gsl_matrix_uint;
++
++typedef struct
++{
++  gsl_matrix_uint matrix;
++} _gsl_matrix_uint_view;
++
++typedef _gsl_matrix_uint_view gsl_matrix_uint_view;
++
++typedef struct
++{
++  gsl_matrix_uint matrix;
++} _gsl_matrix_uint_const_view;
++
++typedef const _gsl_matrix_uint_const_view gsl_matrix_uint_const_view;
++
++/* Allocation */
++
++gsl_matrix_uint * 
++gsl_matrix_uint_alloc (const size_t n1, const size_t n2);
++
++gsl_matrix_uint * 
++gsl_matrix_uint_calloc (const size_t n1, const size_t n2);
++
++gsl_matrix_uint * 
++gsl_matrix_uint_alloc_from_block (gsl_block_uint * b, 
++                                   const size_t offset, 
++                                   const size_t n1, 
++                                   const size_t n2, 
++                                   const size_t d2);
++
++gsl_matrix_uint * 
++gsl_matrix_uint_alloc_from_matrix (gsl_matrix_uint * m,
++                                    const size_t k1, 
++                                    const size_t k2,
++                                    const size_t n1, 
++                                    const size_t n2);
++
++gsl_vector_uint * 
++gsl_vector_uint_alloc_row_from_matrix (gsl_matrix_uint * m,
++                                        const size_t i);
++
++gsl_vector_uint * 
++gsl_vector_uint_alloc_col_from_matrix (gsl_matrix_uint * m,
++                                        const size_t j);
++
++void gsl_matrix_uint_free (gsl_matrix_uint * m);
++
++/* Views */
++
++_gsl_matrix_uint_view 
++gsl_matrix_uint_submatrix (gsl_matrix_uint * m, 
++                            const size_t i, const size_t j, 
++                            const size_t n1, const size_t n2);
++
++_gsl_vector_uint_view 
++gsl_matrix_uint_row (gsl_matrix_uint * m, const size_t i);
++
++_gsl_vector_uint_view 
++gsl_matrix_uint_column (gsl_matrix_uint * m, const size_t j);
++
++_gsl_vector_uint_view 
++gsl_matrix_uint_diagonal (gsl_matrix_uint * m);
++
++_gsl_vector_uint_view 
++gsl_matrix_uint_subdiagonal (gsl_matrix_uint * m, const size_t k);
++
++_gsl_vector_uint_view 
++gsl_matrix_uint_superdiagonal (gsl_matrix_uint * m, const size_t k);
++
++_gsl_vector_uint_view
++gsl_matrix_uint_subrow (gsl_matrix_uint * m, const size_t i,
++                         const size_t offset, const size_t n);
++
++_gsl_vector_uint_view
++gsl_matrix_uint_subcolumn (gsl_matrix_uint * m, const size_t j,
++                            const size_t offset, const size_t n);
++
++_gsl_matrix_uint_view
++gsl_matrix_uint_view_array (unsigned int * base,
++                             const size_t n1, 
++                             const size_t n2);
++
++_gsl_matrix_uint_view
++gsl_matrix_uint_view_array_with_tda (unsigned int * base, 
++                                      const size_t n1, 
++                                      const size_t n2,
++                                      const size_t tda);
++
++
++_gsl_matrix_uint_view
++gsl_matrix_uint_view_vector (gsl_vector_uint * v,
++                              const size_t n1, 
++                              const size_t n2);
++
++_gsl_matrix_uint_view
++gsl_matrix_uint_view_vector_with_tda (gsl_vector_uint * v,
++                                       const size_t n1, 
++                                       const size_t n2,
++                                       const size_t tda);
++
++
++_gsl_matrix_uint_const_view 
++gsl_matrix_uint_const_submatrix (const gsl_matrix_uint * m, 
++                                  const size_t i, const size_t j, 
++                                  const size_t n1, const size_t n2);
++
++_gsl_vector_uint_const_view 
++gsl_matrix_uint_const_row (const gsl_matrix_uint * m, 
++                            const size_t i);
++
++_gsl_vector_uint_const_view 
++gsl_matrix_uint_const_column (const gsl_matrix_uint * m, 
++                               const size_t j);
++
++_gsl_vector_uint_const_view
++gsl_matrix_uint_const_diagonal (const gsl_matrix_uint * m);
++
++_gsl_vector_uint_const_view 
++gsl_matrix_uint_const_subdiagonal (const gsl_matrix_uint * m, 
++                                    const size_t k);
++
++_gsl_vector_uint_const_view 
++gsl_matrix_uint_const_superdiagonal (const gsl_matrix_uint * m, 
++                                      const size_t k);
++
++_gsl_vector_uint_const_view
++gsl_matrix_uint_const_subrow (const gsl_matrix_uint * m, const size_t i,
++                               const size_t offset, const size_t n);
++
++_gsl_vector_uint_const_view
++gsl_matrix_uint_const_subcolumn (const gsl_matrix_uint * m, const size_t j,
++                                  const size_t offset, const size_t n);
++
++_gsl_matrix_uint_const_view
++gsl_matrix_uint_const_view_array (const unsigned int * base,
++                                   const size_t n1, 
++                                   const size_t n2);
++
++_gsl_matrix_uint_const_view
++gsl_matrix_uint_const_view_array_with_tda (const unsigned int * base, 
++                                            const size_t n1, 
++                                            const size_t n2,
++                                            const size_t tda);
++
++_gsl_matrix_uint_const_view
++gsl_matrix_uint_const_view_vector (const gsl_vector_uint * v,
++                                    const size_t n1, 
++                                    const size_t n2);
++
++_gsl_matrix_uint_const_view
++gsl_matrix_uint_const_view_vector_with_tda (const gsl_vector_uint * v,
++                                             const size_t n1, 
++                                             const size_t n2,
++                                             const size_t tda);
++
++/* Operations */
++
++void gsl_matrix_uint_set_zero (gsl_matrix_uint * m);
++void gsl_matrix_uint_set_identity (gsl_matrix_uint * m);
++void gsl_matrix_uint_set_all (gsl_matrix_uint * m, unsigned int x);
++
++int gsl_matrix_uint_fread (FILE * stream, gsl_matrix_uint * m) ;
++int gsl_matrix_uint_fwrite (FILE * stream, const gsl_matrix_uint * m) ;
++int gsl_matrix_uint_fscanf (FILE * stream, gsl_matrix_uint * m);
++int gsl_matrix_uint_fprintf (FILE * stream, const gsl_matrix_uint * m, const char * format);
++ 
++int gsl_matrix_uint_memcpy(gsl_matrix_uint * dest, const gsl_matrix_uint * src);
++int gsl_matrix_uint_swap(gsl_matrix_uint * m1, gsl_matrix_uint * m2);
++
++int gsl_matrix_uint_swap_rows(gsl_matrix_uint * m, const size_t i, const size_t j);
++int gsl_matrix_uint_swap_columns(gsl_matrix_uint * m, const size_t i, const size_t j);
++int gsl_matrix_uint_swap_rowcol(gsl_matrix_uint * m, const size_t i, const size_t j);
++int gsl_matrix_uint_transpose (gsl_matrix_uint * m);
++int gsl_matrix_uint_transpose_memcpy (gsl_matrix_uint * dest, const gsl_matrix_uint * src);
++
++unsigned int gsl_matrix_uint_max (const gsl_matrix_uint * m);
++unsigned int gsl_matrix_uint_min (const gsl_matrix_uint * m);
++void gsl_matrix_uint_minmax (const gsl_matrix_uint * m, unsigned int * min_out, unsigned int * max_out);
++
++void gsl_matrix_uint_max_index (const gsl_matrix_uint * m, size_t * imax, size_t *jmax);
++void gsl_matrix_uint_min_index (const gsl_matrix_uint * m, size_t * imin, size_t *jmin);
++void gsl_matrix_uint_minmax_index (const gsl_matrix_uint * m, size_t * imin, size_t * jmin, size_t * imax, size_t * jmax);
++
++int gsl_matrix_uint_equal (const gsl_matrix_uint * a, const gsl_matrix_uint * b);
++
++int gsl_matrix_uint_isnull (const gsl_matrix_uint * m);
++int gsl_matrix_uint_ispos (const gsl_matrix_uint * m);
++int gsl_matrix_uint_isneg (const gsl_matrix_uint * m);
++int gsl_matrix_uint_isnonneg (const gsl_matrix_uint * m);
++
++int gsl_matrix_uint_add (gsl_matrix_uint * a, const gsl_matrix_uint * b);
++int gsl_matrix_uint_sub (gsl_matrix_uint * a, const gsl_matrix_uint * b);
++int gsl_matrix_uint_mul_elements (gsl_matrix_uint * a, const gsl_matrix_uint * b);
++int gsl_matrix_uint_div_elements (gsl_matrix_uint * a, const gsl_matrix_uint * b);
++int gsl_matrix_uint_scale (gsl_matrix_uint * a, const double x);
++int gsl_matrix_uint_add_constant (gsl_matrix_uint * a, const double x);
++int gsl_matrix_uint_add_diagonal (gsl_matrix_uint * a, const double x);
++
++/***********************************************************************/
++/* The functions below are obsolete                                    */
++/***********************************************************************/
++int gsl_matrix_uint_get_row(gsl_vector_uint * v, const gsl_matrix_uint * m, const size_t i);
++int gsl_matrix_uint_get_col(gsl_vector_uint * v, const gsl_matrix_uint * m, const size_t j);
++int gsl_matrix_uint_set_row(gsl_matrix_uint * m, const size_t i, const gsl_vector_uint * v);
++int gsl_matrix_uint_set_col(gsl_matrix_uint * m, const size_t j, const gsl_vector_uint * v);
++/***********************************************************************/
++
++/* inline functions if you are using GCC */
++
++INLINE_DECL unsigned int   gsl_matrix_uint_get(const gsl_matrix_uint * m, const size_t i, const size_t j);
++INLINE_DECL void    gsl_matrix_uint_set(gsl_matrix_uint * m, const size_t i, const size_t j, const unsigned int x);
++INLINE_DECL unsigned int * gsl_matrix_uint_ptr(gsl_matrix_uint * m, const size_t i, const size_t j);
++INLINE_DECL const unsigned int * gsl_matrix_uint_const_ptr(const gsl_matrix_uint * m, const size_t i, const size_t j);
++
++#ifdef HAVE_INLINE
++INLINE_FUN 
++unsigned int
++gsl_matrix_uint_get(const gsl_matrix_uint * m, const size_t i, const size_t j)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(1)) 
++    {
++      if (i >= m->size1)
++        {
++          GSL_ERROR_VAL("first index out of range", GSL_EINVAL, 0) ;
++        }
++      else if (j >= m->size2)
++        {
++          GSL_ERROR_VAL("second index out of range", GSL_EINVAL, 0) ;
++        }
++    }
++#endif
++  return m->data[i * m->tda + j] ;
++} 
++
++INLINE_FUN 
++void
++gsl_matrix_uint_set(gsl_matrix_uint * m, const size_t i, const size_t j, const unsigned int x)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(1)) 
++    {
++      if (i >= m->size1)
++        {
++          GSL_ERROR_VOID("first index out of range", GSL_EINVAL) ;
++        }
++      else if (j >= m->size2)
++        {
++          GSL_ERROR_VOID("second index out of range", GSL_EINVAL) ;
++        }
++    }
++#endif
++  m->data[i * m->tda + j] = x ;
++}
++
++INLINE_FUN 
++unsigned int *
++gsl_matrix_uint_ptr(gsl_matrix_uint * m, const size_t i, const size_t j)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(1)) 
++    {
++      if (i >= m->size1)
++        {
++          GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
++        }
++      else if (j >= m->size2)
++        {
++          GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
++        }
++    }
++#endif
++  return (unsigned int *) (m->data + (i * m->tda + j)) ;
++} 
++
++INLINE_FUN 
++const unsigned int *
++gsl_matrix_uint_const_ptr(const gsl_matrix_uint * m, const size_t i, const size_t j)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(1)) 
++    {
++      if (i >= m->size1)
++        {
++          GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
++        }
++      else if (j >= m->size2)
++        {
++          GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
++        }
++    }
++#endif
++  return (const unsigned int *) (m->data + (i * m->tda + j)) ;
++} 
++
++#endif
++
++__END_DECLS
++
++#endif /* __GSL_MATRIX_UINT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_randist.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_randist.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_randist.h	(revision 14078)
+@@ -0,0 +1,185 @@
++/* randist/gsl_randist.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 James Theiler, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_RANDIST_H__
++#define __GSL_RANDIST_H__
++#include <gsl/gsl_rng.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++unsigned int gsl_ran_bernoulli (const gsl_rng * r, double p);
++double gsl_ran_bernoulli_pdf (const unsigned int k, double p);
++
++double gsl_ran_beta (const gsl_rng * r, const double a, const double b);
++double gsl_ran_beta_pdf (const double x, const double a, const double b);
++
++unsigned int gsl_ran_binomial (const gsl_rng * r, double p, unsigned int n);
++unsigned int gsl_ran_binomial_knuth (const gsl_rng * r, double p, unsigned int n);
++unsigned int gsl_ran_binomial_tpe (const gsl_rng * r, double p, unsigned int n);
++double gsl_ran_binomial_pdf (const unsigned int k, const double p, const unsigned int n);
++
++double gsl_ran_exponential (const gsl_rng * r, const double mu);
++double gsl_ran_exponential_pdf (const double x, const double mu);
++
++double gsl_ran_exppow (const gsl_rng * r, const double a, const double b);
++double gsl_ran_exppow_pdf (const double x, const double a, const double b);
++
++double gsl_ran_cauchy (const gsl_rng * r, const double a);
++double gsl_ran_cauchy_pdf (const double x, const double a);
++
++double gsl_ran_chisq (const gsl_rng * r, const double nu);
++double gsl_ran_chisq_pdf (const double x, const double nu);
++
++void gsl_ran_dirichlet (const gsl_rng * r, const size_t K, const double alpha[], double theta[]);
++double gsl_ran_dirichlet_pdf (const size_t K, const double alpha[], const double theta[]);
++double gsl_ran_dirichlet_lnpdf (const size_t K, const double alpha[], const double theta[]);
++
++double gsl_ran_erlang (const gsl_rng * r, const double a, const double n);
++double gsl_ran_erlang_pdf (const double x, const double a, const double n);
++
++double gsl_ran_fdist (const gsl_rng * r, const double nu1, const double nu2);
++double gsl_ran_fdist_pdf (const double x, const double nu1, const double nu2);
++
++double gsl_ran_flat (const gsl_rng * r, const double a, const double b);
++double gsl_ran_flat_pdf (double x, const double a, const double b);
++
++double gsl_ran_gamma (const gsl_rng * r, const double a, const double b);
++double gsl_ran_gamma_int (const gsl_rng * r, const unsigned int a);
++double gsl_ran_gamma_pdf (const double x, const double a, const double b);
++double gsl_ran_gamma_mt (const gsl_rng * r, const double a, const double b);
++double gsl_ran_gamma_knuth (const gsl_rng * r, const double a, const double b);
++
++double gsl_ran_gaussian (const gsl_rng * r, const double sigma);
++double gsl_ran_gaussian_ratio_method (const gsl_rng * r, const double sigma);
++double gsl_ran_gaussian_ziggurat (const gsl_rng * r, const double sigma);
++double gsl_ran_gaussian_pdf (const double x, const double sigma);
++
++double gsl_ran_ugaussian (const gsl_rng * r);
++double gsl_ran_ugaussian_ratio_method (const gsl_rng * r);
++double gsl_ran_ugaussian_pdf (const double x);
++
++double gsl_ran_gaussian_tail (const gsl_rng * r, const double a, const double sigma);
++double gsl_ran_gaussian_tail_pdf (const double x, const double a, const double sigma);
++
++double gsl_ran_ugaussian_tail (const gsl_rng * r, const double a);
++double gsl_ran_ugaussian_tail_pdf (const double x, const double a);
++
++void gsl_ran_bivariate_gaussian (const gsl_rng * r, double sigma_x, double sigma_y, double rho, double *x, double *y);
++double gsl_ran_bivariate_gaussian_pdf (const double x, const double y, const double sigma_x, const double sigma_y, const double rho);
++
++double gsl_ran_landau (const gsl_rng * r);
++double gsl_ran_landau_pdf (const double x);
++
++unsigned int gsl_ran_geometric (const gsl_rng * r, const double p);
++double gsl_ran_geometric_pdf (const unsigned int k, const double p);
++
++unsigned int gsl_ran_hypergeometric (const gsl_rng * r, unsigned int n1, unsigned int n2, unsigned int t);
++double gsl_ran_hypergeometric_pdf (const unsigned int k, const unsigned int n1, const unsigned int n2, unsigned int t);
++
++double gsl_ran_gumbel1 (const gsl_rng * r, const double a, const double b);
++double gsl_ran_gumbel1_pdf (const double x, const double a, const double b);
++
++double gsl_ran_gumbel2 (const gsl_rng * r, const double a, const double b);
++double gsl_ran_gumbel2_pdf (const double x, const double a, const double b);
++
++double gsl_ran_logistic (const gsl_rng * r, const double a);
++double gsl_ran_logistic_pdf (const double x, const double a);
++
++double gsl_ran_lognormal (const gsl_rng * r, const double zeta, const double sigma);
++double gsl_ran_lognormal_pdf (const double x, const double zeta, const double sigma);
++
++unsigned int gsl_ran_logarithmic (const gsl_rng * r, const double p);
++double gsl_ran_logarithmic_pdf (const unsigned int k, const double p);
++
++void gsl_ran_multinomial (const gsl_rng * r, const size_t K,
++                          const unsigned int N, const double p[],
++                          unsigned int n[] );
++double gsl_ran_multinomial_pdf (const size_t K,
++                                const double p[], const unsigned int n[] );
++double gsl_ran_multinomial_lnpdf (const size_t K,
++                           const double p[], const unsigned int n[] );
++
++
++unsigned int gsl_ran_negative_binomial (const gsl_rng * r, double p, double n);
++double gsl_ran_negative_binomial_pdf (const unsigned int k, const double p, double n);
++
++unsigned int gsl_ran_pascal (const gsl_rng * r, double p, unsigned int n);
++double gsl_ran_pascal_pdf (const unsigned int k, const double p, unsigned int n);
++
++double gsl_ran_pareto (const gsl_rng * r, double a, const double b);
++double gsl_ran_pareto_pdf (const double x, const double a, const double b);
++
++unsigned int gsl_ran_poisson (const gsl_rng * r, double mu);
++void gsl_ran_poisson_array (const gsl_rng * r, size_t n, unsigned int array[],
++                            double mu);
++double gsl_ran_poisson_pdf (const unsigned int k, const double mu);
++
++double gsl_ran_rayleigh (const gsl_rng * r, const double sigma);
++double gsl_ran_rayleigh_pdf (const double x, const double sigma);
++
++double gsl_ran_rayleigh_tail (const gsl_rng * r, const double a, const double sigma);
++double gsl_ran_rayleigh_tail_pdf (const double x, const double a, const double sigma);
++
++double gsl_ran_tdist (const gsl_rng * r, const double nu);
++double gsl_ran_tdist_pdf (const double x, const double nu);
++
++double gsl_ran_laplace (const gsl_rng * r, const double a);
++double gsl_ran_laplace_pdf (const double x, const double a);
++
++double gsl_ran_levy (const gsl_rng * r, const double c, const double alpha);
++double gsl_ran_levy_skew (const gsl_rng * r, const double c, const double alpha, const double beta);
++
++double gsl_ran_weibull (const gsl_rng * r, const double a, const double b);
++double gsl_ran_weibull_pdf (const double x, const double a, const double b);
++
++void gsl_ran_dir_2d (const gsl_rng * r, double * x, double * y);
++void gsl_ran_dir_2d_trig_method (const gsl_rng * r, double * x, double * y);
++void gsl_ran_dir_3d (const gsl_rng * r, double * x, double * y, double * z);
++void gsl_ran_dir_nd (const gsl_rng * r, size_t n, double * x);
++
++void gsl_ran_shuffle (const gsl_rng * r, void * base, size_t nmembm, size_t size);
++int gsl_ran_choose (const gsl_rng * r, void * dest, size_t k, void * src, size_t n, size_t size) ;
++void gsl_ran_sample (const gsl_rng * r, void * dest, size_t k, void * src, size_t n, size_t size) ;
++
++
++typedef struct {                /* struct for Walker algorithm */
++    size_t K;
++    size_t *A;
++    double *F;
++} gsl_ran_discrete_t;
++
++gsl_ran_discrete_t * gsl_ran_discrete_preproc (size_t K, const double *P);
++void gsl_ran_discrete_free(gsl_ran_discrete_t *g);
++size_t gsl_ran_discrete (const gsl_rng *r, const gsl_ran_discrete_t *g);
++double gsl_ran_discrete_pdf (size_t k, const gsl_ran_discrete_t *g);
++
++
++__END_DECLS
++
++#endif /* __GSL_RANDIST_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sum.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sum.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sum.h	(revision 14078)
+@@ -0,0 +1,162 @@
++/* sum/gsl_sum.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++/* Author:  G. Jungman */
++
++
++#ifndef __GSL_SUM_H__
++#define __GSL_SUM_H__
++
++#include <stdlib.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS          /* empty */
++# define __END_DECLS            /* empty */
++#endif
++
++__BEGIN_DECLS
++
++/*  Workspace for Levin U Transform with error estimation,
++ *   
++ *   size        = number of terms the workspace can handle
++ *   sum_plain   = simple sum of series
++ *   q_num       = backward diagonal of numerator; length = size
++ *   q_den       = backward diagonal of denominator; length = size
++ *   dq_num      = table of numerator derivatives; length = size**2
++ *   dq_den      = table of denominator derivatives; length = size**2
++ *   dsum        = derivative of sum wrt term i; length = size
++ */
++
++typedef struct
++{
++  size_t size;
++  size_t i;                     /* position in array */
++  size_t terms_used;            /* number of calls */
++  double sum_plain;
++  double *q_num;
++  double *q_den;
++  double *dq_num;
++  double *dq_den;
++  double *dsum;
++}
++gsl_sum_levin_u_workspace;
++
++gsl_sum_levin_u_workspace *gsl_sum_levin_u_alloc (size_t n);
++void gsl_sum_levin_u_free (gsl_sum_levin_u_workspace * w);
++
++/* Basic Levin-u acceleration method.
++ *
++ *   array       = array of series elements
++ *   n           = size of array
++ *   sum_accel   = result of summation acceleration
++ *   err         = estimated error   
++ *
++ * See [Fessler et al., ACM TOMS 9, 346 (1983) and TOMS-602]
++ */
++
++int gsl_sum_levin_u_accel (const double *array,
++                           const size_t n,
++                           gsl_sum_levin_u_workspace * w,
++                           double *sum_accel, double *abserr);
++
++/* Basic Levin-u acceleration method with constraints on the terms
++ * used,
++ *
++ *   array       = array of series elements
++ *   n           = size of array
++ *   min_terms   = minimum number of terms to sum
++ *   max_terms   = maximum number of terms to sum
++ *   sum_accel   = result of summation acceleration
++ *   err         = estimated error   
++ *
++ * See [Fessler et al., ACM TOMS 9, 346 (1983) and TOMS-602] 
++ */
++
++int gsl_sum_levin_u_minmax (const double *array,
++                            const size_t n,
++                            const size_t min_terms,
++                            const size_t max_terms,
++                            gsl_sum_levin_u_workspace * w,
++                            double *sum_accel, double *abserr);
++
++/* Basic Levin-u step w/o reference to the array of terms.
++ * We only need to specify the value of the current term
++ * to execute the step. See TOMS-745.
++ *
++ * sum = t0 + ... + t_{n-1} + term;  term = t_{n}
++ *
++ *   term   = value of the series term to be added
++ *   n      = position of term in series (starting from 0)
++ *   sum_accel = result of summation acceleration
++ *   sum_plain = simple sum of series
++ */
++
++int
++gsl_sum_levin_u_step (const double term,
++                      const size_t n,
++                      const size_t nmax,
++                      gsl_sum_levin_u_workspace * w, 
++                      double *sum_accel);
++
++/* The following functions perform the same calculation without
++   estimating the errors. They require O(N) storage instead of O(N^2).
++   This may be useful for summing many similar series where the size
++   of the error has already been estimated reliably and is not
++   expected to change.  */
++
++typedef struct
++{
++  size_t size;
++  size_t i;                     /* position in array */
++  size_t terms_used;            /* number of calls */
++  double sum_plain;
++  double *q_num;
++  double *q_den;
++  double *dsum;
++}
++gsl_sum_levin_utrunc_workspace;
++
++gsl_sum_levin_utrunc_workspace *gsl_sum_levin_utrunc_alloc (size_t n);
++void gsl_sum_levin_utrunc_free (gsl_sum_levin_utrunc_workspace * w);
++
++int gsl_sum_levin_utrunc_accel (const double *array,
++                                const size_t n,
++                                gsl_sum_levin_utrunc_workspace * w,
++                                double *sum_accel, double *abserr_trunc);
++
++int gsl_sum_levin_utrunc_minmax (const double *array,
++                                 const size_t n,
++                                 const size_t min_terms,
++                                 const size_t max_terms,
++                                 gsl_sum_levin_utrunc_workspace * w,
++                                 double *sum_accel, double *abserr_trunc);
++
++int gsl_sum_levin_utrunc_step (const double term,
++                               const size_t n,
++                               gsl_sum_levin_utrunc_workspace * w, 
++                               double *sum_accel);
++
++__END_DECLS
++
++#endif /* __GSL_SUM_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_long.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_long.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_long.h	(revision 14078)
+@@ -0,0 +1,50 @@
++/* sort/gsl_sort_long.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_SORT_LONG_H__
++#define __GSL_SORT_LONG_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_permutation.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++void gsl_sort_long (long * data, const size_t stride, const size_t n);
++void gsl_sort_long_index (size_t * p, const long * data, const size_t stride, const size_t n);
++
++int gsl_sort_long_smallest (long * dest, const size_t k, const long * src, const size_t stride, const size_t n);
++int gsl_sort_long_smallest_index (size_t * p, const size_t k, const long * src, const size_t stride, const size_t n);
++
++int gsl_sort_long_largest (long * dest, const size_t k, const long * src, const size_t stride, const size_t n);
++int gsl_sort_long_largest_index (size_t * p, const size_t k, const long * src, const size_t stride, const size_t n);
++
++__END_DECLS
++
++#endif /* __GSL_SORT_LONG_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_qrng.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_qrng.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_qrng.h	(revision 14078)
+@@ -0,0 +1,111 @@
++/* Author: G. Jungman + modifications from O. Teytaud
++ */
++#ifndef __GSL_QRNG_H__
++#define __GSL_QRNG_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_types.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_inline.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++
++/* Once again, more inane C-style OOP... kill me now. */
++
++/* Structure describing a type of generator.
++ */
++typedef struct
++{
++  const char * name;
++  unsigned int max_dimension;
++  size_t (*state_size) (unsigned int dimension);
++  int (*init_state) (void * state, unsigned int dimension);
++  int (*get) (void * state, unsigned int dimension, double x[]);
++}
++gsl_qrng_type;
++
++/* Structure describing a generator instance of a
++ * specified type, with generator-specific state info
++ * and dimension-specific info.
++ */
++typedef struct
++{
++  const gsl_qrng_type * type;
++  unsigned int dimension;
++  size_t state_size;
++  void * state;
++}
++gsl_qrng;
++
++
++/* Supported generator types.
++ */
++GSL_VAR const gsl_qrng_type * gsl_qrng_niederreiter_2;
++GSL_VAR const gsl_qrng_type * gsl_qrng_sobol;
++GSL_VAR const gsl_qrng_type * gsl_qrng_halton;
++GSL_VAR const gsl_qrng_type * gsl_qrng_reversehalton;
++
++
++/* Allocate and initialize a generator
++ * of the specified type, in the given
++ * space dimension.
++ */
++gsl_qrng * gsl_qrng_alloc (const gsl_qrng_type * T, unsigned int dimension);
++
++
++/* Copy a generator. */
++int gsl_qrng_memcpy (gsl_qrng * dest, const gsl_qrng * src);
++
++
++/* Clone a generator. */
++gsl_qrng * gsl_qrng_clone (const gsl_qrng * q);
++
++
++/* Free a generator. */
++void gsl_qrng_free (gsl_qrng * q);
++
++
++/* Intialize a generator. */
++void gsl_qrng_init (gsl_qrng * q);
++
++
++/* Get the standardized name of the generator. */
++const char * gsl_qrng_name (const gsl_qrng * q);
++
++
++/* ISN'T THIS CONFUSING FOR PEOPLE?
++  WHAT IF SOMEBODY TRIES TO COPY WITH THIS ???
++  */
++size_t gsl_qrng_size (const gsl_qrng * q);
++
++
++void * gsl_qrng_state (const gsl_qrng * q);
++
++
++/* Retrieve next vector in sequence. */
++INLINE_DECL int gsl_qrng_get (const gsl_qrng * q, double x[]);
++
++#ifdef HAVE_INLINE
++INLINE_FUN int gsl_qrng_get (const gsl_qrng * q, double x[])
++{
++  return (q->type->get) (q->state, q->dimension, x);
++}
++
++#endif /* HAVE_INLINE */
++
++
++__END_DECLS
++
++
++#endif /* !__GSL_QRNG_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_ulong.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_ulong.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_ulong.h	(revision 14078)
+@@ -0,0 +1,45 @@
++/* permutation/gsl_permute_vector_ulong.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_PERMUTE_VECTOR_ULONG_H__
++#define __GSL_PERMUTE_VECTOR_ULONG_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_permutation.h>
++#include <gsl/gsl_vector_ulong.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++int gsl_permute_vector_ulong (const gsl_permutation * p, gsl_vector_ulong * v);
++int gsl_permute_vector_ulong_inverse (const gsl_permutation * p, gsl_vector_ulong * v);
++
++__END_DECLS
++
++#endif /* __GSL_PERMUTE_VECTOR_ULONG_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_diff.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_diff.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_diff.h	(revision 14078)
+@@ -0,0 +1,52 @@
++/* diff/gsl_diff.h
++ * 
++ * Copyright (C) 2000 David Morrison
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_DIFF_H__
++#define __GSL_DIFF_H__
++#include <gsl/gsl_math.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++#ifndef GSL_DISABLE_DEPRECATED
++int gsl_diff_central (const gsl_function *f,
++                      double x,
++                      double *result, double *abserr);
++
++int gsl_diff_backward (const gsl_function *f,
++                       double x,
++                       double *result, double *abserr);
++
++int gsl_diff_forward (const gsl_function *f,
++                      double x,
++                      double *result, double *abserr);
++#endif
++
++__END_DECLS
++
++#endif /* __GSL_DIFF_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_long.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_long.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_long.h	(revision 14078)
+@@ -0,0 +1,65 @@
++/* block/gsl_block_long.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_BLOCK_LONG_H__
++#define __GSL_BLOCK_LONG_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_errno.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++struct gsl_block_long_struct
++{
++  size_t size;
++  long *data;
++};
++
++typedef struct gsl_block_long_struct gsl_block_long;
++
++gsl_block_long *gsl_block_long_alloc (const size_t n);
++gsl_block_long *gsl_block_long_calloc (const size_t n);
++void gsl_block_long_free (gsl_block_long * b);
++
++int gsl_block_long_fread (FILE * stream, gsl_block_long * b);
++int gsl_block_long_fwrite (FILE * stream, const gsl_block_long * b);
++int gsl_block_long_fscanf (FILE * stream, gsl_block_long * b);
++int gsl_block_long_fprintf (FILE * stream, const gsl_block_long * b, const char *format);
++
++int gsl_block_long_raw_fread (FILE * stream, long * b, const size_t n, const size_t stride);
++int gsl_block_long_raw_fwrite (FILE * stream, const long * b, const size_t n, const size_t stride);
++int gsl_block_long_raw_fscanf (FILE * stream, long * b, const size_t n, const size_t stride);
++int gsl_block_long_raw_fprintf (FILE * stream, const long * b, const size_t n, const size_t stride, const char *format);
++
++size_t gsl_block_long_size (const gsl_block_long * b);
++long * gsl_block_long_data (const gsl_block_long * b);
++
++__END_DECLS
++
++#endif /* __GSL_BLOCK_LONG_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_uchar.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_uchar.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_uchar.h	(revision 14078)
+@@ -0,0 +1,79 @@
++/* statistics/gsl_statistics_uchar.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_STATISTICS_UCHAR_H__
++#define __GSL_STATISTICS_UCHAR_H__
++
++#include <stddef.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++double gsl_stats_uchar_mean (const unsigned char data[], const size_t stride, const size_t n);
++double gsl_stats_uchar_variance (const unsigned char data[], const size_t stride, const size_t n);
++double gsl_stats_uchar_sd (const unsigned char data[], const size_t stride, const size_t n);
++double gsl_stats_uchar_variance_with_fixed_mean (const unsigned char data[], const size_t stride, const size_t n, const double mean);
++double gsl_stats_uchar_sd_with_fixed_mean (const unsigned char data[], const size_t stride, const size_t n, const double mean);
++double gsl_stats_uchar_tss (const unsigned char data[], const size_t stride, const size_t n);
++double gsl_stats_uchar_tss_m (const unsigned char data[], const size_t stride, const size_t n, const double mean);
++
++double gsl_stats_uchar_absdev (const unsigned char data[], const size_t stride, const size_t n);
++double gsl_stats_uchar_skew (const unsigned char data[], const size_t stride, const size_t n);
++double gsl_stats_uchar_kurtosis (const unsigned char data[], const size_t stride, const size_t n);
++double gsl_stats_uchar_lag1_autocorrelation (const unsigned char data[], const size_t stride, const size_t n);
++
++double gsl_stats_uchar_covariance (const unsigned char data1[], const size_t stride1,const unsigned char data2[], const size_t stride2, const size_t n);
++double gsl_stats_uchar_correlation (const unsigned char data1[], const size_t stride1,const unsigned char data2[], const size_t stride2, const size_t n);
++
++double gsl_stats_uchar_variance_m (const unsigned char data[], const size_t stride, const size_t n, const double mean);
++double gsl_stats_uchar_sd_m (const unsigned char data[], const size_t stride, const size_t n, const double mean);
++double gsl_stats_uchar_absdev_m (const unsigned char data[], const size_t stride, const size_t n, const double mean);
++double gsl_stats_uchar_skew_m_sd (const unsigned char data[], const size_t stride, const size_t n, const double mean, const double sd);
++double gsl_stats_uchar_kurtosis_m_sd (const unsigned char data[], const size_t stride, const size_t n, const double mean, const double sd);
++double gsl_stats_uchar_lag1_autocorrelation_m (const unsigned char data[], const size_t stride, const size_t n, const double mean);
++
++double gsl_stats_uchar_covariance_m (const unsigned char data1[], const size_t stride1,const unsigned char data2[], const size_t stride2, const size_t n, const double mean1, const double mean2);
++
++
++double gsl_stats_uchar_pvariance (const unsigned char data1[], const size_t stride1, const size_t n1, const unsigned char data2[], const size_t stride2, const size_t n2);
++double gsl_stats_uchar_ttest (const unsigned char data1[], const size_t stride1, const size_t n1, const unsigned char data2[], const size_t stride2, const size_t n2);
++
++unsigned char gsl_stats_uchar_max (const unsigned char data[], const size_t stride, const size_t n);
++unsigned char gsl_stats_uchar_min (const unsigned char data[], const size_t stride, const size_t n);
++void gsl_stats_uchar_minmax (unsigned char * min, unsigned char * max, const unsigned char data[], const size_t stride, const size_t n);
++
++size_t gsl_stats_uchar_max_index (const unsigned char data[], const size_t stride, const size_t n);
++size_t gsl_stats_uchar_min_index (const unsigned char data[], const size_t stride, const size_t n);
++void gsl_stats_uchar_minmax_index (size_t * min_index, size_t * max_index, const unsigned char data[], const size_t stride, const size_t n);
++
++double gsl_stats_uchar_median_from_sorted_data (const unsigned char sorted_data[], const size_t stride, const size_t n) ;
++double gsl_stats_uchar_quantile_from_sorted_data (const unsigned char sorted_data[], const size_t stride, const size_t n, const double f) ;
++
++__END_DECLS
++
++#endif /* __GSL_STATISTICS_UCHAR_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sys.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sys.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sys.h	(revision 14078)
+@@ -0,0 +1,63 @@
++/* sys/gsl_sys.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_SYS_H__
++#define __GSL_SYS_H__
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++double gsl_log1p (const double x);
++double gsl_expm1 (const double x);
++double gsl_hypot (const double x, const double y);
++double gsl_hypot3 (const double x, const double y, const double z);
++double gsl_acosh (const double x);
++double gsl_asinh (const double x);
++double gsl_atanh (const double x);
++
++int gsl_isnan (const double x);
++int gsl_isinf (const double x);
++int gsl_finite (const double x);
++
++double gsl_nan (void);
++double gsl_posinf (void);
++double gsl_neginf (void);
++double gsl_fdiv (const double x, const double y);
++
++double gsl_coerce_double (const double x);
++float gsl_coerce_float (const float x);
++long double gsl_coerce_long_double (const long double x);
++
++double gsl_ldexp(const double x, const int e);
++double gsl_frexp(const double x, int * e);
++
++int gsl_fcmp (const double x1, const double x2, const double epsilon);
++
++__END_DECLS
++
++#endif /* __GSL_SYS_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_pow_int.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_pow_int.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_pow_int.h	(revision 14078)
+@@ -0,0 +1,61 @@
++/* gsl_pow_int.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004, 2007 Gerard Jungman, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_POW_INT_H__
++#define __GSL_POW_INT_H__
++#include <gsl/gsl_inline.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++INLINE_DECL double gsl_pow_2(const double x);
++INLINE_DECL double gsl_pow_3(const double x);
++INLINE_DECL double gsl_pow_4(const double x);
++INLINE_DECL double gsl_pow_5(const double x);
++INLINE_DECL double gsl_pow_6(const double x);
++INLINE_DECL double gsl_pow_7(const double x);
++INLINE_DECL double gsl_pow_8(const double x);
++INLINE_DECL double gsl_pow_9(const double x);
++
++#ifdef HAVE_INLINE
++INLINE_FUN double gsl_pow_2(const double x) { return x*x;   }
++INLINE_FUN double gsl_pow_3(const double x) { return x*x*x; }
++INLINE_FUN double gsl_pow_4(const double x) { double x2 = x*x;   return x2*x2;    }
++INLINE_FUN double gsl_pow_5(const double x) { double x2 = x*x;   return x2*x2*x;  }
++INLINE_FUN double gsl_pow_6(const double x) { double x2 = x*x;   return x2*x2*x2; }
++INLINE_FUN double gsl_pow_7(const double x) { double x3 = x*x*x; return x3*x3*x;  }
++INLINE_FUN double gsl_pow_8(const double x) { double x2 = x*x;   double x4 = x2*x2; return x4*x4; }
++INLINE_FUN double gsl_pow_9(const double x) { double x3 = x*x*x; return x3*x3*x3; }
++#endif
++
++double gsl_pow_int(double x, int n);
++double gsl_pow_uint(double x, unsigned int n);
++
++__END_DECLS
++
++#endif /* __GSL_POW_INT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_chebyshev.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_chebyshev.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_chebyshev.h	(revision 14078)
+@@ -0,0 +1,133 @@
++/* cheb/gsl_chebyshev.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_CHEBYSHEV_H__
++#define __GSL_CHEBYSHEV_H__
++
++#include <gsl/gsl_math.h>
++#include <gsl/gsl_mode.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++
++/* data for a Chebyshev series over a given interval */
++
++struct gsl_cheb_series_struct {
++
++  double * c;   /* coefficients                */
++  size_t order; /* order of expansion          */
++  double a;     /* lower interval point        */
++  double b;     /* upper interval point        */
++
++  /* The following exists (mostly) for the benefit
++   * of the implementation. It is an effective single
++   * precision order, for use in single precision
++   * evaluation. Users can use it if they like, but
++   * only they know how to calculate it, since it is
++   * specific to the approximated function. By default,
++   * order_sp = order.
++   * It is used explicitly only by the gsl_cheb_eval_mode
++   * functions, which are not meant for casual use.
++   */
++  size_t order_sp;
++
++  /* Additional elements not used by specfunc */
++
++  double * f;   /* function evaluated at chebyschev points  */
++};
++typedef struct gsl_cheb_series_struct gsl_cheb_series;
++
++
++/* Calculate a Chebyshev series of specified order over
++ * a specified interval, for a given function.
++ * Return 0 on failure.
++ */
++gsl_cheb_series * gsl_cheb_alloc(const size_t order);
++
++/* Free a Chebyshev series previously calculated with gsl_cheb_alloc().
++ */
++void gsl_cheb_free(gsl_cheb_series * cs);
++
++/* Calculate a Chebyshev series using the storage provided.
++ * Uses the interval (a,b) and the order with which it
++ * was initially created.
++ *
++ */
++int gsl_cheb_init(gsl_cheb_series * cs, const gsl_function * func,
++                  const double a, const double b);
++
++/* Return the order, size of coefficient array and coefficient array ptr */
++size_t gsl_cheb_order (const gsl_cheb_series * cs);
++size_t gsl_cheb_size (const gsl_cheb_series * cs);
++double *gsl_cheb_coeffs (const gsl_cheb_series * cs);
++
++/* Evaluate a Chebyshev series at a given point.
++ * No errors can occur for a struct obtained from gsl_cheb_new().
++ */
++double gsl_cheb_eval(const gsl_cheb_series * cs, const double x);
++int gsl_cheb_eval_err(const gsl_cheb_series * cs, const double x, 
++                      double * result, double * abserr);
++
++
++/* Evaluate a Chebyshev series at a given point, to (at most) the given order.
++ * No errors can occur for a struct obtained from gsl_cheb_new().
++ */
++double gsl_cheb_eval_n(const gsl_cheb_series * cs, const size_t order, 
++                       const double x);
++int gsl_cheb_eval_n_err(const gsl_cheb_series * cs, const size_t order, 
++                        const double x, double * result, double * abserr);
++
++
++/* Evaluate a Chebyshev series at a given point, using the default
++ * order for double precision mode(s) and the single precision
++ * order for other modes.
++ * No errors can occur for a struct obtained from gsl_cheb_new().
++ */
++double gsl_cheb_eval_mode(const gsl_cheb_series * cs, const double x, gsl_mode_t mode);
++int gsl_cheb_eval_mode_e(const gsl_cheb_series * cs, const double x, gsl_mode_t mode, double * result, double * abserr);
++
++
++
++/* Compute the derivative of a Chebyshev series.
++ */
++int gsl_cheb_calc_deriv(gsl_cheb_series * deriv, const gsl_cheb_series * cs);
++
++/* Compute the integral of a Chebyshev series. The
++ * integral is fixed by the condition that it equals zero at
++ * the left end-point, ie it is precisely
++ *       Integrate[cs(t; a,b), {t, a, x}]
++ */
++int gsl_cheb_calc_integ(gsl_cheb_series * integ, const gsl_cheb_series * cs);
++
++
++
++
++__END_DECLS
++
++#endif /* __GSL_CHEBYSHEV_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_const_cgs.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_const_cgs.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_const_cgs.h	(revision 14078)
+@@ -0,0 +1,116 @@
++/* const/gsl_const_cgs.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
++ * 2006, 2007, 2008, 2009 Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_CONST_CGS__
++#define __GSL_CONST_CGS__
++
++#define GSL_CONST_CGS_SPEED_OF_LIGHT (2.99792458e10) /* cm / s */
++#define GSL_CONST_CGS_GRAVITATIONAL_CONSTANT (6.673e-8) /* cm^3 / g s^2 */
++#define GSL_CONST_CGS_PLANCKS_CONSTANT_H (6.62606896e-27) /* g cm^2 / s */
++#define GSL_CONST_CGS_PLANCKS_CONSTANT_HBAR (1.05457162825e-27) /* g cm^2 / s */
++#define GSL_CONST_CGS_ASTRONOMICAL_UNIT (1.49597870691e13) /* cm */
++#define GSL_CONST_CGS_LIGHT_YEAR (9.46053620707e17) /* cm */
++#define GSL_CONST_CGS_PARSEC (3.08567758135e18) /* cm */
++#define GSL_CONST_CGS_GRAV_ACCEL (9.80665e2) /* cm / s^2 */
++#define GSL_CONST_CGS_ELECTRON_VOLT (1.602176487e-12) /* g cm^2 / s^2 */
++#define GSL_CONST_CGS_MASS_ELECTRON (9.10938188e-28) /* g */
++#define GSL_CONST_CGS_MASS_MUON (1.88353109e-25) /* g */
++#define GSL_CONST_CGS_MASS_PROTON (1.67262158e-24) /* g */
++#define GSL_CONST_CGS_MASS_NEUTRON (1.67492716e-24) /* g */
++#define GSL_CONST_CGS_RYDBERG (2.17987196968e-11) /* g cm^2 / s^2 */
++#define GSL_CONST_CGS_BOLTZMANN (1.3806504e-16) /* g cm^2 / K s^2 */
++#define GSL_CONST_CGS_MOLAR_GAS (8.314472e7) /* g cm^2 / K mol s^2 */
++#define GSL_CONST_CGS_STANDARD_GAS_VOLUME (2.2710981e4) /* cm^3 / mol */
++#define GSL_CONST_CGS_MINUTE (6e1) /* s */
++#define GSL_CONST_CGS_HOUR (3.6e3) /* s */
++#define GSL_CONST_CGS_DAY (8.64e4) /* s */
++#define GSL_CONST_CGS_WEEK (6.048e5) /* s */
++#define GSL_CONST_CGS_INCH (2.54e0) /* cm */
++#define GSL_CONST_CGS_FOOT (3.048e1) /* cm */
++#define GSL_CONST_CGS_YARD (9.144e1) /* cm */
++#define GSL_CONST_CGS_MILE (1.609344e5) /* cm */
++#define GSL_CONST_CGS_NAUTICAL_MILE (1.852e5) /* cm */
++#define GSL_CONST_CGS_FATHOM (1.8288e2) /* cm */
++#define GSL_CONST_CGS_MIL (2.54e-3) /* cm */
++#define GSL_CONST_CGS_POINT (3.52777777778e-2) /* cm */
++#define GSL_CONST_CGS_TEXPOINT (3.51459803515e-2) /* cm */
++#define GSL_CONST_CGS_MICRON (1e-4) /* cm */
++#define GSL_CONST_CGS_ANGSTROM (1e-8) /* cm */
++#define GSL_CONST_CGS_HECTARE (1e8) /* cm^2 */
++#define GSL_CONST_CGS_ACRE (4.04685642241e7) /* cm^2 */
++#define GSL_CONST_CGS_BARN (1e-24) /* cm^2 */
++#define GSL_CONST_CGS_LITER (1e3) /* cm^3 */
++#define GSL_CONST_CGS_US_GALLON (3.78541178402e3) /* cm^3 */
++#define GSL_CONST_CGS_QUART (9.46352946004e2) /* cm^3 */
++#define GSL_CONST_CGS_PINT (4.73176473002e2) /* cm^3 */
++#define GSL_CONST_CGS_CUP (2.36588236501e2) /* cm^3 */
++#define GSL_CONST_CGS_FLUID_OUNCE (2.95735295626e1) /* cm^3 */
++#define GSL_CONST_CGS_TABLESPOON (1.47867647813e1) /* cm^3 */
++#define GSL_CONST_CGS_TEASPOON (4.92892159375e0) /* cm^3 */
++#define GSL_CONST_CGS_CANADIAN_GALLON (4.54609e3) /* cm^3 */
++#define GSL_CONST_CGS_UK_GALLON (4.546092e3) /* cm^3 */
++#define GSL_CONST_CGS_MILES_PER_HOUR (4.4704e1) /* cm / s */
++#define GSL_CONST_CGS_KILOMETERS_PER_HOUR (2.77777777778e1) /* cm / s */
++#define GSL_CONST_CGS_KNOT (5.14444444444e1) /* cm / s */
++#define GSL_CONST_CGS_POUND_MASS (4.5359237e2) /* g */
++#define GSL_CONST_CGS_OUNCE_MASS (2.8349523125e1) /* g */
++#define GSL_CONST_CGS_TON (9.0718474e5) /* g */
++#define GSL_CONST_CGS_METRIC_TON (1e6) /* g */
++#define GSL_CONST_CGS_UK_TON (1.0160469088e6) /* g */
++#define GSL_CONST_CGS_TROY_OUNCE (3.1103475e1) /* g */
++#define GSL_CONST_CGS_CARAT (2e-1) /* g */
++#define GSL_CONST_CGS_UNIFIED_ATOMIC_MASS (1.660538782e-24) /* g */
++#define GSL_CONST_CGS_GRAM_FORCE (9.80665e2) /* cm g / s^2 */
++#define GSL_CONST_CGS_POUND_FORCE (4.44822161526e5) /* cm g / s^2 */
++#define GSL_CONST_CGS_KILOPOUND_FORCE (4.44822161526e8) /* cm g / s^2 */
++#define GSL_CONST_CGS_POUNDAL (1.38255e4) /* cm g / s^2 */
++#define GSL_CONST_CGS_CALORIE (4.1868e7) /* g cm^2 / s^2 */
++#define GSL_CONST_CGS_BTU (1.05505585262e10) /* g cm^2 / s^2 */
++#define GSL_CONST_CGS_THERM (1.05506e15) /* g cm^2 / s^2 */
++#define GSL_CONST_CGS_HORSEPOWER (7.457e9) /* g cm^2 / s^3 */
++#define GSL_CONST_CGS_BAR (1e6) /* g / cm s^2 */
++#define GSL_CONST_CGS_STD_ATMOSPHERE (1.01325e6) /* g / cm s^2 */
++#define GSL_CONST_CGS_TORR (1.33322368421e3) /* g / cm s^2 */
++#define GSL_CONST_CGS_METER_OF_MERCURY (1.33322368421e6) /* g / cm s^2 */
++#define GSL_CONST_CGS_INCH_OF_MERCURY (3.38638815789e4) /* g / cm s^2 */
++#define GSL_CONST_CGS_INCH_OF_WATER (2.490889e3) /* g / cm s^2 */
++#define GSL_CONST_CGS_PSI (6.89475729317e4) /* g / cm s^2 */
++#define GSL_CONST_CGS_POISE (1e0) /* g / cm s */
++#define GSL_CONST_CGS_STOKES (1e0) /* cm^2 / s */
++#define GSL_CONST_CGS_STILB (1e0) /* cd / cm^2 */
++#define GSL_CONST_CGS_LUMEN (1e0) /* cd sr */
++#define GSL_CONST_CGS_LUX (1e-4) /* cd sr / cm^2 */
++#define GSL_CONST_CGS_PHOT (1e0) /* cd sr / cm^2 */
++#define GSL_CONST_CGS_FOOTCANDLE (1.076e-3) /* cd sr / cm^2 */
++#define GSL_CONST_CGS_LAMBERT (1e0) /* cd sr / cm^2 */
++#define GSL_CONST_CGS_FOOTLAMBERT (1.07639104e-3) /* cd sr / cm^2 */
++#define GSL_CONST_CGS_CURIE (3.7e10) /* 1 / s */
++#define GSL_CONST_CGS_ROENTGEN (2.58e-7) /* A s / g */
++#define GSL_CONST_CGS_RAD (1e2) /* cm^2 / s^2 */
++#define GSL_CONST_CGS_SOLAR_MASS (1.98892e33) /* g */
++#define GSL_CONST_CGS_BOHR_RADIUS (5.291772083e-9) /* cm */
++#define GSL_CONST_CGS_NEWTON (1e5) /* cm g / s^2 */
++#define GSL_CONST_CGS_DYNE (1e0) /* cm g / s^2 */
++#define GSL_CONST_CGS_JOULE (1e7) /* g cm^2 / s^2 */
++#define GSL_CONST_CGS_ERG (1e0) /* g cm^2 / s^2 */
++#define GSL_CONST_CGS_STEFAN_BOLTZMANN_CONSTANT (5.67040047374e-5) /* g / K^4 s^3 */
++#define GSL_CONST_CGS_THOMSON_CROSS_SECTION (6.65245893699e-25) /* cm^2 */
++
++#endif /* __GSL_CONST_CGS__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_fft_real.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_fft_real.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_fft_real.h	(revision 14078)
+@@ -0,0 +1,80 @@
++/* fft/gsl_fft_real.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_FFT_REAL_H__
++#define __GSL_FFT_REAL_H__
++
++#include <stddef.h>
++
++#include <gsl/gsl_math.h>
++#include <gsl/gsl_complex.h>
++#include <gsl/gsl_fft.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++int gsl_fft_real_radix2_transform (double data[], const size_t stride, const size_t n) ;
++
++typedef struct
++  {
++    size_t n;
++    size_t nf;
++    size_t factor[64];
++    gsl_complex *twiddle[64];
++    gsl_complex *trig;
++  }
++gsl_fft_real_wavetable;
++
++typedef struct
++  {
++    size_t n;
++    double *scratch;
++  }
++gsl_fft_real_workspace;
++
++gsl_fft_real_wavetable * gsl_fft_real_wavetable_alloc (size_t n);
++
++void  gsl_fft_real_wavetable_free (gsl_fft_real_wavetable * wavetable);
++
++gsl_fft_real_workspace * gsl_fft_real_workspace_alloc (size_t n);
++
++void  gsl_fft_real_workspace_free (gsl_fft_real_workspace * workspace);
++
++
++int gsl_fft_real_transform (double data[], const size_t stride, const size_t n,
++                            const gsl_fft_real_wavetable * wavetable,
++                            gsl_fft_real_workspace * work);
++
++
++int gsl_fft_real_unpack (const double real_coefficient[],
++                         double complex_coefficient[],
++                         const size_t stride, const size_t n);
++
++__END_DECLS
++
++#endif /* __GSL_FFT_REAL_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_long.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_long.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_long.h	(revision 14078)
+@@ -0,0 +1,350 @@
++/* matrix/gsl_matrix_long.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_MATRIX_LONG_H__
++#define __GSL_MATRIX_LONG_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_types.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_inline.h>
++#include <gsl/gsl_check_range.h>
++#include <gsl/gsl_vector_long.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++typedef struct 
++{
++  size_t size1;
++  size_t size2;
++  size_t tda;
++  long * data;
++  gsl_block_long * block;
++  int owner;
++} gsl_matrix_long;
++
++typedef struct
++{
++  gsl_matrix_long matrix;
++} _gsl_matrix_long_view;
++
++typedef _gsl_matrix_long_view gsl_matrix_long_view;
++
++typedef struct
++{
++  gsl_matrix_long matrix;
++} _gsl_matrix_long_const_view;
++
++typedef const _gsl_matrix_long_const_view gsl_matrix_long_const_view;
++
++/* Allocation */
++
++gsl_matrix_long * 
++gsl_matrix_long_alloc (const size_t n1, const size_t n2);
++
++gsl_matrix_long * 
++gsl_matrix_long_calloc (const size_t n1, const size_t n2);
++
++gsl_matrix_long * 
++gsl_matrix_long_alloc_from_block (gsl_block_long * b, 
++                                   const size_t offset, 
++                                   const size_t n1, 
++                                   const size_t n2, 
++                                   const size_t d2);
++
++gsl_matrix_long * 
++gsl_matrix_long_alloc_from_matrix (gsl_matrix_long * m,
++                                    const size_t k1, 
++                                    const size_t k2,
++                                    const size_t n1, 
++                                    const size_t n2);
++
++gsl_vector_long * 
++gsl_vector_long_alloc_row_from_matrix (gsl_matrix_long * m,
++                                        const size_t i);
++
++gsl_vector_long * 
++gsl_vector_long_alloc_col_from_matrix (gsl_matrix_long * m,
++                                        const size_t j);
++
++void gsl_matrix_long_free (gsl_matrix_long * m);
++
++/* Views */
++
++_gsl_matrix_long_view 
++gsl_matrix_long_submatrix (gsl_matrix_long * m, 
++                            const size_t i, const size_t j, 
++                            const size_t n1, const size_t n2);
++
++_gsl_vector_long_view 
++gsl_matrix_long_row (gsl_matrix_long * m, const size_t i);
++
++_gsl_vector_long_view 
++gsl_matrix_long_column (gsl_matrix_long * m, const size_t j);
++
++_gsl_vector_long_view 
++gsl_matrix_long_diagonal (gsl_matrix_long * m);
++
++_gsl_vector_long_view 
++gsl_matrix_long_subdiagonal (gsl_matrix_long * m, const size_t k);
++
++_gsl_vector_long_view 
++gsl_matrix_long_superdiagonal (gsl_matrix_long * m, const size_t k);
++
++_gsl_vector_long_view
++gsl_matrix_long_subrow (gsl_matrix_long * m, const size_t i,
++                         const size_t offset, const size_t n);
++
++_gsl_vector_long_view
++gsl_matrix_long_subcolumn (gsl_matrix_long * m, const size_t j,
++                            const size_t offset, const size_t n);
++
++_gsl_matrix_long_view
++gsl_matrix_long_view_array (long * base,
++                             const size_t n1, 
++                             const size_t n2);
++
++_gsl_matrix_long_view
++gsl_matrix_long_view_array_with_tda (long * base, 
++                                      const size_t n1, 
++                                      const size_t n2,
++                                      const size_t tda);
++
++
++_gsl_matrix_long_view
++gsl_matrix_long_view_vector (gsl_vector_long * v,
++                              const size_t n1, 
++                              const size_t n2);
++
++_gsl_matrix_long_view
++gsl_matrix_long_view_vector_with_tda (gsl_vector_long * v,
++                                       const size_t n1, 
++                                       const size_t n2,
++                                       const size_t tda);
++
++
++_gsl_matrix_long_const_view 
++gsl_matrix_long_const_submatrix (const gsl_matrix_long * m, 
++                                  const size_t i, const size_t j, 
++                                  const size_t n1, const size_t n2);
++
++_gsl_vector_long_const_view 
++gsl_matrix_long_const_row (const gsl_matrix_long * m, 
++                            const size_t i);
++
++_gsl_vector_long_const_view 
++gsl_matrix_long_const_column (const gsl_matrix_long * m, 
++                               const size_t j);
++
++_gsl_vector_long_const_view
++gsl_matrix_long_const_diagonal (const gsl_matrix_long * m);
++
++_gsl_vector_long_const_view 
++gsl_matrix_long_const_subdiagonal (const gsl_matrix_long * m, 
++                                    const size_t k);
++
++_gsl_vector_long_const_view 
++gsl_matrix_long_const_superdiagonal (const gsl_matrix_long * m, 
++                                      const size_t k);
++
++_gsl_vector_long_const_view
++gsl_matrix_long_const_subrow (const gsl_matrix_long * m, const size_t i,
++                               const size_t offset, const size_t n);
++
++_gsl_vector_long_const_view
++gsl_matrix_long_const_subcolumn (const gsl_matrix_long * m, const size_t j,
++                                  const size_t offset, const size_t n);
++
++_gsl_matrix_long_const_view
++gsl_matrix_long_const_view_array (const long * base,
++                                   const size_t n1, 
++                                   const size_t n2);
++
++_gsl_matrix_long_const_view
++gsl_matrix_long_const_view_array_with_tda (const long * base, 
++                                            const size_t n1, 
++                                            const size_t n2,
++                                            const size_t tda);
++
++_gsl_matrix_long_const_view
++gsl_matrix_long_const_view_vector (const gsl_vector_long * v,
++                                    const size_t n1, 
++                                    const size_t n2);
++
++_gsl_matrix_long_const_view
++gsl_matrix_long_const_view_vector_with_tda (const gsl_vector_long * v,
++                                             const size_t n1, 
++                                             const size_t n2,
++                                             const size_t tda);
++
++/* Operations */
++
++void gsl_matrix_long_set_zero (gsl_matrix_long * m);
++void gsl_matrix_long_set_identity (gsl_matrix_long * m);
++void gsl_matrix_long_set_all (gsl_matrix_long * m, long x);
++
++int gsl_matrix_long_fread (FILE * stream, gsl_matrix_long * m) ;
++int gsl_matrix_long_fwrite (FILE * stream, const gsl_matrix_long * m) ;
++int gsl_matrix_long_fscanf (FILE * stream, gsl_matrix_long * m);
++int gsl_matrix_long_fprintf (FILE * stream, const gsl_matrix_long * m, const char * format);
++ 
++int gsl_matrix_long_memcpy(gsl_matrix_long * dest, const gsl_matrix_long * src);
++int gsl_matrix_long_swap(gsl_matrix_long * m1, gsl_matrix_long * m2);
++
++int gsl_matrix_long_swap_rows(gsl_matrix_long * m, const size_t i, const size_t j);
++int gsl_matrix_long_swap_columns(gsl_matrix_long * m, const size_t i, const size_t j);
++int gsl_matrix_long_swap_rowcol(gsl_matrix_long * m, const size_t i, const size_t j);
++int gsl_matrix_long_transpose (gsl_matrix_long * m);
++int gsl_matrix_long_transpose_memcpy (gsl_matrix_long * dest, const gsl_matrix_long * src);
++
++long gsl_matrix_long_max (const gsl_matrix_long * m);
++long gsl_matrix_long_min (const gsl_matrix_long * m);
++void gsl_matrix_long_minmax (const gsl_matrix_long * m, long * min_out, long * max_out);
++
++void gsl_matrix_long_max_index (const gsl_matrix_long * m, size_t * imax, size_t *jmax);
++void gsl_matrix_long_min_index (const gsl_matrix_long * m, size_t * imin, size_t *jmin);
++void gsl_matrix_long_minmax_index (const gsl_matrix_long * m, size_t * imin, size_t * jmin, size_t * imax, size_t * jmax);
++
++int gsl_matrix_long_equal (const gsl_matrix_long * a, const gsl_matrix_long * b);
++
++int gsl_matrix_long_isnull (const gsl_matrix_long * m);
++int gsl_matrix_long_ispos (const gsl_matrix_long * m);
++int gsl_matrix_long_isneg (const gsl_matrix_long * m);
++int gsl_matrix_long_isnonneg (const gsl_matrix_long * m);
++
++int gsl_matrix_long_add (gsl_matrix_long * a, const gsl_matrix_long * b);
++int gsl_matrix_long_sub (gsl_matrix_long * a, const gsl_matrix_long * b);
++int gsl_matrix_long_mul_elements (gsl_matrix_long * a, const gsl_matrix_long * b);
++int gsl_matrix_long_div_elements (gsl_matrix_long * a, const gsl_matrix_long * b);
++int gsl_matrix_long_scale (gsl_matrix_long * a, const double x);
++int gsl_matrix_long_add_constant (gsl_matrix_long * a, const double x);
++int gsl_matrix_long_add_diagonal (gsl_matrix_long * a, const double x);
++
++/***********************************************************************/
++/* The functions below are obsolete                                    */
++/***********************************************************************/
++int gsl_matrix_long_get_row(gsl_vector_long * v, const gsl_matrix_long * m, const size_t i);
++int gsl_matrix_long_get_col(gsl_vector_long * v, const gsl_matrix_long * m, const size_t j);
++int gsl_matrix_long_set_row(gsl_matrix_long * m, const size_t i, const gsl_vector_long * v);
++int gsl_matrix_long_set_col(gsl_matrix_long * m, const size_t j, const gsl_vector_long * v);
++/***********************************************************************/
++
++/* inline functions if you are using GCC */
++
++INLINE_DECL long   gsl_matrix_long_get(const gsl_matrix_long * m, const size_t i, const size_t j);
++INLINE_DECL void    gsl_matrix_long_set(gsl_matrix_long * m, const size_t i, const size_t j, const long x);
++INLINE_DECL long * gsl_matrix_long_ptr(gsl_matrix_long * m, const size_t i, const size_t j);
++INLINE_DECL const long * gsl_matrix_long_const_ptr(const gsl_matrix_long * m, const size_t i, const size_t j);
++
++#ifdef HAVE_INLINE
++INLINE_FUN 
++long
++gsl_matrix_long_get(const gsl_matrix_long * m, const size_t i, const size_t j)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(1)) 
++    {
++      if (i >= m->size1)
++        {
++          GSL_ERROR_VAL("first index out of range", GSL_EINVAL, 0) ;
++        }
++      else if (j >= m->size2)
++        {
++          GSL_ERROR_VAL("second index out of range", GSL_EINVAL, 0) ;
++        }
++    }
++#endif
++  return m->data[i * m->tda + j] ;
++} 
++
++INLINE_FUN 
++void
++gsl_matrix_long_set(gsl_matrix_long * m, const size_t i, const size_t j, const long x)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(1)) 
++    {
++      if (i >= m->size1)
++        {
++          GSL_ERROR_VOID("first index out of range", GSL_EINVAL) ;
++        }
++      else if (j >= m->size2)
++        {
++          GSL_ERROR_VOID("second index out of range", GSL_EINVAL) ;
++        }
++    }
++#endif
++  m->data[i * m->tda + j] = x ;
++}
++
++INLINE_FUN 
++long *
++gsl_matrix_long_ptr(gsl_matrix_long * m, const size_t i, const size_t j)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(1)) 
++    {
++      if (i >= m->size1)
++        {
++          GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
++        }
++      else if (j >= m->size2)
++        {
++          GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
++        }
++    }
++#endif
++  return (long *) (m->data + (i * m->tda + j)) ;
++} 
++
++INLINE_FUN 
++const long *
++gsl_matrix_long_const_ptr(const gsl_matrix_long * m, const size_t i, const size_t j)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(1)) 
++    {
++      if (i >= m->size1)
++        {
++          GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
++        }
++      else if (j >= m->size2)
++        {
++          GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
++        }
++    }
++#endif
++  return (const long *) (m->data + (i * m->tda + j)) ;
++} 
++
++#endif
++
++__END_DECLS
++
++#endif /* __GSL_MATRIX_LONG_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_complex_double.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_complex_double.h	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_complex_double.h	(revision 14078)
+@@ -0,0 +1,251 @@
++/* vector/gsl_vector_complex_double.h
++ * 
++ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
++ * 
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or (at
++ * your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#ifndef __GSL_VECTOR_COMPLEX_DOUBLE_H__
++#define __GSL_VECTOR_COMPLEX_DOUBLE_H__
++
++#include <stdlib.h>
++#include <gsl/gsl_types.h>
++#include <gsl/gsl_errno.h>
++#include <gsl/gsl_complex.h>
++#include <gsl/gsl_check_range.h>
++#include <gsl/gsl_vector_double.h>
++#include <gsl/gsl_vector_complex.h>
++#include <gsl/gsl_block_complex_double.h>
++
++#undef __BEGIN_DECLS
++#undef __END_DECLS
++#ifdef __cplusplus
++# define __BEGIN_DECLS extern "C" {
++# define __END_DECLS }
++#else
++# define __BEGIN_DECLS /* empty */
++# define __END_DECLS /* empty */
++#endif
++
++__BEGIN_DECLS
++
++typedef struct 
++{
++  size_t size;
++  size_t stride;
++  double *data;
++  gsl_block_complex *block;
++  int owner;
++} gsl_vector_complex;
++
++typedef struct
++{
++  gsl_vector_complex vector;
++} _gsl_vector_complex_view;
++
++typedef _gsl_vector_complex_view gsl_vector_complex_view;
++
++typedef struct
++{
++  gsl_vector_complex vector;
++} _gsl_vector_complex_const_view;
++
++typedef const _gsl_vector_complex_const_view gsl_vector_complex_const_view;
++
++/* Allocation */
++
++gsl_vector_complex *gsl_vector_complex_alloc (const size_t n);
++gsl_vector_complex *gsl_vector_complex_calloc (const size_t n);
++
++gsl_vector_complex *
++gsl_vector_complex_alloc_from_block (gsl_block_complex * b, 
++                                           const size_t offset, 
++                                           const size_t n, 
++                                           const size_t stride);
++
++gsl_vector_complex *
++gsl_vector_complex_alloc_from_vector (gsl_vector_complex * v, 
++                                             const size_t offset, 
++                                             const size_t n, 
++                                             const size_t stride);
++
++void gsl_vector_complex_free (gsl_vector_complex * v);
++
++/* Views */
++
++_gsl_vector_complex_view
++gsl_vector_complex_view_array (double *base,
++                                     size_t n);
++
++_gsl_vector_complex_view
++gsl_vector_complex_view_array_with_stride (double *base,
++                                                 size_t stride,
++                                                 size_t n);
++
++_gsl_vector_complex_const_view
++gsl_vector_complex_const_view_array (const double *base,
++                                           size_t n);
++
++_gsl_vector_complex_const_view
++gsl_vector_complex_const_view_array_with_stride (const double *base,
++                                                       size_t stride,
++                                                       size_t n);
++
++_gsl_vector_complex_view
++gsl_vector_complex_subvector (gsl_vector_complex *base,
++                                         size_t i, 
++                                         size_t n);
++
++
++_gsl_vector_complex_view 
++gsl_vector_complex_subvector_with_stride (gsl_vector_complex *v, 
++                                                size_t i, 
++                                                size_t stride, 
++                                                size_t n);
++
++_gsl_vector_complex_const_view
++gsl_vector_complex_const_subvector (const gsl_vector_complex *base,
++                                               size_t i, 
++                                               size_t n);
++
++
++_gsl_vector_complex_const_view 
++gsl_vector_complex_const_subvector_with_stride (const gsl_vector_complex *v, 
++                                                      size_t i, 
++                                                      size_t stride, 
++                                                      size_t n);
++
++_gsl_vector_view
++gsl_vector_complex_real (gsl_vector_complex *v);
++
++_gsl_vector_view 
++gsl_vector_complex_imag (gsl_vector_complex *v);
++
++_gsl_vector_const_view
++gsl_vector_complex_const_real (const gsl_vector_complex *v);
++
++_gsl_vector_const_view 
++gsl_vector_complex_const_imag (const gsl_vector_complex *v);
++
++
++/* Operations */
++
++void gsl_vector_complex_set_zero (gsl_vector_complex * v);
++void gsl_vector_complex_set_all (gsl_vector_complex * v,
++                                       gsl_complex z);
++int gsl_vector_complex_set_basis (gsl_vector_complex * v, size_t i);
++
++int gsl_vector_complex_fread (FILE * stream,
++                                    gsl_vector_complex * v);
++int gsl_vector_complex_fwrite (FILE * stream,
++                                     const gsl_vector_complex * v);
++int gsl_vector_complex_fscanf (FILE * stream,
++                                     gsl_vector_complex * v);
++int gsl_vector_complex_fprintf (FILE * stream,
++                                      const gsl_vector_complex * v,
++                                      const char *format);
++
++int gsl_vector_complex_memcpy (gsl_vector_complex * dest, const gsl_vector_complex * src);
++
++int gsl_vector_complex_reverse (gsl_vector_complex * v);
++
++int gsl_vector_complex_swap (gsl_vector_complex * v, gsl_vector_complex * w);
++int gsl_vector_complex_swap_elements (gsl_vector_complex * v, const size_t i, const size_t j);
++
++int gsl_vector_complex_equal (const gsl_vector_complex * u, 
++                                    const gsl_vector_complex * v);
++
++int gsl_vector_complex_isnull (const gsl_vector_complex * v);
++int gsl_vector_complex_ispos (const gsl_vector_complex * v);
++int gsl_vector_complex_isneg (const gsl_vector_complex * v);
++int gsl_vector_complex_isnonneg (const gsl_vector_complex * v);
++
++int gsl_vector_complex_add (gsl_vector_complex * a, const gsl_vector_complex * b);
++int gsl_vector_complex_sub (gsl_vector_complex * a, const gsl_vector_complex * b);
++int gsl_vector_complex_mul (gsl_vector_complex * a, const gsl_vector_complex * b);
++int gsl_vector_complex_div (gsl_vector_complex * a, const gsl_vector_complex * b);
++int gsl_vector_complex_scale (gsl_vector_complex * a, const gsl_complex x);
++int gsl_vector_complex_add_constant (gsl_vector_complex * a, const gsl_complex x);
++
++INLINE_DECL gsl_complex gsl_vector_complex_get (const gsl_vector_complex * v, const size_t i);
++INLINE_DECL void gsl_vector_complex_set (gsl_vector_complex * v, const size_t i, gsl_complex z);
++INLINE_DECL gsl_complex *gsl_vector_complex_ptr (gsl_vector_complex * v, const size_t i);
++INLINE_DECL const gsl_complex *gsl_vector_complex_const_ptr (const gsl_vector_complex * v, const size_t i);
++
++#ifdef HAVE_INLINE
++
++INLINE_FUN
++gsl_complex
++gsl_vector_complex_get (const gsl_vector_complex * v,
++                              const size_t i)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(i >= v->size))
++    {
++      gsl_complex zero = {{0, 0}};
++      GSL_ERROR_VAL ("index out of range", GSL_EINVAL, zero);
++    }
++#endif
++  return *GSL_COMPLEX_AT (v, i);
++}
++
++INLINE_FUN
++void
++gsl_vector_complex_set (gsl_vector_complex * v,
++                              const size_t i, gsl_complex z)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(i >= v->size))
++    {
++      GSL_ERROR_VOID ("index out of range", GSL_EINVAL);
++    }
++#endif
++  *GSL_COMPLEX_AT (v, i) = z;
++}
++
++INLINE_FUN
++gsl_complex *
++gsl_vector_complex_ptr (gsl_vector_complex * v,
++                              const size_t i)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(i >= v->size))
++    {
++      GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
++    }
++#endif
++  return GSL_COMPLEX_AT (v, i);
++}
++
++INLINE_FUN
++const gsl_complex *
++gsl_vector_complex_const_ptr (const gsl_vector_complex * v,
++                                    const size_t i)
++{
++#if GSL_RANGE_CHECK
++  if (GSL_RANGE_COND(i >= v->size))
++    {
++      GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
++    }
++#endif
++  return GSL_COMPLEX_AT (v, i);
++}
++
++
++#endif /* HAVE_INLINE */
++
++__END_DECLS
++
++#endif /* __GSL_VECTOR_COMPLEX_DOUBLE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/Android.mk
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/Android.mk	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/Android.mk	(revision 14078)
+@@ -0,0 +1,16 @@
++LOCAL_PATH:= $(call my-dir)
++include $(CLEAR_VARS)
++LOCAL_MODULE    := libgsl
++LOCAL_SRC_FILES := libsgsl.a
++LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include/gsl
++include $(PREBUILT_STATIC_LIBRARY)
++
++#include $(CLEAR_VARS)
++#LOCAL_MODULE    := libgslcblas
++#LOCAL_SRC_FILES := libgslcblas.so.0 
++#include $(PREBUILT_SHARED_LIBRARY)
++
++include $(CLEAR_VARS)
++LOCAL_MODULE    := libgslcblas
++LOCAL_SRC_FILES := libsgslcblas.a 
++include $(PREBUILT_STATIC_LIBRARY)
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/libsgsl.a
+===================================================================
+Cannot display: file marked as a binary type.
+svn:mime-type = application/octet-stream
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/libsgsl.a
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/libsgsl.a	(revision 14077)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/libsgsl.a	(revision 14078)
+
+Property changes on: ../trunk-jpl/src/android/ISSM/jni/gsllib/libsgsl.a
+___________________________________________________________________
+Added: svn:mime-type
+## -0,0 +1 ##
++application/octet-stream
Index: /issm/oecreview/Archive/14064-14311/ISSM-14078-14079.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14078-14079.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14078-14079.diff	(revision 14312)
@@ -0,0 +1,27649 @@
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_uchar.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_uchar.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_uchar.h	(revision 14079)
+@@ -1,350 +0,0 @@
+-/* matrix/gsl_matrix_uchar.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_MATRIX_UCHAR_H__
+-#define __GSL_MATRIX_UCHAR_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_types.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_inline.h>
+-#include <gsl/gsl_check_range.h>
+-#include <gsl/gsl_vector_uchar.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-typedef struct 
+-{
+-  size_t size1;
+-  size_t size2;
+-  size_t tda;
+-  unsigned char * data;
+-  gsl_block_uchar * block;
+-  int owner;
+-} gsl_matrix_uchar;
+-
+-typedef struct
+-{
+-  gsl_matrix_uchar matrix;
+-} _gsl_matrix_uchar_view;
+-
+-typedef _gsl_matrix_uchar_view gsl_matrix_uchar_view;
+-
+-typedef struct
+-{
+-  gsl_matrix_uchar matrix;
+-} _gsl_matrix_uchar_const_view;
+-
+-typedef const _gsl_matrix_uchar_const_view gsl_matrix_uchar_const_view;
+-
+-/* Allocation */
+-
+-gsl_matrix_uchar * 
+-gsl_matrix_uchar_alloc (const size_t n1, const size_t n2);
+-
+-gsl_matrix_uchar * 
+-gsl_matrix_uchar_calloc (const size_t n1, const size_t n2);
+-
+-gsl_matrix_uchar * 
+-gsl_matrix_uchar_alloc_from_block (gsl_block_uchar * b, 
+-                                   const size_t offset, 
+-                                   const size_t n1, 
+-                                   const size_t n2, 
+-                                   const size_t d2);
+-
+-gsl_matrix_uchar * 
+-gsl_matrix_uchar_alloc_from_matrix (gsl_matrix_uchar * m,
+-                                    const size_t k1, 
+-                                    const size_t k2,
+-                                    const size_t n1, 
+-                                    const size_t n2);
+-
+-gsl_vector_uchar * 
+-gsl_vector_uchar_alloc_row_from_matrix (gsl_matrix_uchar * m,
+-                                        const size_t i);
+-
+-gsl_vector_uchar * 
+-gsl_vector_uchar_alloc_col_from_matrix (gsl_matrix_uchar * m,
+-                                        const size_t j);
+-
+-void gsl_matrix_uchar_free (gsl_matrix_uchar * m);
+-
+-/* Views */
+-
+-_gsl_matrix_uchar_view 
+-gsl_matrix_uchar_submatrix (gsl_matrix_uchar * m, 
+-                            const size_t i, const size_t j, 
+-                            const size_t n1, const size_t n2);
+-
+-_gsl_vector_uchar_view 
+-gsl_matrix_uchar_row (gsl_matrix_uchar * m, const size_t i);
+-
+-_gsl_vector_uchar_view 
+-gsl_matrix_uchar_column (gsl_matrix_uchar * m, const size_t j);
+-
+-_gsl_vector_uchar_view 
+-gsl_matrix_uchar_diagonal (gsl_matrix_uchar * m);
+-
+-_gsl_vector_uchar_view 
+-gsl_matrix_uchar_subdiagonal (gsl_matrix_uchar * m, const size_t k);
+-
+-_gsl_vector_uchar_view 
+-gsl_matrix_uchar_superdiagonal (gsl_matrix_uchar * m, const size_t k);
+-
+-_gsl_vector_uchar_view
+-gsl_matrix_uchar_subrow (gsl_matrix_uchar * m, const size_t i,
+-                         const size_t offset, const size_t n);
+-
+-_gsl_vector_uchar_view
+-gsl_matrix_uchar_subcolumn (gsl_matrix_uchar * m, const size_t j,
+-                            const size_t offset, const size_t n);
+-
+-_gsl_matrix_uchar_view
+-gsl_matrix_uchar_view_array (unsigned char * base,
+-                             const size_t n1, 
+-                             const size_t n2);
+-
+-_gsl_matrix_uchar_view
+-gsl_matrix_uchar_view_array_with_tda (unsigned char * base, 
+-                                      const size_t n1, 
+-                                      const size_t n2,
+-                                      const size_t tda);
+-
+-
+-_gsl_matrix_uchar_view
+-gsl_matrix_uchar_view_vector (gsl_vector_uchar * v,
+-                              const size_t n1, 
+-                              const size_t n2);
+-
+-_gsl_matrix_uchar_view
+-gsl_matrix_uchar_view_vector_with_tda (gsl_vector_uchar * v,
+-                                       const size_t n1, 
+-                                       const size_t n2,
+-                                       const size_t tda);
+-
+-
+-_gsl_matrix_uchar_const_view 
+-gsl_matrix_uchar_const_submatrix (const gsl_matrix_uchar * m, 
+-                                  const size_t i, const size_t j, 
+-                                  const size_t n1, const size_t n2);
+-
+-_gsl_vector_uchar_const_view 
+-gsl_matrix_uchar_const_row (const gsl_matrix_uchar * m, 
+-                            const size_t i);
+-
+-_gsl_vector_uchar_const_view 
+-gsl_matrix_uchar_const_column (const gsl_matrix_uchar * m, 
+-                               const size_t j);
+-
+-_gsl_vector_uchar_const_view
+-gsl_matrix_uchar_const_diagonal (const gsl_matrix_uchar * m);
+-
+-_gsl_vector_uchar_const_view 
+-gsl_matrix_uchar_const_subdiagonal (const gsl_matrix_uchar * m, 
+-                                    const size_t k);
+-
+-_gsl_vector_uchar_const_view 
+-gsl_matrix_uchar_const_superdiagonal (const gsl_matrix_uchar * m, 
+-                                      const size_t k);
+-
+-_gsl_vector_uchar_const_view
+-gsl_matrix_uchar_const_subrow (const gsl_matrix_uchar * m, const size_t i,
+-                               const size_t offset, const size_t n);
+-
+-_gsl_vector_uchar_const_view
+-gsl_matrix_uchar_const_subcolumn (const gsl_matrix_uchar * m, const size_t j,
+-                                  const size_t offset, const size_t n);
+-
+-_gsl_matrix_uchar_const_view
+-gsl_matrix_uchar_const_view_array (const unsigned char * base,
+-                                   const size_t n1, 
+-                                   const size_t n2);
+-
+-_gsl_matrix_uchar_const_view
+-gsl_matrix_uchar_const_view_array_with_tda (const unsigned char * base, 
+-                                            const size_t n1, 
+-                                            const size_t n2,
+-                                            const size_t tda);
+-
+-_gsl_matrix_uchar_const_view
+-gsl_matrix_uchar_const_view_vector (const gsl_vector_uchar * v,
+-                                    const size_t n1, 
+-                                    const size_t n2);
+-
+-_gsl_matrix_uchar_const_view
+-gsl_matrix_uchar_const_view_vector_with_tda (const gsl_vector_uchar * v,
+-                                             const size_t n1, 
+-                                             const size_t n2,
+-                                             const size_t tda);
+-
+-/* Operations */
+-
+-void gsl_matrix_uchar_set_zero (gsl_matrix_uchar * m);
+-void gsl_matrix_uchar_set_identity (gsl_matrix_uchar * m);
+-void gsl_matrix_uchar_set_all (gsl_matrix_uchar * m, unsigned char x);
+-
+-int gsl_matrix_uchar_fread (FILE * stream, gsl_matrix_uchar * m) ;
+-int gsl_matrix_uchar_fwrite (FILE * stream, const gsl_matrix_uchar * m) ;
+-int gsl_matrix_uchar_fscanf (FILE * stream, gsl_matrix_uchar * m);
+-int gsl_matrix_uchar_fprintf (FILE * stream, const gsl_matrix_uchar * m, const char * format);
+- 
+-int gsl_matrix_uchar_memcpy(gsl_matrix_uchar * dest, const gsl_matrix_uchar * src);
+-int gsl_matrix_uchar_swap(gsl_matrix_uchar * m1, gsl_matrix_uchar * m2);
+-
+-int gsl_matrix_uchar_swap_rows(gsl_matrix_uchar * m, const size_t i, const size_t j);
+-int gsl_matrix_uchar_swap_columns(gsl_matrix_uchar * m, const size_t i, const size_t j);
+-int gsl_matrix_uchar_swap_rowcol(gsl_matrix_uchar * m, const size_t i, const size_t j);
+-int gsl_matrix_uchar_transpose (gsl_matrix_uchar * m);
+-int gsl_matrix_uchar_transpose_memcpy (gsl_matrix_uchar * dest, const gsl_matrix_uchar * src);
+-
+-unsigned char gsl_matrix_uchar_max (const gsl_matrix_uchar * m);
+-unsigned char gsl_matrix_uchar_min (const gsl_matrix_uchar * m);
+-void gsl_matrix_uchar_minmax (const gsl_matrix_uchar * m, unsigned char * min_out, unsigned char * max_out);
+-
+-void gsl_matrix_uchar_max_index (const gsl_matrix_uchar * m, size_t * imax, size_t *jmax);
+-void gsl_matrix_uchar_min_index (const gsl_matrix_uchar * m, size_t * imin, size_t *jmin);
+-void gsl_matrix_uchar_minmax_index (const gsl_matrix_uchar * m, size_t * imin, size_t * jmin, size_t * imax, size_t * jmax);
+-
+-int gsl_matrix_uchar_equal (const gsl_matrix_uchar * a, const gsl_matrix_uchar * b);
+-
+-int gsl_matrix_uchar_isnull (const gsl_matrix_uchar * m);
+-int gsl_matrix_uchar_ispos (const gsl_matrix_uchar * m);
+-int gsl_matrix_uchar_isneg (const gsl_matrix_uchar * m);
+-int gsl_matrix_uchar_isnonneg (const gsl_matrix_uchar * m);
+-
+-int gsl_matrix_uchar_add (gsl_matrix_uchar * a, const gsl_matrix_uchar * b);
+-int gsl_matrix_uchar_sub (gsl_matrix_uchar * a, const gsl_matrix_uchar * b);
+-int gsl_matrix_uchar_mul_elements (gsl_matrix_uchar * a, const gsl_matrix_uchar * b);
+-int gsl_matrix_uchar_div_elements (gsl_matrix_uchar * a, const gsl_matrix_uchar * b);
+-int gsl_matrix_uchar_scale (gsl_matrix_uchar * a, const double x);
+-int gsl_matrix_uchar_add_constant (gsl_matrix_uchar * a, const double x);
+-int gsl_matrix_uchar_add_diagonal (gsl_matrix_uchar * a, const double x);
+-
+-/***********************************************************************/
+-/* The functions below are obsolete                                    */
+-/***********************************************************************/
+-int gsl_matrix_uchar_get_row(gsl_vector_uchar * v, const gsl_matrix_uchar * m, const size_t i);
+-int gsl_matrix_uchar_get_col(gsl_vector_uchar * v, const gsl_matrix_uchar * m, const size_t j);
+-int gsl_matrix_uchar_set_row(gsl_matrix_uchar * m, const size_t i, const gsl_vector_uchar * v);
+-int gsl_matrix_uchar_set_col(gsl_matrix_uchar * m, const size_t j, const gsl_vector_uchar * v);
+-/***********************************************************************/
+-
+-/* inline functions if you are using GCC */
+-
+-INLINE_DECL unsigned char   gsl_matrix_uchar_get(const gsl_matrix_uchar * m, const size_t i, const size_t j);
+-INLINE_DECL void    gsl_matrix_uchar_set(gsl_matrix_uchar * m, const size_t i, const size_t j, const unsigned char x);
+-INLINE_DECL unsigned char * gsl_matrix_uchar_ptr(gsl_matrix_uchar * m, const size_t i, const size_t j);
+-INLINE_DECL const unsigned char * gsl_matrix_uchar_const_ptr(const gsl_matrix_uchar * m, const size_t i, const size_t j);
+-
+-#ifdef HAVE_INLINE
+-INLINE_FUN 
+-unsigned char
+-gsl_matrix_uchar_get(const gsl_matrix_uchar * m, const size_t i, const size_t j)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(1)) 
+-    {
+-      if (i >= m->size1)
+-        {
+-          GSL_ERROR_VAL("first index out of range", GSL_EINVAL, 0) ;
+-        }
+-      else if (j >= m->size2)
+-        {
+-          GSL_ERROR_VAL("second index out of range", GSL_EINVAL, 0) ;
+-        }
+-    }
+-#endif
+-  return m->data[i * m->tda + j] ;
+-} 
+-
+-INLINE_FUN 
+-void
+-gsl_matrix_uchar_set(gsl_matrix_uchar * m, const size_t i, const size_t j, const unsigned char x)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(1)) 
+-    {
+-      if (i >= m->size1)
+-        {
+-          GSL_ERROR_VOID("first index out of range", GSL_EINVAL) ;
+-        }
+-      else if (j >= m->size2)
+-        {
+-          GSL_ERROR_VOID("second index out of range", GSL_EINVAL) ;
+-        }
+-    }
+-#endif
+-  m->data[i * m->tda + j] = x ;
+-}
+-
+-INLINE_FUN 
+-unsigned char *
+-gsl_matrix_uchar_ptr(gsl_matrix_uchar * m, const size_t i, const size_t j)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(1)) 
+-    {
+-      if (i >= m->size1)
+-        {
+-          GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
+-        }
+-      else if (j >= m->size2)
+-        {
+-          GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
+-        }
+-    }
+-#endif
+-  return (unsigned char *) (m->data + (i * m->tda + j)) ;
+-} 
+-
+-INLINE_FUN 
+-const unsigned char *
+-gsl_matrix_uchar_const_ptr(const gsl_matrix_uchar * m, const size_t i, const size_t j)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(1)) 
+-    {
+-      if (i >= m->size1)
+-        {
+-          GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
+-        }
+-      else if (j >= m->size2)
+-        {
+-          GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
+-        }
+-    }
+-#endif
+-  return (const unsigned char *) (m->data + (i * m->tda + j)) ;
+-} 
+-
+-#endif
+-
+-__END_DECLS
+-
+-#endif /* __GSL_MATRIX_UCHAR_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_float.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_float.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_float.h	(revision 14079)
+@@ -1,45 +0,0 @@
+-/* permutation/gsl_permute_vector_float.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_PERMUTE_VECTOR_FLOAT_H__
+-#define __GSL_PERMUTE_VECTOR_FLOAT_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_permutation.h>
+-#include <gsl/gsl_vector_float.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-int gsl_permute_vector_float (const gsl_permutation * p, gsl_vector_float * v);
+-int gsl_permute_vector_float_inverse (const gsl_permutation * p, gsl_vector_float * v);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_PERMUTE_VECTOR_FLOAT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_complex_long_double.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_complex_long_double.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_complex_long_double.h	(revision 14079)
+@@ -1,65 +0,0 @@
+-/* block/gsl_block_complex_long_double.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_BLOCK_COMPLEX_LONG_DOUBLE_H__
+-#define __GSL_BLOCK_COMPLEX_LONG_DOUBLE_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-struct gsl_block_complex_long_double_struct
+-{
+-  size_t size;
+-  long double *data;
+-};
+-
+-typedef struct gsl_block_complex_long_double_struct gsl_block_complex_long_double;
+-
+-gsl_block_complex_long_double *gsl_block_complex_long_double_alloc (const size_t n);
+-gsl_block_complex_long_double *gsl_block_complex_long_double_calloc (const size_t n);
+-void gsl_block_complex_long_double_free (gsl_block_complex_long_double * b);
+-
+-int gsl_block_complex_long_double_fread (FILE * stream, gsl_block_complex_long_double * b);
+-int gsl_block_complex_long_double_fwrite (FILE * stream, const gsl_block_complex_long_double * b);
+-int gsl_block_complex_long_double_fscanf (FILE * stream, gsl_block_complex_long_double * b);
+-int gsl_block_complex_long_double_fprintf (FILE * stream, const gsl_block_complex_long_double * b, const char *format);
+-
+-int gsl_block_complex_long_double_raw_fread (FILE * stream, long double * b, const size_t n, const size_t stride);
+-int gsl_block_complex_long_double_raw_fwrite (FILE * stream, const long double * b, const size_t n, const size_t stride);
+-int gsl_block_complex_long_double_raw_fscanf (FILE * stream, long double * b, const size_t n, const size_t stride);
+-int gsl_block_complex_long_double_raw_fprintf (FILE * stream, const long double * b, const size_t n, const size_t stride, const char *format);
+-
+-size_t gsl_block_complex_long_double_size (const gsl_block_complex_long_double * b);
+-long double * gsl_block_complex_long_double_data (const gsl_block_complex_long_double * b);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_BLOCK_COMPLEX_LONG_DOUBLE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_int.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_int.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_int.h	(revision 14079)
+@@ -1,44 +0,0 @@
+-/* permutation/gsl_permute_int.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_PERMUTE_INT_H__
+-#define __GSL_PERMUTE_INT_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_permutation.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-int gsl_permute_int (const size_t * p, int * data, const size_t stride, const size_t n);
+-int gsl_permute_int_inverse (const size_t * p, int * data, const size_t stride, const size_t n);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_PERMUTE_INT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_gegenbauer.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_gegenbauer.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_gegenbauer.h	(revision 14079)
+@@ -1,73 +0,0 @@
+-/* specfunc/gsl_sf_gegenbauer.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-/* Author:  G. Jungman */
+-
+-#ifndef __GSL_SF_GEGENBAUER_H__
+-#define __GSL_SF_GEGENBAUER_H__
+-
+-#include <gsl/gsl_sf_result.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-
+-/* Evaluate Gegenbauer polynomials
+- * using explicit representations.
+- *
+- * exceptions: none
+- */
+-int gsl_sf_gegenpoly_1_e(double lambda, double x, gsl_sf_result * result);
+-int gsl_sf_gegenpoly_2_e(double lambda, double x, gsl_sf_result * result);
+-int gsl_sf_gegenpoly_3_e(double lambda, double x, gsl_sf_result * result);
+-double gsl_sf_gegenpoly_1(double lambda, double x);
+-double gsl_sf_gegenpoly_2(double lambda, double x);
+-double gsl_sf_gegenpoly_3(double lambda, double x);
+-
+-
+-/* Evaluate Gegenbauer polynomials.
+- *
+- * lambda > -1/2, n >= 0
+- * exceptions: GSL_EDOM
+- */
+-int gsl_sf_gegenpoly_n_e(int n, double lambda, double x, gsl_sf_result * result);
+-double gsl_sf_gegenpoly_n(int n, double lambda, double x);
+-
+-
+-/* Calculate array of Gegenbauer polynomials
+- * for n = (0, 1, 2, ... nmax)
+- *
+- * lambda > -1/2, nmax >= 0
+- * exceptions: GSL_EDOM
+- */
+-int gsl_sf_gegenpoly_array(int nmax, double lambda, double x, double * result_array);
+-
+-
+-__END_DECLS
+-
+-#endif /* __GSL_SF_GEGENBAUER_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_airy.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_airy.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_airy.h	(revision 14079)
+@@ -1,139 +0,0 @@
+-/* specfunc/gsl_sf_airy.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-/* Author:  G. Jungman */
+-
+-#ifndef __GSL_SF_AIRY_H__
+-#define __GSL_SF_AIRY_H__
+-
+-#include <gsl/gsl_mode.h>
+-#include <gsl/gsl_sf_result.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-
+-/* Airy function Ai(x)
+- *
+- * exceptions: GSL_EUNDRFLW
+- */
+-int gsl_sf_airy_Ai_e(const double x, const gsl_mode_t mode, gsl_sf_result * result);
+-double gsl_sf_airy_Ai(const double x, gsl_mode_t mode);
+-
+-
+-/* Airy function Bi(x)
+- *
+- * exceptions: GSL_EOVRFLW
+- */
+-int gsl_sf_airy_Bi_e(const double x, gsl_mode_t mode, gsl_sf_result * result);
+-double gsl_sf_airy_Bi(const double x, gsl_mode_t mode);
+-
+-
+-/* scaled Ai(x):
+- *                     Ai(x)   x < 0
+- *   exp(+2/3 x^{3/2}) Ai(x)   x > 0
+- *
+- * exceptions: none
+- */
+-int gsl_sf_airy_Ai_scaled_e(const double x, gsl_mode_t mode, gsl_sf_result * result);
+-double gsl_sf_airy_Ai_scaled(const double x, gsl_mode_t mode);
+-
+-
+-/* scaled Bi(x):
+- *                     Bi(x)   x < 0
+- *   exp(-2/3 x^{3/2}) Bi(x)   x > 0
+- *
+- * exceptions: none
+- */
+-int gsl_sf_airy_Bi_scaled_e(const double x, gsl_mode_t mode, gsl_sf_result * result);
+-double gsl_sf_airy_Bi_scaled(const double x, gsl_mode_t mode);
+-
+-
+-/* derivative Ai'(x)
+- *
+- * exceptions: GSL_EUNDRFLW
+- */
+-int gsl_sf_airy_Ai_deriv_e(const double x, gsl_mode_t mode, gsl_sf_result * result);
+-double gsl_sf_airy_Ai_deriv(const double x, gsl_mode_t mode);
+-
+-
+-/* derivative Bi'(x)
+- *
+- * exceptions: GSL_EOVRFLW
+- */
+-int gsl_sf_airy_Bi_deriv_e(const double x, gsl_mode_t mode, gsl_sf_result * result);
+-double gsl_sf_airy_Bi_deriv(const double x, gsl_mode_t mode);
+-
+-
+-/* scaled derivative Ai'(x):
+- *                     Ai'(x)   x < 0
+- *   exp(+2/3 x^{3/2}) Ai'(x)   x > 0
+- *
+- * exceptions: none
+- */
+-int gsl_sf_airy_Ai_deriv_scaled_e(const double x, gsl_mode_t mode, gsl_sf_result * result);
+-double gsl_sf_airy_Ai_deriv_scaled(const double x, gsl_mode_t mode);
+-
+-
+-/* scaled derivative:
+- *                     Bi'(x)   x < 0
+- *   exp(-2/3 x^{3/2}) Bi'(x)   x > 0
+- *
+- * exceptions: none
+- */
+-int gsl_sf_airy_Bi_deriv_scaled_e(const double x, gsl_mode_t mode, gsl_sf_result * result);
+-double gsl_sf_airy_Bi_deriv_scaled(const double x, gsl_mode_t mode);
+-
+-
+-/* Zeros of Ai(x)
+- */
+-int gsl_sf_airy_zero_Ai_e(unsigned int s, gsl_sf_result * result);
+-double gsl_sf_airy_zero_Ai(unsigned int s);
+-
+-
+-/* Zeros of Bi(x)
+- */
+-int gsl_sf_airy_zero_Bi_e(unsigned int s, gsl_sf_result * result);
+-double gsl_sf_airy_zero_Bi(unsigned int s);
+-
+-
+-/* Zeros of Ai'(x)
+- */
+-int gsl_sf_airy_zero_Ai_deriv_e(unsigned int s, gsl_sf_result * result);
+-double gsl_sf_airy_zero_Ai_deriv(unsigned int s);
+-
+-
+-/* Zeros of Bi'(x)
+- */
+-int gsl_sf_airy_zero_Bi_deriv_e(unsigned int s, gsl_sf_result * result);
+-double gsl_sf_airy_zero_Bi_deriv(unsigned int s);
+-
+-
+-__END_DECLS
+-
+-#endif /* __GSL_SF_AIRY_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_ulong.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_ulong.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_ulong.h	(revision 14079)
+@@ -1,65 +0,0 @@
+-/* block/gsl_block_ulong.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_BLOCK_ULONG_H__
+-#define __GSL_BLOCK_ULONG_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-struct gsl_block_ulong_struct
+-{
+-  size_t size;
+-  unsigned long *data;
+-};
+-
+-typedef struct gsl_block_ulong_struct gsl_block_ulong;
+-
+-gsl_block_ulong *gsl_block_ulong_alloc (const size_t n);
+-gsl_block_ulong *gsl_block_ulong_calloc (const size_t n);
+-void gsl_block_ulong_free (gsl_block_ulong * b);
+-
+-int gsl_block_ulong_fread (FILE * stream, gsl_block_ulong * b);
+-int gsl_block_ulong_fwrite (FILE * stream, const gsl_block_ulong * b);
+-int gsl_block_ulong_fscanf (FILE * stream, gsl_block_ulong * b);
+-int gsl_block_ulong_fprintf (FILE * stream, const gsl_block_ulong * b, const char *format);
+-
+-int gsl_block_ulong_raw_fread (FILE * stream, unsigned long * b, const size_t n, const size_t stride);
+-int gsl_block_ulong_raw_fwrite (FILE * stream, const unsigned long * b, const size_t n, const size_t stride);
+-int gsl_block_ulong_raw_fscanf (FILE * stream, unsigned long * b, const size_t n, const size_t stride);
+-int gsl_block_ulong_raw_fprintf (FILE * stream, const unsigned long * b, const size_t n, const size_t stride, const char *format);
+-
+-size_t gsl_block_ulong_size (const gsl_block_ulong * b);
+-unsigned long * gsl_block_ulong_data (const gsl_block_ulong * b);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_BLOCK_ULONG_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_uchar.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_uchar.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_uchar.h	(revision 14079)
+@@ -1,44 +0,0 @@
+-/* permutation/gsl_permute_uchar.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_PERMUTE_UCHAR_H__
+-#define __GSL_PERMUTE_UCHAR_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_permutation.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-int gsl_permute_uchar (const size_t * p, unsigned char * data, const size_t stride, const size_t n);
+-int gsl_permute_uchar_inverse (const size_t * p, unsigned char * data, const size_t stride, const size_t n);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_PERMUTE_UCHAR_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_linalg.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_linalg.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_linalg.h	(revision 14079)
+@@ -1,592 +0,0 @@
+-/* linalg/gsl_linalg.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2006, 2007 Gerard Jungman, Brian Gough, Patrick Alken
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_LINALG_H__
+-#define __GSL_LINALG_H__
+-
+-#include <gsl/gsl_mode.h>
+-#include <gsl/gsl_permutation.h>
+-#include <gsl/gsl_vector.h>
+-#include <gsl/gsl_matrix.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-#define __BEGIN_DECLS extern "C" {
+-#define __END_DECLS }
+-#else
+-#define __BEGIN_DECLS           /* empty */
+-#define __END_DECLS             /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-typedef enum
+-  {
+-    GSL_LINALG_MOD_NONE = 0,
+-    GSL_LINALG_MOD_TRANSPOSE = 1,
+-    GSL_LINALG_MOD_CONJUGATE = 2
+-  }
+-gsl_linalg_matrix_mod_t;
+-
+-
+-/* Note: You can now use the gsl_blas_dgemm function instead of matmult */
+-
+-/* Simple implementation of matrix multiply.
+- * Calculates C = A.B
+- *
+- * exceptions: GSL_EBADLEN
+- */
+-int gsl_linalg_matmult (const gsl_matrix * A,
+-                        const gsl_matrix * B,
+-                        gsl_matrix * C);
+-
+-
+-/* Simple implementation of matrix multiply.
+- * Allows transposition of either matrix, so it
+- * can compute A.B or Trans(A).B or A.Trans(B) or Trans(A).Trans(B)
+- *
+- * exceptions: GSL_EBADLEN
+- */
+-int gsl_linalg_matmult_mod (const gsl_matrix * A,
+-                            gsl_linalg_matrix_mod_t modA,
+-                            const gsl_matrix * B,
+-                            gsl_linalg_matrix_mod_t modB,
+-                            gsl_matrix * C);
+-
+-/* Calculate the matrix exponential by the scaling and
+- * squaring method described in Moler + Van Loan,
+- * SIAM Rev 20, 801 (1978). The mode argument allows
+- * choosing an optimal strategy, from the table
+- * given in the paper, for a given precision.
+- *
+- * exceptions: GSL_ENOTSQR, GSL_EBADLEN
+- */
+-int gsl_linalg_exponential_ss(
+-  const gsl_matrix * A,
+-  gsl_matrix * eA,
+-  gsl_mode_t mode
+-  );
+-
+-
+-/* Householder Transformations */
+-
+-double gsl_linalg_householder_transform (gsl_vector * v);
+-gsl_complex gsl_linalg_complex_householder_transform (gsl_vector_complex * v);
+-
+-int gsl_linalg_householder_hm (double tau, 
+-                               const gsl_vector * v, 
+-                               gsl_matrix * A);
+-
+-int gsl_linalg_householder_mh (double tau, 
+-                               const gsl_vector * v, 
+-                               gsl_matrix * A);
+-
+-int gsl_linalg_householder_hv (double tau, 
+-                               const gsl_vector * v, 
+-                               gsl_vector * w);
+-
+-int gsl_linalg_householder_hm1 (double tau, 
+-                                gsl_matrix * A);
+-
+-int gsl_linalg_complex_householder_hm (gsl_complex tau, 
+-                                       const gsl_vector_complex * v, 
+-                                       gsl_matrix_complex * A);
+-
+-int gsl_linalg_complex_householder_mh (gsl_complex tau,
+-                                       const gsl_vector_complex * v,
+-                                       gsl_matrix_complex * A);
+-
+-int gsl_linalg_complex_householder_hv (gsl_complex tau, 
+-                                       const gsl_vector_complex * v, 
+-                                       gsl_vector_complex * w);
+-
+-/* Hessenberg reduction */
+-
+-int gsl_linalg_hessenberg_decomp(gsl_matrix *A, gsl_vector *tau);
+-int gsl_linalg_hessenberg_unpack(gsl_matrix * H, gsl_vector * tau,
+-                                 gsl_matrix * U);
+-int gsl_linalg_hessenberg_unpack_accum(gsl_matrix * H, gsl_vector * tau,
+-                                       gsl_matrix * U);
+-int gsl_linalg_hessenberg_set_zero(gsl_matrix * H);
+-int gsl_linalg_hessenberg_submatrix(gsl_matrix *M, gsl_matrix *A,
+-                                    size_t top, gsl_vector *tau);
+-
+-/* To support gsl-1.9 interface: DEPRECATED */
+-int gsl_linalg_hessenberg(gsl_matrix *A, gsl_vector *tau);
+-
+-
+-/* Hessenberg-Triangular reduction */
+-
+-int gsl_linalg_hesstri_decomp(gsl_matrix * A, gsl_matrix * B,
+-                              gsl_matrix * U, gsl_matrix * V,
+-                              gsl_vector * work);
+-
+-/* Singular Value Decomposition
+-
+- * exceptions: 
+- */
+-
+-int
+-gsl_linalg_SV_decomp (gsl_matrix * A,
+-                      gsl_matrix * V,
+-                      gsl_vector * S,
+-                      gsl_vector * work);
+-
+-int
+-gsl_linalg_SV_decomp_mod (gsl_matrix * A,
+-                          gsl_matrix * X,
+-                          gsl_matrix * V,
+-                          gsl_vector * S,
+-                          gsl_vector * work);
+-
+-int gsl_linalg_SV_decomp_jacobi (gsl_matrix * A,
+-                                 gsl_matrix * Q,
+-                                 gsl_vector * S);
+-
+-int
+-gsl_linalg_SV_solve (const gsl_matrix * U,
+-                     const gsl_matrix * Q,
+-                     const gsl_vector * S,
+-                     const gsl_vector * b,
+-                     gsl_vector * x);
+-
+-
+-/* LU Decomposition, Gaussian elimination with partial pivoting
+- */
+-
+-int gsl_linalg_LU_decomp (gsl_matrix * A, gsl_permutation * p, int *signum);
+-
+-int gsl_linalg_LU_solve (const gsl_matrix * LU,
+-                         const gsl_permutation * p,
+-                         const gsl_vector * b,
+-                         gsl_vector * x);
+-
+-int gsl_linalg_LU_svx (const gsl_matrix * LU,
+-                       const gsl_permutation * p,
+-                       gsl_vector * x);
+-
+-int gsl_linalg_LU_refine (const gsl_matrix * A,
+-                          const gsl_matrix * LU,
+-                          const gsl_permutation * p,
+-                          const gsl_vector * b,
+-                          gsl_vector * x,
+-                          gsl_vector * residual);
+-
+-int gsl_linalg_LU_invert (const gsl_matrix * LU,
+-                          const gsl_permutation * p,
+-                          gsl_matrix * inverse);
+-
+-double gsl_linalg_LU_det (gsl_matrix * LU, int signum);
+-double gsl_linalg_LU_lndet (gsl_matrix * LU);
+-int gsl_linalg_LU_sgndet (gsl_matrix * lu, int signum);
+-
+-/* Complex LU Decomposition */
+-
+-int gsl_linalg_complex_LU_decomp (gsl_matrix_complex * A, 
+-                                  gsl_permutation * p, 
+-                                  int *signum);
+-
+-int gsl_linalg_complex_LU_solve (const gsl_matrix_complex * LU,
+-                                 const gsl_permutation * p,
+-                                 const gsl_vector_complex * b,
+-                                 gsl_vector_complex * x);
+-
+-int gsl_linalg_complex_LU_svx (const gsl_matrix_complex * LU,
+-                               const gsl_permutation * p,
+-                               gsl_vector_complex * x);
+-
+-int gsl_linalg_complex_LU_refine (const gsl_matrix_complex * A,
+-                                  const gsl_matrix_complex * LU,
+-                                  const gsl_permutation * p,
+-                                  const gsl_vector_complex * b,
+-                                  gsl_vector_complex * x,
+-                                  gsl_vector_complex * residual);
+-
+-int gsl_linalg_complex_LU_invert (const gsl_matrix_complex * LU,
+-                                  const gsl_permutation * p,
+-                                  gsl_matrix_complex * inverse);
+-
+-gsl_complex gsl_linalg_complex_LU_det (gsl_matrix_complex * LU,
+-                                       int signum);
+-
+-double gsl_linalg_complex_LU_lndet (gsl_matrix_complex * LU);
+-
+-gsl_complex gsl_linalg_complex_LU_sgndet (gsl_matrix_complex * LU,
+-                                          int signum);
+-
+-/* QR decomposition */
+-
+-int gsl_linalg_QR_decomp (gsl_matrix * A,
+-                          gsl_vector * tau);
+-
+-int gsl_linalg_QR_solve (const gsl_matrix * QR,
+-                         const gsl_vector * tau,
+-                         const gsl_vector * b,
+-                         gsl_vector * x);
+-
+-int gsl_linalg_QR_svx (const gsl_matrix * QR,
+-                       const gsl_vector * tau,
+-                       gsl_vector * x);
+-
+-int gsl_linalg_QR_lssolve (const gsl_matrix * QR, 
+-                           const gsl_vector * tau, 
+-                           const gsl_vector * b, 
+-                           gsl_vector * x, 
+-                           gsl_vector * residual);
+-
+-
+-int gsl_linalg_QR_QRsolve (gsl_matrix * Q,
+-                           gsl_matrix * R,
+-                           const gsl_vector * b,
+-                           gsl_vector * x);
+-
+-int gsl_linalg_QR_Rsolve (const gsl_matrix * QR,
+-                          const gsl_vector * b,
+-                          gsl_vector * x);
+-
+-int gsl_linalg_QR_Rsvx (const gsl_matrix * QR,
+-                        gsl_vector * x);
+-
+-int gsl_linalg_QR_update (gsl_matrix * Q,
+-                          gsl_matrix * R,
+-                          gsl_vector * w,
+-                          const gsl_vector * v);
+-
+-int gsl_linalg_QR_QTvec (const gsl_matrix * QR,
+-                         const gsl_vector * tau,
+-                         gsl_vector * v);
+-
+-int gsl_linalg_QR_Qvec (const gsl_matrix * QR,
+-                        const gsl_vector * tau,
+-                        gsl_vector * v);
+-
+-int gsl_linalg_QR_QTmat (const gsl_matrix * QR,
+-                         const gsl_vector * tau,
+-                         gsl_matrix * A);
+-
+-int gsl_linalg_QR_unpack (const gsl_matrix * QR,
+-                          const gsl_vector * tau,
+-                          gsl_matrix * Q,
+-                          gsl_matrix * R);
+-
+-int gsl_linalg_R_solve (const gsl_matrix * R,
+-                        const gsl_vector * b,
+-                        gsl_vector * x);
+-
+-int gsl_linalg_R_svx (const gsl_matrix * R,
+-                      gsl_vector * x);
+-
+-
+-/* Q R P^T decomposition */
+-
+-int gsl_linalg_QRPT_decomp (gsl_matrix * A,
+-                            gsl_vector * tau,
+-                            gsl_permutation * p,
+-                            int *signum,
+-                            gsl_vector * norm);
+-
+-int gsl_linalg_QRPT_decomp2 (const gsl_matrix * A, 
+-                             gsl_matrix * q, gsl_matrix * r, 
+-                             gsl_vector * tau, 
+-                             gsl_permutation * p, 
+-                             int *signum,
+-                             gsl_vector * norm);
+-
+-int gsl_linalg_QRPT_solve (const gsl_matrix * QR,
+-                           const gsl_vector * tau,
+-                           const gsl_permutation * p,
+-                           const gsl_vector * b,
+-                           gsl_vector * x);
+-
+-
+-int gsl_linalg_QRPT_svx (const gsl_matrix * QR,
+-                         const gsl_vector * tau,
+-                         const gsl_permutation * p,
+-                         gsl_vector * x);
+-
+-int gsl_linalg_QRPT_QRsolve (const gsl_matrix * Q,
+-                             const gsl_matrix * R,
+-                             const gsl_permutation * p,
+-                             const gsl_vector * b,
+-                             gsl_vector * x);
+-
+-int gsl_linalg_QRPT_Rsolve (const gsl_matrix * QR,
+-                             const gsl_permutation * p,
+-                             const gsl_vector * b,
+-                             gsl_vector * x);
+-
+-int gsl_linalg_QRPT_Rsvx (const gsl_matrix * QR,
+-                           const gsl_permutation * p,
+-                           gsl_vector * x);
+-
+-int gsl_linalg_QRPT_update (gsl_matrix * Q,
+-                            gsl_matrix * R,
+-                            const gsl_permutation * p,
+-                            gsl_vector * u,
+-                            const gsl_vector * v);
+-
+-/* LQ decomposition */
+-
+-int gsl_linalg_LQ_decomp (gsl_matrix * A, gsl_vector * tau);
+-
+-int gsl_linalg_LQ_solve_T (const gsl_matrix * LQ, const gsl_vector * tau, 
+-			 const gsl_vector * b, gsl_vector * x);
+-
+-int gsl_linalg_LQ_svx_T (const gsl_matrix * LQ, const gsl_vector * tau, 
+-                         gsl_vector * x);
+-
+-int gsl_linalg_LQ_lssolve_T (const gsl_matrix * LQ, const gsl_vector * tau, 
+-			   const gsl_vector * b, gsl_vector * x, 
+-			   gsl_vector * residual);
+-
+-int gsl_linalg_LQ_Lsolve_T (const gsl_matrix * LQ, const gsl_vector * b, 
+-			  gsl_vector * x);
+-
+-int gsl_linalg_LQ_Lsvx_T (const gsl_matrix * LQ, gsl_vector * x);
+-
+-int gsl_linalg_L_solve_T (const gsl_matrix * L, const gsl_vector * b, 
+-			gsl_vector * x);
+-
+-int gsl_linalg_LQ_vecQ (const gsl_matrix * LQ, const gsl_vector * tau, 
+-			gsl_vector * v);
+-
+-int gsl_linalg_LQ_vecQT (const gsl_matrix * LQ, const gsl_vector * tau, 
+-			 gsl_vector * v);
+-
+-int gsl_linalg_LQ_unpack (const gsl_matrix * LQ, const gsl_vector * tau, 
+-			  gsl_matrix * Q, gsl_matrix * L);
+-
+-int gsl_linalg_LQ_update (gsl_matrix * Q, gsl_matrix * R,
+-			  const gsl_vector * v, gsl_vector * w);
+-int gsl_linalg_LQ_LQsolve (gsl_matrix * Q, gsl_matrix * L, 
+-			   const gsl_vector * b, gsl_vector * x);
+-
+-/* P^T L Q decomposition */
+-
+-int gsl_linalg_PTLQ_decomp (gsl_matrix * A, gsl_vector * tau, 
+-			    gsl_permutation * p, int *signum, 
+-			    gsl_vector * norm);
+-
+-int gsl_linalg_PTLQ_decomp2 (const gsl_matrix * A, gsl_matrix * q, 
+-			     gsl_matrix * r, gsl_vector * tau, 
+-			     gsl_permutation * p, int *signum, 
+-			     gsl_vector * norm);
+-
+-int gsl_linalg_PTLQ_solve_T (const gsl_matrix * QR,
+-			   const gsl_vector * tau,
+-			   const gsl_permutation * p,
+-			   const gsl_vector * b,
+-			   gsl_vector * x);
+-
+-int gsl_linalg_PTLQ_svx_T (const gsl_matrix * LQ,
+-                           const gsl_vector * tau,
+-                           const gsl_permutation * p,
+-                           gsl_vector * x);
+-
+-int gsl_linalg_PTLQ_LQsolve_T (const gsl_matrix * Q, const gsl_matrix * L,
+-			     const gsl_permutation * p,
+-			     const gsl_vector * b,
+-			     gsl_vector * x);
+-
+-int gsl_linalg_PTLQ_Lsolve_T (const gsl_matrix * LQ,
+-			    const gsl_permutation * p,
+-			    const gsl_vector * b,
+-			    gsl_vector * x);
+-
+-int gsl_linalg_PTLQ_Lsvx_T (const gsl_matrix * LQ,
+-			  const gsl_permutation * p,
+-			  gsl_vector * x);
+-
+-int gsl_linalg_PTLQ_update (gsl_matrix * Q, gsl_matrix * L,
+-			    const gsl_permutation * p,
+-			    const gsl_vector * v, gsl_vector * w);
+-
+-/* Cholesky Decomposition */
+-
+-int gsl_linalg_cholesky_decomp (gsl_matrix * A);
+-
+-int gsl_linalg_cholesky_solve (const gsl_matrix * cholesky,
+-                               const gsl_vector * b,
+-                               gsl_vector * x);
+-
+-int gsl_linalg_cholesky_svx (const gsl_matrix * cholesky,
+-                             gsl_vector * x);
+-
+-int gsl_linalg_cholesky_invert(gsl_matrix * cholesky);
+-
+-/* Cholesky decomposition with unit-diagonal triangular parts.
+- *   A = L D L^T, where diag(L) = (1,1,...,1).
+- *   Upon exit, A contains L and L^T as for Cholesky, and
+- *   the diagonal of A is (1,1,...,1). The vector Dis set
+- *   to the diagonal elements of the diagonal matrix D.
+- */
+-int gsl_linalg_cholesky_decomp_unit(gsl_matrix * A, gsl_vector * D);
+-
+-/* Complex Cholesky Decomposition */
+-
+-int gsl_linalg_complex_cholesky_decomp (gsl_matrix_complex * A);
+-
+-int gsl_linalg_complex_cholesky_solve (const gsl_matrix_complex * cholesky,
+-                                       const gsl_vector_complex * b,
+-                                       gsl_vector_complex * x);
+-
+-int gsl_linalg_complex_cholesky_svx (const gsl_matrix_complex * cholesky,
+-                                     gsl_vector_complex * x);
+-
+-int gsl_linalg_complex_cholesky_invert(gsl_matrix_complex * cholesky);
+-
+-
+-/* Symmetric to symmetric tridiagonal decomposition */
+-
+-int gsl_linalg_symmtd_decomp (gsl_matrix * A, 
+-                              gsl_vector * tau);
+-
+-int gsl_linalg_symmtd_unpack (const gsl_matrix * A, 
+-                              const gsl_vector * tau,
+-                              gsl_matrix * Q, 
+-                              gsl_vector * diag, 
+-                              gsl_vector * subdiag);
+-
+-int gsl_linalg_symmtd_unpack_T (const gsl_matrix * A,
+-                                gsl_vector * diag, 
+-                                gsl_vector * subdiag);
+-
+-/* Hermitian to symmetric tridiagonal decomposition */
+-
+-int gsl_linalg_hermtd_decomp (gsl_matrix_complex * A, 
+-                              gsl_vector_complex * tau);
+-
+-int gsl_linalg_hermtd_unpack (const gsl_matrix_complex * A, 
+-                              const gsl_vector_complex * tau,
+-                              gsl_matrix_complex * U, 
+-                              gsl_vector * diag, 
+-                              gsl_vector * sudiag);
+-
+-int gsl_linalg_hermtd_unpack_T (const gsl_matrix_complex * A, 
+-                                gsl_vector * diag, 
+-                                gsl_vector * subdiag);
+-
+-/* Linear Solve Using Householder Transformations
+-
+- * exceptions: 
+- */
+-
+-int gsl_linalg_HH_solve (gsl_matrix * A, const gsl_vector * b, gsl_vector * x);
+-int gsl_linalg_HH_svx (gsl_matrix * A, gsl_vector * x);
+-
+-/* Linear solve for a symmetric tridiagonal system.
+-
+- * The input vectors represent the NxN matrix as follows:
+- *
+- *     diag[0]  offdiag[0]             0    ...
+- *  offdiag[0]     diag[1]    offdiag[1]    ...
+- *           0  offdiag[1]       diag[2]    ...
+- *           0           0    offdiag[2]    ...
+- *         ...         ...           ...    ...
+- */
+-int gsl_linalg_solve_symm_tridiag (const gsl_vector * diag,
+-                                   const gsl_vector * offdiag,
+-                                   const gsl_vector * b,
+-                                   gsl_vector * x);
+-
+-/* Linear solve for a nonsymmetric tridiagonal system.
+-
+- * The input vectors represent the NxN matrix as follows:
+- *
+- *       diag[0]  abovediag[0]              0    ...
+- *  belowdiag[0]       diag[1]   abovediag[1]    ...
+- *             0  belowdiag[1]        diag[2]    ...
+- *             0             0   belowdiag[2]    ...
+- *           ...           ...            ...    ...
+- */
+-int gsl_linalg_solve_tridiag (const gsl_vector * diag,
+-                                   const gsl_vector * abovediag,
+-                                   const gsl_vector * belowdiag,
+-                                   const gsl_vector * b,
+-                                   gsl_vector * x);
+-
+-
+-/* Linear solve for a symmetric cyclic tridiagonal system.
+-
+- * The input vectors represent the NxN matrix as follows:
+- *
+- *      diag[0]  offdiag[0]             0   .....  offdiag[N-1]
+- *   offdiag[0]     diag[1]    offdiag[1]   .....
+- *            0  offdiag[1]       diag[2]   .....
+- *            0           0    offdiag[2]   .....
+- *          ...         ...
+- * offdiag[N-1]         ...
+- */
+-int gsl_linalg_solve_symm_cyc_tridiag (const gsl_vector * diag,
+-                                       const gsl_vector * offdiag,
+-                                       const gsl_vector * b,
+-                                       gsl_vector * x);
+-
+-/* Linear solve for a nonsymmetric cyclic tridiagonal system.
+-
+- * The input vectors represent the NxN matrix as follows:
+- *
+- *        diag[0]  abovediag[0]             0   .....  belowdiag[N-1]
+- *   belowdiag[0]       diag[1]  abovediag[1]   .....
+- *              0  belowdiag[1]       diag[2]
+- *              0             0  belowdiag[2]   .....
+- *            ...           ...
+- * abovediag[N-1]           ...
+- */
+-int gsl_linalg_solve_cyc_tridiag (const gsl_vector * diag,
+-                                  const gsl_vector * abovediag,
+-                                  const gsl_vector * belowdiag,
+-                                  const gsl_vector * b,
+-                                  gsl_vector * x);
+-
+-
+-/* Bidiagonal decomposition */
+-
+-int gsl_linalg_bidiag_decomp (gsl_matrix * A, 
+-                              gsl_vector * tau_U, 
+-                              gsl_vector * tau_V);
+-
+-int gsl_linalg_bidiag_unpack (const gsl_matrix * A, 
+-                              const gsl_vector * tau_U, 
+-                              gsl_matrix * U, 
+-                              const gsl_vector * tau_V,
+-                              gsl_matrix * V,
+-                              gsl_vector * diag, 
+-                              gsl_vector * superdiag);
+-
+-int gsl_linalg_bidiag_unpack2 (gsl_matrix * A, 
+-                               gsl_vector * tau_U, 
+-                               gsl_vector * tau_V,
+-                               gsl_matrix * V);
+-
+-int gsl_linalg_bidiag_unpack_B (const gsl_matrix * A, 
+-                                gsl_vector * diag, 
+-                                gsl_vector * superdiag);
+-
+-/* Balancing */
+-
+-int gsl_linalg_balance_matrix (gsl_matrix * A, gsl_vector * D);
+-int gsl_linalg_balance_accum (gsl_matrix * A, gsl_vector * D);
+-int gsl_linalg_balance_columns (gsl_matrix * A, gsl_vector * D);
+-
+-
+-__END_DECLS
+-
+-#endif /* __GSL_LINALG_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_roots.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_roots.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_roots.h	(revision 14079)
+@@ -1,127 +0,0 @@
+-/* roots/gsl_roots.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Reid Priedhorsky, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_ROOTS_H__
+-#define __GSL_ROOTS_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_types.h>
+-#include <gsl/gsl_math.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-typedef struct
+-  {
+-    const char *name;
+-    size_t size;
+-    int (*set) (void *state, gsl_function * f, double * root, double x_lower, double x_upper);
+-    int (*iterate) (void *state, gsl_function * f, double * root, double * x_lower, double * x_upper);
+-  }
+-gsl_root_fsolver_type;
+-
+-typedef struct
+-  {
+-    const gsl_root_fsolver_type * type;
+-    gsl_function * function ;
+-    double root ;
+-    double x_lower;
+-    double x_upper;
+-    void *state;
+-  }
+-gsl_root_fsolver;
+-
+-typedef struct
+-  {
+-    const char *name;
+-    size_t size;
+-    int (*set) (void *state, gsl_function_fdf * f, double * root);
+-    int (*iterate) (void *state, gsl_function_fdf * f, double * root);
+-  }
+-gsl_root_fdfsolver_type;
+-
+-typedef struct
+-  {
+-    const gsl_root_fdfsolver_type * type;
+-    gsl_function_fdf * fdf ;
+-    double root ;
+-    void *state;
+-  }
+-gsl_root_fdfsolver;
+-
+-gsl_root_fsolver *
+-gsl_root_fsolver_alloc (const gsl_root_fsolver_type * T);
+-void gsl_root_fsolver_free (gsl_root_fsolver * s);
+-
+-int gsl_root_fsolver_set (gsl_root_fsolver * s,
+-                          gsl_function * f, 
+-                          double x_lower, double x_upper);
+-
+-int gsl_root_fsolver_iterate (gsl_root_fsolver * s);
+-
+-const char * gsl_root_fsolver_name (const gsl_root_fsolver * s);
+-double gsl_root_fsolver_root (const gsl_root_fsolver * s);
+-double gsl_root_fsolver_x_lower (const gsl_root_fsolver * s);
+-double gsl_root_fsolver_x_upper (const gsl_root_fsolver * s);
+-
+-
+-gsl_root_fdfsolver *
+-gsl_root_fdfsolver_alloc (const gsl_root_fdfsolver_type * T);
+-
+-int
+-gsl_root_fdfsolver_set (gsl_root_fdfsolver * s, 
+-                         gsl_function_fdf * fdf, double root);
+-
+-int
+-gsl_root_fdfsolver_iterate (gsl_root_fdfsolver * s);
+-
+-void
+-gsl_root_fdfsolver_free (gsl_root_fdfsolver * s);
+-
+-const char * gsl_root_fdfsolver_name (const gsl_root_fdfsolver * s);
+-double gsl_root_fdfsolver_root (const gsl_root_fdfsolver * s);
+-
+-int
+-gsl_root_test_interval (double x_lower, double x_upper, double epsabs, double epsrel);
+-
+-int
+-gsl_root_test_residual (double f, double epsabs);
+-
+-int
+-gsl_root_test_delta (double x1, double x0, double epsabs, double epsrel);
+-
+-GSL_VAR const gsl_root_fsolver_type  * gsl_root_fsolver_bisection;
+-GSL_VAR const gsl_root_fsolver_type  * gsl_root_fsolver_brent;
+-GSL_VAR const gsl_root_fsolver_type  * gsl_root_fsolver_falsepos;
+-GSL_VAR const gsl_root_fdfsolver_type  * gsl_root_fdfsolver_newton;
+-GSL_VAR const gsl_root_fdfsolver_type  * gsl_root_fdfsolver_secant;
+-GSL_VAR const gsl_root_fdfsolver_type  * gsl_root_fdfsolver_steffenson;
+-
+-__END_DECLS
+-
+-#endif /* __GSL_ROOTS_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permutation.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permutation.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permutation.h	(revision 14079)
+@@ -1,100 +0,0 @@
+-/* permutation/gsl_permutation.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004, 2007 Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_PERMUTATION_H__
+-#define __GSL_PERMUTATION_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_types.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_inline.h>
+-#include <gsl/gsl_check_range.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-struct gsl_permutation_struct
+-{
+-  size_t size;
+-  size_t *data;
+-};
+-
+-typedef struct gsl_permutation_struct gsl_permutation;
+-
+-gsl_permutation *gsl_permutation_alloc (const size_t n);
+-gsl_permutation *gsl_permutation_calloc (const size_t n);
+-void gsl_permutation_init (gsl_permutation * p);
+-void gsl_permutation_free (gsl_permutation * p);
+-int gsl_permutation_memcpy (gsl_permutation * dest, const gsl_permutation * src);
+-
+-int gsl_permutation_fread (FILE * stream, gsl_permutation * p);
+-int gsl_permutation_fwrite (FILE * stream, const gsl_permutation * p);
+-int gsl_permutation_fscanf (FILE * stream, gsl_permutation * p);
+-int gsl_permutation_fprintf (FILE * stream, const gsl_permutation * p, const char *format);
+-
+-size_t gsl_permutation_size (const gsl_permutation * p);
+-size_t * gsl_permutation_data (const gsl_permutation * p);
+-
+-int gsl_permutation_swap (gsl_permutation * p, const size_t i, const size_t j);
+-
+-int gsl_permutation_valid (const gsl_permutation * p);
+-void gsl_permutation_reverse (gsl_permutation * p);
+-int gsl_permutation_inverse (gsl_permutation * inv, const gsl_permutation * p);
+-int gsl_permutation_next (gsl_permutation * p);
+-int gsl_permutation_prev (gsl_permutation * p);
+-int gsl_permutation_mul (gsl_permutation * p, const gsl_permutation * pa, const gsl_permutation * pb);
+-
+-int gsl_permutation_linear_to_canonical (gsl_permutation * q, const gsl_permutation * p);
+-int gsl_permutation_canonical_to_linear (gsl_permutation * p, const gsl_permutation * q);
+-
+-size_t gsl_permutation_inversions (const gsl_permutation * p);
+-size_t gsl_permutation_linear_cycles (const gsl_permutation * p);
+-size_t gsl_permutation_canonical_cycles (const gsl_permutation * q);
+-
+-INLINE_DECL size_t gsl_permutation_get (const gsl_permutation * p, const size_t i);
+-
+-#ifdef HAVE_INLINE
+-
+-INLINE_FUN
+-size_t
+-gsl_permutation_get (const gsl_permutation * p, const size_t i)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(i >= p->size))
+-    {
+-      GSL_ERROR_VAL ("index out of range", GSL_EINVAL, 0);
+-    }
+-#endif
+-  return p->data[i];
+-}
+-
+-#endif /* HAVE_INLINE */
+-
+-__END_DECLS
+-
+-#endif /* __GSL_PERMUTATION_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_monte_vegas.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_monte_vegas.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_monte_vegas.h	(revision 14079)
+@@ -1,125 +0,0 @@
+-/* monte/gsl_monte_vegas.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000 Michael Booth
+- * Copyright (C) 2009 Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-/* header for the gsl "vegas" routines.  Mike Booth, May 1998 */
+-
+-#ifndef __GSL_MONTE_VEGAS_H__
+-#define __GSL_MONTE_VEGAS_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_rng.h>
+-#include <gsl/gsl_monte.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-enum {GSL_VEGAS_MODE_IMPORTANCE = 1, 
+-      GSL_VEGAS_MODE_IMPORTANCE_ONLY = 0, 
+-      GSL_VEGAS_MODE_STRATIFIED = -1};
+-
+-typedef struct {
+-  /* grid */
+-  size_t dim;
+-  size_t bins_max;
+-  unsigned int bins;
+-  unsigned int boxes; /* these are both counted along the axes */
+-  double * xi;
+-  double * xin;
+-  double * delx;
+-  double * weight;
+-  double vol;
+-
+-  double * x;
+-  int * bin;
+-  int * box;
+-  
+-  /* distribution */
+-  double * d;
+-
+-  /* control variables */
+-  double alpha;
+-  int mode;
+-  int verbose;
+-  unsigned int iterations;
+-  int stage;
+-
+-  /* scratch variables preserved between calls to vegas1/2/3  */
+-  double jac;
+-  double wtd_int_sum; 
+-  double sum_wgts;
+-  double chi_sum;
+-  double chisq;
+-
+-  double result;
+-  double sigma;
+-
+-  unsigned int it_start;
+-  unsigned int it_num;
+-  unsigned int samples;
+-  unsigned int calls_per_box;
+-
+-  FILE * ostream;
+-
+-} gsl_monte_vegas_state;
+-
+-int gsl_monte_vegas_integrate(gsl_monte_function * f, 
+-                              double xl[], double xu[], 
+-                              size_t dim, size_t calls,
+-                              gsl_rng * r,
+-                              gsl_monte_vegas_state *state,
+-                              double* result, double* abserr);
+-
+-gsl_monte_vegas_state* gsl_monte_vegas_alloc(size_t dim);
+-
+-int gsl_monte_vegas_init(gsl_monte_vegas_state* state);
+-
+-void gsl_monte_vegas_free (gsl_monte_vegas_state* state);
+-
+-double gsl_monte_vegas_chisq (const gsl_monte_vegas_state* state);
+-void gsl_monte_vegas_runval (const gsl_monte_vegas_state* state, double * result, double * sigma);
+-
+-typedef struct {
+-  double alpha;
+-  size_t iterations;
+-  int stage;
+-  int mode;
+-  int verbose;
+-  FILE * ostream;
+-} gsl_monte_vegas_params;
+-
+-void gsl_monte_vegas_params_get (const gsl_monte_vegas_state * state,
+-				 gsl_monte_vegas_params * params);
+-
+-void gsl_monte_vegas_params_set (gsl_monte_vegas_state * state,
+-				 const gsl_monte_vegas_params * params);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_MONTE_VEGAS_H__ */
+-
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_ushort.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_ushort.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_ushort.h	(revision 14079)
+@@ -1,350 +0,0 @@
+-/* matrix/gsl_matrix_ushort.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_MATRIX_USHORT_H__
+-#define __GSL_MATRIX_USHORT_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_types.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_inline.h>
+-#include <gsl/gsl_check_range.h>
+-#include <gsl/gsl_vector_ushort.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-typedef struct 
+-{
+-  size_t size1;
+-  size_t size2;
+-  size_t tda;
+-  unsigned short * data;
+-  gsl_block_ushort * block;
+-  int owner;
+-} gsl_matrix_ushort;
+-
+-typedef struct
+-{
+-  gsl_matrix_ushort matrix;
+-} _gsl_matrix_ushort_view;
+-
+-typedef _gsl_matrix_ushort_view gsl_matrix_ushort_view;
+-
+-typedef struct
+-{
+-  gsl_matrix_ushort matrix;
+-} _gsl_matrix_ushort_const_view;
+-
+-typedef const _gsl_matrix_ushort_const_view gsl_matrix_ushort_const_view;
+-
+-/* Allocation */
+-
+-gsl_matrix_ushort * 
+-gsl_matrix_ushort_alloc (const size_t n1, const size_t n2);
+-
+-gsl_matrix_ushort * 
+-gsl_matrix_ushort_calloc (const size_t n1, const size_t n2);
+-
+-gsl_matrix_ushort * 
+-gsl_matrix_ushort_alloc_from_block (gsl_block_ushort * b, 
+-                                   const size_t offset, 
+-                                   const size_t n1, 
+-                                   const size_t n2, 
+-                                   const size_t d2);
+-
+-gsl_matrix_ushort * 
+-gsl_matrix_ushort_alloc_from_matrix (gsl_matrix_ushort * m,
+-                                    const size_t k1, 
+-                                    const size_t k2,
+-                                    const size_t n1, 
+-                                    const size_t n2);
+-
+-gsl_vector_ushort * 
+-gsl_vector_ushort_alloc_row_from_matrix (gsl_matrix_ushort * m,
+-                                        const size_t i);
+-
+-gsl_vector_ushort * 
+-gsl_vector_ushort_alloc_col_from_matrix (gsl_matrix_ushort * m,
+-                                        const size_t j);
+-
+-void gsl_matrix_ushort_free (gsl_matrix_ushort * m);
+-
+-/* Views */
+-
+-_gsl_matrix_ushort_view 
+-gsl_matrix_ushort_submatrix (gsl_matrix_ushort * m, 
+-                            const size_t i, const size_t j, 
+-                            const size_t n1, const size_t n2);
+-
+-_gsl_vector_ushort_view 
+-gsl_matrix_ushort_row (gsl_matrix_ushort * m, const size_t i);
+-
+-_gsl_vector_ushort_view 
+-gsl_matrix_ushort_column (gsl_matrix_ushort * m, const size_t j);
+-
+-_gsl_vector_ushort_view 
+-gsl_matrix_ushort_diagonal (gsl_matrix_ushort * m);
+-
+-_gsl_vector_ushort_view 
+-gsl_matrix_ushort_subdiagonal (gsl_matrix_ushort * m, const size_t k);
+-
+-_gsl_vector_ushort_view 
+-gsl_matrix_ushort_superdiagonal (gsl_matrix_ushort * m, const size_t k);
+-
+-_gsl_vector_ushort_view
+-gsl_matrix_ushort_subrow (gsl_matrix_ushort * m, const size_t i,
+-                         const size_t offset, const size_t n);
+-
+-_gsl_vector_ushort_view
+-gsl_matrix_ushort_subcolumn (gsl_matrix_ushort * m, const size_t j,
+-                            const size_t offset, const size_t n);
+-
+-_gsl_matrix_ushort_view
+-gsl_matrix_ushort_view_array (unsigned short * base,
+-                             const size_t n1, 
+-                             const size_t n2);
+-
+-_gsl_matrix_ushort_view
+-gsl_matrix_ushort_view_array_with_tda (unsigned short * base, 
+-                                      const size_t n1, 
+-                                      const size_t n2,
+-                                      const size_t tda);
+-
+-
+-_gsl_matrix_ushort_view
+-gsl_matrix_ushort_view_vector (gsl_vector_ushort * v,
+-                              const size_t n1, 
+-                              const size_t n2);
+-
+-_gsl_matrix_ushort_view
+-gsl_matrix_ushort_view_vector_with_tda (gsl_vector_ushort * v,
+-                                       const size_t n1, 
+-                                       const size_t n2,
+-                                       const size_t tda);
+-
+-
+-_gsl_matrix_ushort_const_view 
+-gsl_matrix_ushort_const_submatrix (const gsl_matrix_ushort * m, 
+-                                  const size_t i, const size_t j, 
+-                                  const size_t n1, const size_t n2);
+-
+-_gsl_vector_ushort_const_view 
+-gsl_matrix_ushort_const_row (const gsl_matrix_ushort * m, 
+-                            const size_t i);
+-
+-_gsl_vector_ushort_const_view 
+-gsl_matrix_ushort_const_column (const gsl_matrix_ushort * m, 
+-                               const size_t j);
+-
+-_gsl_vector_ushort_const_view
+-gsl_matrix_ushort_const_diagonal (const gsl_matrix_ushort * m);
+-
+-_gsl_vector_ushort_const_view 
+-gsl_matrix_ushort_const_subdiagonal (const gsl_matrix_ushort * m, 
+-                                    const size_t k);
+-
+-_gsl_vector_ushort_const_view 
+-gsl_matrix_ushort_const_superdiagonal (const gsl_matrix_ushort * m, 
+-                                      const size_t k);
+-
+-_gsl_vector_ushort_const_view
+-gsl_matrix_ushort_const_subrow (const gsl_matrix_ushort * m, const size_t i,
+-                               const size_t offset, const size_t n);
+-
+-_gsl_vector_ushort_const_view
+-gsl_matrix_ushort_const_subcolumn (const gsl_matrix_ushort * m, const size_t j,
+-                                  const size_t offset, const size_t n);
+-
+-_gsl_matrix_ushort_const_view
+-gsl_matrix_ushort_const_view_array (const unsigned short * base,
+-                                   const size_t n1, 
+-                                   const size_t n2);
+-
+-_gsl_matrix_ushort_const_view
+-gsl_matrix_ushort_const_view_array_with_tda (const unsigned short * base, 
+-                                            const size_t n1, 
+-                                            const size_t n2,
+-                                            const size_t tda);
+-
+-_gsl_matrix_ushort_const_view
+-gsl_matrix_ushort_const_view_vector (const gsl_vector_ushort * v,
+-                                    const size_t n1, 
+-                                    const size_t n2);
+-
+-_gsl_matrix_ushort_const_view
+-gsl_matrix_ushort_const_view_vector_with_tda (const gsl_vector_ushort * v,
+-                                             const size_t n1, 
+-                                             const size_t n2,
+-                                             const size_t tda);
+-
+-/* Operations */
+-
+-void gsl_matrix_ushort_set_zero (gsl_matrix_ushort * m);
+-void gsl_matrix_ushort_set_identity (gsl_matrix_ushort * m);
+-void gsl_matrix_ushort_set_all (gsl_matrix_ushort * m, unsigned short x);
+-
+-int gsl_matrix_ushort_fread (FILE * stream, gsl_matrix_ushort * m) ;
+-int gsl_matrix_ushort_fwrite (FILE * stream, const gsl_matrix_ushort * m) ;
+-int gsl_matrix_ushort_fscanf (FILE * stream, gsl_matrix_ushort * m);
+-int gsl_matrix_ushort_fprintf (FILE * stream, const gsl_matrix_ushort * m, const char * format);
+- 
+-int gsl_matrix_ushort_memcpy(gsl_matrix_ushort * dest, const gsl_matrix_ushort * src);
+-int gsl_matrix_ushort_swap(gsl_matrix_ushort * m1, gsl_matrix_ushort * m2);
+-
+-int gsl_matrix_ushort_swap_rows(gsl_matrix_ushort * m, const size_t i, const size_t j);
+-int gsl_matrix_ushort_swap_columns(gsl_matrix_ushort * m, const size_t i, const size_t j);
+-int gsl_matrix_ushort_swap_rowcol(gsl_matrix_ushort * m, const size_t i, const size_t j);
+-int gsl_matrix_ushort_transpose (gsl_matrix_ushort * m);
+-int gsl_matrix_ushort_transpose_memcpy (gsl_matrix_ushort * dest, const gsl_matrix_ushort * src);
+-
+-unsigned short gsl_matrix_ushort_max (const gsl_matrix_ushort * m);
+-unsigned short gsl_matrix_ushort_min (const gsl_matrix_ushort * m);
+-void gsl_matrix_ushort_minmax (const gsl_matrix_ushort * m, unsigned short * min_out, unsigned short * max_out);
+-
+-void gsl_matrix_ushort_max_index (const gsl_matrix_ushort * m, size_t * imax, size_t *jmax);
+-void gsl_matrix_ushort_min_index (const gsl_matrix_ushort * m, size_t * imin, size_t *jmin);
+-void gsl_matrix_ushort_minmax_index (const gsl_matrix_ushort * m, size_t * imin, size_t * jmin, size_t * imax, size_t * jmax);
+-
+-int gsl_matrix_ushort_equal (const gsl_matrix_ushort * a, const gsl_matrix_ushort * b);
+-
+-int gsl_matrix_ushort_isnull (const gsl_matrix_ushort * m);
+-int gsl_matrix_ushort_ispos (const gsl_matrix_ushort * m);
+-int gsl_matrix_ushort_isneg (const gsl_matrix_ushort * m);
+-int gsl_matrix_ushort_isnonneg (const gsl_matrix_ushort * m);
+-
+-int gsl_matrix_ushort_add (gsl_matrix_ushort * a, const gsl_matrix_ushort * b);
+-int gsl_matrix_ushort_sub (gsl_matrix_ushort * a, const gsl_matrix_ushort * b);
+-int gsl_matrix_ushort_mul_elements (gsl_matrix_ushort * a, const gsl_matrix_ushort * b);
+-int gsl_matrix_ushort_div_elements (gsl_matrix_ushort * a, const gsl_matrix_ushort * b);
+-int gsl_matrix_ushort_scale (gsl_matrix_ushort * a, const double x);
+-int gsl_matrix_ushort_add_constant (gsl_matrix_ushort * a, const double x);
+-int gsl_matrix_ushort_add_diagonal (gsl_matrix_ushort * a, const double x);
+-
+-/***********************************************************************/
+-/* The functions below are obsolete                                    */
+-/***********************************************************************/
+-int gsl_matrix_ushort_get_row(gsl_vector_ushort * v, const gsl_matrix_ushort * m, const size_t i);
+-int gsl_matrix_ushort_get_col(gsl_vector_ushort * v, const gsl_matrix_ushort * m, const size_t j);
+-int gsl_matrix_ushort_set_row(gsl_matrix_ushort * m, const size_t i, const gsl_vector_ushort * v);
+-int gsl_matrix_ushort_set_col(gsl_matrix_ushort * m, const size_t j, const gsl_vector_ushort * v);
+-/***********************************************************************/
+-
+-/* inline functions if you are using GCC */
+-
+-INLINE_DECL unsigned short   gsl_matrix_ushort_get(const gsl_matrix_ushort * m, const size_t i, const size_t j);
+-INLINE_DECL void    gsl_matrix_ushort_set(gsl_matrix_ushort * m, const size_t i, const size_t j, const unsigned short x);
+-INLINE_DECL unsigned short * gsl_matrix_ushort_ptr(gsl_matrix_ushort * m, const size_t i, const size_t j);
+-INLINE_DECL const unsigned short * gsl_matrix_ushort_const_ptr(const gsl_matrix_ushort * m, const size_t i, const size_t j);
+-
+-#ifdef HAVE_INLINE
+-INLINE_FUN 
+-unsigned short
+-gsl_matrix_ushort_get(const gsl_matrix_ushort * m, const size_t i, const size_t j)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(1)) 
+-    {
+-      if (i >= m->size1)
+-        {
+-          GSL_ERROR_VAL("first index out of range", GSL_EINVAL, 0) ;
+-        }
+-      else if (j >= m->size2)
+-        {
+-          GSL_ERROR_VAL("second index out of range", GSL_EINVAL, 0) ;
+-        }
+-    }
+-#endif
+-  return m->data[i * m->tda + j] ;
+-} 
+-
+-INLINE_FUN 
+-void
+-gsl_matrix_ushort_set(gsl_matrix_ushort * m, const size_t i, const size_t j, const unsigned short x)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(1)) 
+-    {
+-      if (i >= m->size1)
+-        {
+-          GSL_ERROR_VOID("first index out of range", GSL_EINVAL) ;
+-        }
+-      else if (j >= m->size2)
+-        {
+-          GSL_ERROR_VOID("second index out of range", GSL_EINVAL) ;
+-        }
+-    }
+-#endif
+-  m->data[i * m->tda + j] = x ;
+-}
+-
+-INLINE_FUN 
+-unsigned short *
+-gsl_matrix_ushort_ptr(gsl_matrix_ushort * m, const size_t i, const size_t j)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(1)) 
+-    {
+-      if (i >= m->size1)
+-        {
+-          GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
+-        }
+-      else if (j >= m->size2)
+-        {
+-          GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
+-        }
+-    }
+-#endif
+-  return (unsigned short *) (m->data + (i * m->tda + j)) ;
+-} 
+-
+-INLINE_FUN 
+-const unsigned short *
+-gsl_matrix_ushort_const_ptr(const gsl_matrix_ushort * m, const size_t i, const size_t j)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(1)) 
+-    {
+-      if (i >= m->size1)
+-        {
+-          GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
+-        }
+-      else if (j >= m->size2)
+-        {
+-          GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
+-        }
+-    }
+-#endif
+-  return (const unsigned short *) (m->data + (i * m->tda + j)) ;
+-} 
+-
+-#endif
+-
+-__END_DECLS
+-
+-#endif /* __GSL_MATRIX_USHORT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_short.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_short.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_short.h	(revision 14079)
+@@ -1,79 +0,0 @@
+-/* statistics/gsl_statistics_short.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_STATISTICS_SHORT_H__
+-#define __GSL_STATISTICS_SHORT_H__
+-
+-#include <stddef.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-double gsl_stats_short_mean (const short data[], const size_t stride, const size_t n);
+-double gsl_stats_short_variance (const short data[], const size_t stride, const size_t n);
+-double gsl_stats_short_sd (const short data[], const size_t stride, const size_t n);
+-double gsl_stats_short_variance_with_fixed_mean (const short data[], const size_t stride, const size_t n, const double mean);
+-double gsl_stats_short_sd_with_fixed_mean (const short data[], const size_t stride, const size_t n, const double mean);
+-double gsl_stats_short_tss (const short data[], const size_t stride, const size_t n);
+-double gsl_stats_short_tss_m (const short data[], const size_t stride, const size_t n, const double mean);
+-
+-double gsl_stats_short_absdev (const short data[], const size_t stride, const size_t n);
+-double gsl_stats_short_skew (const short data[], const size_t stride, const size_t n);
+-double gsl_stats_short_kurtosis (const short data[], const size_t stride, const size_t n);
+-double gsl_stats_short_lag1_autocorrelation (const short data[], const size_t stride, const size_t n);
+-
+-double gsl_stats_short_covariance (const short data1[], const size_t stride1,const short data2[], const size_t stride2, const size_t n);
+-double gsl_stats_short_correlation (const short data1[], const size_t stride1,const short data2[], const size_t stride2, const size_t n);
+-
+-double gsl_stats_short_variance_m (const short data[], const size_t stride, const size_t n, const double mean);
+-double gsl_stats_short_sd_m (const short data[], const size_t stride, const size_t n, const double mean);
+-double gsl_stats_short_absdev_m (const short data[], const size_t stride, const size_t n, const double mean);
+-double gsl_stats_short_skew_m_sd (const short data[], const size_t stride, const size_t n, const double mean, const double sd);
+-double gsl_stats_short_kurtosis_m_sd (const short data[], const size_t stride, const size_t n, const double mean, const double sd);
+-double gsl_stats_short_lag1_autocorrelation_m (const short data[], const size_t stride, const size_t n, const double mean);
+-
+-double gsl_stats_short_covariance_m (const short data1[], const size_t stride1,const short data2[], const size_t stride2, const size_t n, const double mean1, const double mean2);
+-
+-
+-double gsl_stats_short_pvariance (const short data1[], const size_t stride1, const size_t n1, const short data2[], const size_t stride2, const size_t n2);
+-double gsl_stats_short_ttest (const short data1[], const size_t stride1, const size_t n1, const short data2[], const size_t stride2, const size_t n2);
+-
+-short gsl_stats_short_max (const short data[], const size_t stride, const size_t n);
+-short gsl_stats_short_min (const short data[], const size_t stride, const size_t n);
+-void gsl_stats_short_minmax (short * min, short * max, const short data[], const size_t stride, const size_t n);
+-
+-size_t gsl_stats_short_max_index (const short data[], const size_t stride, const size_t n);
+-size_t gsl_stats_short_min_index (const short data[], const size_t stride, const size_t n);
+-void gsl_stats_short_minmax_index (size_t * min_index, size_t * max_index, const short data[], const size_t stride, const size_t n);
+-
+-double gsl_stats_short_median_from_sorted_data (const short sorted_data[], const size_t stride, const size_t n) ;
+-double gsl_stats_short_quantile_from_sorted_data (const short sorted_data[], const size_t stride, const size_t n, const double f) ;
+-
+-__END_DECLS
+-
+-#endif /* __GSL_STATISTICS_SHORT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_nan.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_nan.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_nan.h	(revision 14079)
+@@ -1,45 +0,0 @@
+-/* gsl_nan.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_NAN_H__
+-#define __GSL_NAN_H__
+-
+-#ifdef INFINITY
+-# define GSL_POSINF INFINITY
+-# define GSL_NEGINF (-INFINITY)
+-#elif defined(HUGE_VAL)
+-# define GSL_POSINF HUGE_VAL
+-# define GSL_NEGINF (-HUGE_VAL)
+-#else
+-# define GSL_POSINF (gsl_posinf())
+-# define GSL_NEGINF (gsl_neginf())
+-#endif
+-
+-#ifdef NAN
+-# define GSL_NAN NAN
+-#elif defined(INFINITY)
+-# define GSL_NAN (INFINITY/INFINITY)
+-#else
+-# define GSL_NAN (gsl_nan())
+-#endif
+-
+-#define GSL_POSZERO (+0.0)
+-#define GSL_NEGZERO (-0.0)
+-
+-#endif /* __GSL_NAN_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_int.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_int.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_int.h	(revision 14079)
+@@ -1,45 +0,0 @@
+-/* permutation/gsl_permute_vector_int.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_PERMUTE_VECTOR_INT_H__
+-#define __GSL_PERMUTE_VECTOR_INT_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_permutation.h>
+-#include <gsl/gsl_vector_int.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-int gsl_permute_vector_int (const gsl_permutation * p, gsl_vector_int * v);
+-int gsl_permute_vector_int_inverse (const gsl_permutation * p, gsl_vector_int * v);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_PERMUTE_VECTOR_INT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_legendre.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_legendre.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_legendre.h	(revision 14079)
+@@ -1,315 +0,0 @@
+-/* specfunc/gsl_sf_legendre.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2004 Gerard Jungman
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-/* Author:  G. Jungman */
+-
+-#ifndef __GSL_SF_LEGENDRE_H__
+-#define __GSL_SF_LEGENDRE_H__
+-
+-#include <gsl/gsl_sf_result.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-
+-/* P_l(x)   l >= 0; |x| <= 1
+- *
+- * exceptions: GSL_EDOM
+- */
+-int     gsl_sf_legendre_Pl_e(const int l, const double x, gsl_sf_result * result);
+-double  gsl_sf_legendre_Pl(const int l, const double x);
+-
+-
+-/* P_l(x) for l=0,...,lmax; |x| <= 1
+- *
+- * exceptions: GSL_EDOM
+- */
+-int gsl_sf_legendre_Pl_array(
+-  const int lmax, const double x,
+-  double * result_array
+-  );
+-
+-
+-/* P_l(x) and P_l'(x) for l=0,...,lmax; |x| <= 1
+- *
+- * exceptions: GSL_EDOM
+- */
+-int gsl_sf_legendre_Pl_deriv_array(
+-  const int lmax, const double x,
+-  double * result_array,
+-  double * result_deriv_array
+-  );
+-
+-
+-/* P_l(x), l=1,2,3
+- *
+- * exceptions: none
+- */
+-int gsl_sf_legendre_P1_e(double x, gsl_sf_result * result);
+-int gsl_sf_legendre_P2_e(double x, gsl_sf_result * result);
+-int gsl_sf_legendre_P3_e(double x, gsl_sf_result * result);
+-double gsl_sf_legendre_P1(const double x);
+-double gsl_sf_legendre_P2(const double x);
+-double gsl_sf_legendre_P3(const double x);
+-
+-
+-/* Q_0(x), x > -1, x != 1
+- *
+- * exceptions: GSL_EDOM
+- */
+-int gsl_sf_legendre_Q0_e(const double x, gsl_sf_result * result);
+-double gsl_sf_legendre_Q0(const double x);
+-
+-
+-/* Q_1(x), x > -1, x != 1
+- *
+- * exceptions: GSL_EDOM
+- */
+-int gsl_sf_legendre_Q1_e(const double x, gsl_sf_result * result);
+-double gsl_sf_legendre_Q1(const double x);
+-
+-
+-/* Q_l(x), x > -1, x != 1, l >= 0
+- *
+- * exceptions: GSL_EDOM
+- */
+-int gsl_sf_legendre_Ql_e(const int l, const double x, gsl_sf_result * result);
+-double gsl_sf_legendre_Ql(const int l, const double x);
+-
+-
+-/* P_l^m(x)  m >= 0; l >= m; |x| <= 1.0
+- *
+- * Note that this function grows combinatorially with l.
+- * Therefore we can easily generate an overflow for l larger
+- * than about 150.
+- *
+- * There is no trouble for small m, but when m and l are both large,
+- * then there will be trouble. Rather than allow overflows, these
+- * functions refuse to calculate when they can sense that l and m are
+- * too big.
+- *
+- * If you really want to calculate a spherical harmonic, then DO NOT
+- * use this. Instead use legendre_sphPlm() below, which  uses a similar
+- * recursion, but with the normalized functions.
+- *
+- * exceptions: GSL_EDOM, GSL_EOVRFLW
+- */
+-int     gsl_sf_legendre_Plm_e(const int l, const int m, const double x, gsl_sf_result * result);
+-double  gsl_sf_legendre_Plm(const int l, const int m, const double x);
+-
+-
+-/* P_l^m(x)  m >= 0; l >= m; |x| <= 1.0
+- * l=|m|,...,lmax
+- *
+- * exceptions: GSL_EDOM, GSL_EOVRFLW
+- */
+-int gsl_sf_legendre_Plm_array(
+-  const int lmax, const int m, const double x,
+-  double * result_array
+-  );
+-
+-
+-/* P_l^m(x)  and d(P_l^m(x))/dx;  m >= 0; lmax >= m; |x| <= 1.0
+- * l=|m|,...,lmax
+- *
+- * exceptions: GSL_EDOM, GSL_EOVRFLW
+- */
+-int gsl_sf_legendre_Plm_deriv_array(
+-  const int lmax, const int m, const double x,
+-  double * result_array,
+-  double * result_deriv_array
+-  );
+-
+-
+-/* P_l^m(x), normalized properly for use in spherical harmonics
+- * m >= 0; l >= m; |x| <= 1.0
+- *
+- * There is no overflow problem, as there is for the
+- * standard normalization of P_l^m(x).
+- *
+- * Specifically, it returns:
+- *
+- *        sqrt((2l+1)/(4pi)) sqrt((l-m)!/(l+m)!) P_l^m(x)
+- *
+- * exceptions: GSL_EDOM
+- */
+-int     gsl_sf_legendre_sphPlm_e(const int l, int m, const double x, gsl_sf_result * result);
+-double  gsl_sf_legendre_sphPlm(const int l, const int m, const double x);
+-
+-
+-/* sphPlm(l,m,x) values
+- * m >= 0; l >= m; |x| <= 1.0
+- * l=|m|,...,lmax
+- *
+- * exceptions: GSL_EDOM
+- */
+-int gsl_sf_legendre_sphPlm_array(
+-  const int lmax, int m, const double x,
+-  double * result_array
+-  );
+-
+-
+-/* sphPlm(l,m,x) and d(sphPlm(l,m,x))/dx values
+- * m >= 0; l >= m; |x| <= 1.0
+- * l=|m|,...,lmax
+- *
+- * exceptions: GSL_EDOM
+- */
+-int gsl_sf_legendre_sphPlm_deriv_array(
+-  const int lmax, const int m, const double x,
+-  double * result_array,
+-  double * result_deriv_array
+-  );
+-
+-
+-
+-/* size of result_array[] needed for the array versions of Plm
+- * (lmax - m + 1)
+- */
+-int gsl_sf_legendre_array_size(const int lmax, const int m);
+-
+-/* Irregular Spherical Conical Function
+- * P^{1/2}_{-1/2 + I lambda}(x)
+- *
+- * x > -1.0
+- * exceptions: GSL_EDOM
+- */
+-int gsl_sf_conicalP_half_e(const double lambda, const double x, gsl_sf_result * result);
+-double gsl_sf_conicalP_half(const double lambda, const double x);
+-
+-
+-/* Regular Spherical Conical Function
+- * P^{-1/2}_{-1/2 + I lambda}(x)
+- *
+- * x > -1.0
+- * exceptions: GSL_EDOM
+- */
+-int gsl_sf_conicalP_mhalf_e(const double lambda, const double x, gsl_sf_result * result);
+-double gsl_sf_conicalP_mhalf(const double lambda, const double x);
+-
+-
+-/* Conical Function
+- * P^{0}_{-1/2 + I lambda}(x)
+- *
+- * x > -1.0
+- * exceptions: GSL_EDOM
+- */
+-int gsl_sf_conicalP_0_e(const double lambda, const double x, gsl_sf_result * result);
+-double gsl_sf_conicalP_0(const double lambda, const double x);
+-
+-
+-/* Conical Function
+- * P^{1}_{-1/2 + I lambda}(x)
+- *
+- * x > -1.0
+- * exceptions: GSL_EDOM
+- */
+-int gsl_sf_conicalP_1_e(const double lambda, const double x, gsl_sf_result * result);
+-double gsl_sf_conicalP_1(const double lambda, const double x);
+-
+-
+-/* Regular Spherical Conical Function
+- * P^{-1/2-l}_{-1/2 + I lambda}(x)
+- *
+- * x > -1.0, l >= -1
+- * exceptions: GSL_EDOM
+- */
+-int gsl_sf_conicalP_sph_reg_e(const int l, const double lambda, const double x, gsl_sf_result * result);
+-double gsl_sf_conicalP_sph_reg(const int l, const double lambda, const double x);
+-
+-
+-/* Regular Cylindrical Conical Function
+- * P^{-m}_{-1/2 + I lambda}(x)
+- *
+- * x > -1.0, m >= -1
+- * exceptions: GSL_EDOM
+- */
+-int gsl_sf_conicalP_cyl_reg_e(const int m, const double lambda, const double x, gsl_sf_result * result);
+-double gsl_sf_conicalP_cyl_reg(const int m, const double lambda, const double x);
+-
+-
+-/* The following spherical functions are specializations
+- * of Legendre functions which give the regular eigenfunctions
+- * of the Laplacian on a 3-dimensional hyperbolic space.
+- * Of particular interest is the flat limit, which is
+- * Flat-Lim := {lambda->Inf, eta->0, lambda*eta fixed}.
+- */
+-  
+-/* Zeroth radial eigenfunction of the Laplacian on the
+- * 3-dimensional hyperbolic space.
+- *
+- * legendre_H3d_0(lambda,eta) := sin(lambda*eta)/(lambda*sinh(eta))
+- * 
+- * Normalization:
+- * Flat-Lim legendre_H3d_0(lambda,eta) = j_0(lambda*eta)
+- *
+- * eta >= 0.0
+- * exceptions: GSL_EDOM
+- */
+-int gsl_sf_legendre_H3d_0_e(const double lambda, const double eta, gsl_sf_result * result);
+-double gsl_sf_legendre_H3d_0(const double lambda, const double eta);
+-
+-
+-/* First radial eigenfunction of the Laplacian on the
+- * 3-dimensional hyperbolic space.
+- *
+- * legendre_H3d_1(lambda,eta) :=
+- *    1/sqrt(lambda^2 + 1) sin(lam eta)/(lam sinh(eta))
+- *    (coth(eta) - lambda cot(lambda*eta))
+- * 
+- * Normalization:
+- * Flat-Lim legendre_H3d_1(lambda,eta) = j_1(lambda*eta)
+- *
+- * eta >= 0.0
+- * exceptions: GSL_EDOM
+- */
+-int gsl_sf_legendre_H3d_1_e(const double lambda, const double eta, gsl_sf_result * result);
+-double gsl_sf_legendre_H3d_1(const double lambda, const double eta);
+-
+-
+-/* l'th radial eigenfunction of the Laplacian on the
+- * 3-dimensional hyperbolic space.
+- *
+- * Normalization:
+- * Flat-Lim legendre_H3d_l(l,lambda,eta) = j_l(lambda*eta)
+- *
+- * eta >= 0.0, l >= 0
+- * exceptions: GSL_EDOM
+- */
+-int gsl_sf_legendre_H3d_e(const int l, const double lambda, const double eta, gsl_sf_result * result);
+-double gsl_sf_legendre_H3d(const int l, const double lambda, const double eta);
+-
+-
+-/* Array of H3d(ell),  0 <= ell <= lmax
+- */
+-int gsl_sf_legendre_H3d_array(const int lmax, const double lambda, const double eta, double * result_array);
+-
+-
+-__END_DECLS
+-
+-#endif /* __GSL_SF_LEGENDRE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_lambert.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_lambert.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_lambert.h	(revision 14079)
+@@ -1,69 +0,0 @@
+-/* specfunc/gsl_sf_lambert.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 Gerard Jungman
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-/* Author:  G. Jungman */
+-
+-#ifndef __GSL_SF_LAMBERT_H__
+-#define __GSL_SF_LAMBERT_H__
+-
+-#include <gsl/gsl_sf_result.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-
+-/* Lambert's Function W_0(x)
+- *
+- * W_0(x) is the principal branch of the
+- * implicit function defined by W e^W = x.
+- *
+- * -1/E < x < \infty
+- *
+- * exceptions: GSL_EMAXITER;
+- */
+-int     gsl_sf_lambert_W0_e(double x, gsl_sf_result * result);
+-double  gsl_sf_lambert_W0(double x);
+-
+-
+-/* Lambert's Function W_{-1}(x)
+- *
+- * W_{-1}(x) is the second real branch of the
+- * implicit function defined by W e^W = x.
+- * It agrees with W_0(x) when x >= 0.
+- *
+- * -1/E < x < \infty
+- *
+- * exceptions: GSL_MAXITER;
+- */
+-int     gsl_sf_lambert_Wm1_e(double x, gsl_sf_result * result);
+-double  gsl_sf_lambert_Wm1(double x);
+-
+-
+-__END_DECLS
+-
+-#endif /* __GSL_SF_LAMBERT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_char.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_char.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_char.h	(revision 14079)
+@@ -1,44 +0,0 @@
+-/* permutation/gsl_permute_char.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_PERMUTE_CHAR_H__
+-#define __GSL_PERMUTE_CHAR_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_permutation.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-int gsl_permute_char (const size_t * p, char * data, const size_t stride, const size_t n);
+-int gsl_permute_char_inverse (const size_t * p, char * data, const size_t stride, const size_t n);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_PERMUTE_CHAR_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_complex_float.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_complex_float.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_complex_float.h	(revision 14079)
+@@ -1,251 +0,0 @@
+-/* vector/gsl_vector_complex_float.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_VECTOR_COMPLEX_FLOAT_H__
+-#define __GSL_VECTOR_COMPLEX_FLOAT_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_types.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_complex.h>
+-#include <gsl/gsl_check_range.h>
+-#include <gsl/gsl_vector_float.h>
+-#include <gsl/gsl_vector_complex.h>
+-#include <gsl/gsl_block_complex_float.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-typedef struct 
+-{
+-  size_t size;
+-  size_t stride;
+-  float *data;
+-  gsl_block_complex_float *block;
+-  int owner;
+-} gsl_vector_complex_float;
+-
+-typedef struct
+-{
+-  gsl_vector_complex_float vector;
+-} _gsl_vector_complex_float_view;
+-
+-typedef _gsl_vector_complex_float_view gsl_vector_complex_float_view;
+-
+-typedef struct
+-{
+-  gsl_vector_complex_float vector;
+-} _gsl_vector_complex_float_const_view;
+-
+-typedef const _gsl_vector_complex_float_const_view gsl_vector_complex_float_const_view;
+-
+-/* Allocation */
+-
+-gsl_vector_complex_float *gsl_vector_complex_float_alloc (const size_t n);
+-gsl_vector_complex_float *gsl_vector_complex_float_calloc (const size_t n);
+-
+-gsl_vector_complex_float *
+-gsl_vector_complex_float_alloc_from_block (gsl_block_complex_float * b, 
+-                                           const size_t offset, 
+-                                           const size_t n, 
+-                                           const size_t stride);
+-
+-gsl_vector_complex_float *
+-gsl_vector_complex_float_alloc_from_vector (gsl_vector_complex_float * v, 
+-                                             const size_t offset, 
+-                                             const size_t n, 
+-                                             const size_t stride);
+-
+-void gsl_vector_complex_float_free (gsl_vector_complex_float * v);
+-
+-/* Views */
+-
+-_gsl_vector_complex_float_view
+-gsl_vector_complex_float_view_array (float *base,
+-                                     size_t n);
+-
+-_gsl_vector_complex_float_view
+-gsl_vector_complex_float_view_array_with_stride (float *base,
+-                                                 size_t stride,
+-                                                 size_t n);
+-
+-_gsl_vector_complex_float_const_view
+-gsl_vector_complex_float_const_view_array (const float *base,
+-                                           size_t n);
+-
+-_gsl_vector_complex_float_const_view
+-gsl_vector_complex_float_const_view_array_with_stride (const float *base,
+-                                                       size_t stride,
+-                                                       size_t n);
+-
+-_gsl_vector_complex_float_view
+-gsl_vector_complex_float_subvector (gsl_vector_complex_float *base,
+-                                         size_t i, 
+-                                         size_t n);
+-
+-
+-_gsl_vector_complex_float_view 
+-gsl_vector_complex_float_subvector_with_stride (gsl_vector_complex_float *v, 
+-                                                size_t i, 
+-                                                size_t stride, 
+-                                                size_t n);
+-
+-_gsl_vector_complex_float_const_view
+-gsl_vector_complex_float_const_subvector (const gsl_vector_complex_float *base,
+-                                               size_t i, 
+-                                               size_t n);
+-
+-
+-_gsl_vector_complex_float_const_view 
+-gsl_vector_complex_float_const_subvector_with_stride (const gsl_vector_complex_float *v, 
+-                                                      size_t i, 
+-                                                      size_t stride, 
+-                                                      size_t n);
+-
+-_gsl_vector_float_view
+-gsl_vector_complex_float_real (gsl_vector_complex_float *v);
+-
+-_gsl_vector_float_view 
+-gsl_vector_complex_float_imag (gsl_vector_complex_float *v);
+-
+-_gsl_vector_float_const_view
+-gsl_vector_complex_float_const_real (const gsl_vector_complex_float *v);
+-
+-_gsl_vector_float_const_view 
+-gsl_vector_complex_float_const_imag (const gsl_vector_complex_float *v);
+-
+-
+-/* Operations */
+-
+-void gsl_vector_complex_float_set_zero (gsl_vector_complex_float * v);
+-void gsl_vector_complex_float_set_all (gsl_vector_complex_float * v,
+-                                       gsl_complex_float z);
+-int gsl_vector_complex_float_set_basis (gsl_vector_complex_float * v, size_t i);
+-
+-int gsl_vector_complex_float_fread (FILE * stream,
+-                                    gsl_vector_complex_float * v);
+-int gsl_vector_complex_float_fwrite (FILE * stream,
+-                                     const gsl_vector_complex_float * v);
+-int gsl_vector_complex_float_fscanf (FILE * stream,
+-                                     gsl_vector_complex_float * v);
+-int gsl_vector_complex_float_fprintf (FILE * stream,
+-                                      const gsl_vector_complex_float * v,
+-                                      const char *format);
+-
+-int gsl_vector_complex_float_memcpy (gsl_vector_complex_float * dest, const gsl_vector_complex_float * src);
+-
+-int gsl_vector_complex_float_reverse (gsl_vector_complex_float * v);
+-
+-int gsl_vector_complex_float_swap (gsl_vector_complex_float * v, gsl_vector_complex_float * w);
+-int gsl_vector_complex_float_swap_elements (gsl_vector_complex_float * v, const size_t i, const size_t j);
+-
+-int gsl_vector_complex_float_equal (const gsl_vector_complex_float * u, 
+-                                    const gsl_vector_complex_float * v);
+-
+-int gsl_vector_complex_float_isnull (const gsl_vector_complex_float * v);
+-int gsl_vector_complex_float_ispos (const gsl_vector_complex_float * v);
+-int gsl_vector_complex_float_isneg (const gsl_vector_complex_float * v);
+-int gsl_vector_complex_float_isnonneg (const gsl_vector_complex_float * v);
+-
+-int gsl_vector_complex_float_add (gsl_vector_complex_float * a, const gsl_vector_complex_float * b);
+-int gsl_vector_complex_float_sub (gsl_vector_complex_float * a, const gsl_vector_complex_float * b);
+-int gsl_vector_complex_float_mul (gsl_vector_complex_float * a, const gsl_vector_complex_float * b);
+-int gsl_vector_complex_float_div (gsl_vector_complex_float * a, const gsl_vector_complex_float * b);
+-int gsl_vector_complex_float_scale (gsl_vector_complex_float * a, const gsl_complex_float x);
+-int gsl_vector_complex_float_add_constant (gsl_vector_complex_float * a, const gsl_complex_float x);
+-
+-INLINE_DECL gsl_complex_float gsl_vector_complex_float_get (const gsl_vector_complex_float * v, const size_t i);
+-INLINE_DECL void gsl_vector_complex_float_set (gsl_vector_complex_float * v, const size_t i, gsl_complex_float z);
+-INLINE_DECL gsl_complex_float *gsl_vector_complex_float_ptr (gsl_vector_complex_float * v, const size_t i);
+-INLINE_DECL const gsl_complex_float *gsl_vector_complex_float_const_ptr (const gsl_vector_complex_float * v, const size_t i);
+-
+-#ifdef HAVE_INLINE
+-
+-INLINE_FUN
+-gsl_complex_float
+-gsl_vector_complex_float_get (const gsl_vector_complex_float * v,
+-                              const size_t i)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(i >= v->size))
+-    {
+-      gsl_complex_float zero = {{0, 0}};
+-      GSL_ERROR_VAL ("index out of range", GSL_EINVAL, zero);
+-    }
+-#endif
+-  return *GSL_COMPLEX_FLOAT_AT (v, i);
+-}
+-
+-INLINE_FUN
+-void
+-gsl_vector_complex_float_set (gsl_vector_complex_float * v,
+-                              const size_t i, gsl_complex_float z)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(i >= v->size))
+-    {
+-      GSL_ERROR_VOID ("index out of range", GSL_EINVAL);
+-    }
+-#endif
+-  *GSL_COMPLEX_FLOAT_AT (v, i) = z;
+-}
+-
+-INLINE_FUN
+-gsl_complex_float *
+-gsl_vector_complex_float_ptr (gsl_vector_complex_float * v,
+-                              const size_t i)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(i >= v->size))
+-    {
+-      GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
+-    }
+-#endif
+-  return GSL_COMPLEX_FLOAT_AT (v, i);
+-}
+-
+-INLINE_FUN
+-const gsl_complex_float *
+-gsl_vector_complex_float_const_ptr (const gsl_vector_complex_float * v,
+-                                    const size_t i)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(i >= v->size))
+-    {
+-      GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
+-    }
+-#endif
+-  return GSL_COMPLEX_FLOAT_AT (v, i);
+-}
+-
+-
+-#endif /* HAVE_INLINE */
+-
+-__END_DECLS
+-
+-#endif /* __GSL_VECTOR_COMPLEX_FLOAT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_float.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_float.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_float.h	(revision 14079)
+@@ -1,65 +0,0 @@
+-/* block/gsl_block_float.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_BLOCK_FLOAT_H__
+-#define __GSL_BLOCK_FLOAT_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-struct gsl_block_float_struct
+-{
+-  size_t size;
+-  float *data;
+-};
+-
+-typedef struct gsl_block_float_struct gsl_block_float;
+-
+-gsl_block_float *gsl_block_float_alloc (const size_t n);
+-gsl_block_float *gsl_block_float_calloc (const size_t n);
+-void gsl_block_float_free (gsl_block_float * b);
+-
+-int gsl_block_float_fread (FILE * stream, gsl_block_float * b);
+-int gsl_block_float_fwrite (FILE * stream, const gsl_block_float * b);
+-int gsl_block_float_fscanf (FILE * stream, gsl_block_float * b);
+-int gsl_block_float_fprintf (FILE * stream, const gsl_block_float * b, const char *format);
+-
+-int gsl_block_float_raw_fread (FILE * stream, float * b, const size_t n, const size_t stride);
+-int gsl_block_float_raw_fwrite (FILE * stream, const float * b, const size_t n, const size_t stride);
+-int gsl_block_float_raw_fscanf (FILE * stream, float * b, const size_t n, const size_t stride);
+-int gsl_block_float_raw_fprintf (FILE * stream, const float * b, const size_t n, const size_t stride, const char *format);
+-
+-size_t gsl_block_float_size (const gsl_block_float * b);
+-float * gsl_block_float_data (const gsl_block_float * b);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_BLOCK_FLOAT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_monte_miser.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_monte_miser.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_monte_miser.h	(revision 14079)
+@@ -1,97 +0,0 @@
+-/* monte/gsl_monte_miser.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000 Michael Booth
+- * Copyright (C) 2009 Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-/* Author: MJB */
+-
+-#ifndef __GSL_MONTE_MISER_H__
+-#define __GSL_MONTE_MISER_H__
+-
+-#include <gsl/gsl_rng.h>
+-#include <gsl/gsl_monte.h>
+-#include <gsl/gsl_monte_plain.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-typedef struct {
+-  size_t min_calls;
+-  size_t min_calls_per_bisection;
+-  double dither;
+-  double estimate_frac;
+-  double alpha;
+-  size_t dim;
+-  int estimate_style;
+-  int depth;
+-  int verbose;
+-  double * x;
+-  double * xmid;
+-  double * sigma_l;
+-  double * sigma_r;
+-  double * fmax_l;
+-  double * fmax_r;
+-  double * fmin_l;
+-  double * fmin_r;
+-  double * fsum_l;
+-  double * fsum_r;
+-  double * fsum2_l;
+-  double * fsum2_r;
+-  size_t * hits_l;
+-  size_t * hits_r;
+-} gsl_monte_miser_state; 
+-
+-int gsl_monte_miser_integrate(gsl_monte_function * f, 
+-                              const double xl[], const double xh[], 
+-                              size_t dim, size_t calls, 
+-                              gsl_rng *r, 
+-                              gsl_monte_miser_state* state,
+-                              double *result, double *abserr);
+-
+-gsl_monte_miser_state* gsl_monte_miser_alloc(size_t dim);
+-
+-int gsl_monte_miser_init(gsl_monte_miser_state* state);
+-
+-void gsl_monte_miser_free(gsl_monte_miser_state* state);
+-
+-typedef struct {
+-  double estimate_frac;
+-  size_t min_calls;
+-  size_t min_calls_per_bisection;
+-  double alpha;
+-  double dither;
+-} gsl_monte_miser_params;
+-
+-void gsl_monte_miser_params_get (const gsl_monte_miser_state * state,
+-				 gsl_monte_miser_params * params);
+-
+-void gsl_monte_miser_params_set (gsl_monte_miser_state * state,
+-				 const gsl_monte_miser_params * params);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_MONTE_MISER_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_short.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_short.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_short.h	(revision 14079)
+@@ -1,350 +0,0 @@
+-/* matrix/gsl_matrix_short.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_MATRIX_SHORT_H__
+-#define __GSL_MATRIX_SHORT_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_types.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_inline.h>
+-#include <gsl/gsl_check_range.h>
+-#include <gsl/gsl_vector_short.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-typedef struct 
+-{
+-  size_t size1;
+-  size_t size2;
+-  size_t tda;
+-  short * data;
+-  gsl_block_short * block;
+-  int owner;
+-} gsl_matrix_short;
+-
+-typedef struct
+-{
+-  gsl_matrix_short matrix;
+-} _gsl_matrix_short_view;
+-
+-typedef _gsl_matrix_short_view gsl_matrix_short_view;
+-
+-typedef struct
+-{
+-  gsl_matrix_short matrix;
+-} _gsl_matrix_short_const_view;
+-
+-typedef const _gsl_matrix_short_const_view gsl_matrix_short_const_view;
+-
+-/* Allocation */
+-
+-gsl_matrix_short * 
+-gsl_matrix_short_alloc (const size_t n1, const size_t n2);
+-
+-gsl_matrix_short * 
+-gsl_matrix_short_calloc (const size_t n1, const size_t n2);
+-
+-gsl_matrix_short * 
+-gsl_matrix_short_alloc_from_block (gsl_block_short * b, 
+-                                   const size_t offset, 
+-                                   const size_t n1, 
+-                                   const size_t n2, 
+-                                   const size_t d2);
+-
+-gsl_matrix_short * 
+-gsl_matrix_short_alloc_from_matrix (gsl_matrix_short * m,
+-                                    const size_t k1, 
+-                                    const size_t k2,
+-                                    const size_t n1, 
+-                                    const size_t n2);
+-
+-gsl_vector_short * 
+-gsl_vector_short_alloc_row_from_matrix (gsl_matrix_short * m,
+-                                        const size_t i);
+-
+-gsl_vector_short * 
+-gsl_vector_short_alloc_col_from_matrix (gsl_matrix_short * m,
+-                                        const size_t j);
+-
+-void gsl_matrix_short_free (gsl_matrix_short * m);
+-
+-/* Views */
+-
+-_gsl_matrix_short_view 
+-gsl_matrix_short_submatrix (gsl_matrix_short * m, 
+-                            const size_t i, const size_t j, 
+-                            const size_t n1, const size_t n2);
+-
+-_gsl_vector_short_view 
+-gsl_matrix_short_row (gsl_matrix_short * m, const size_t i);
+-
+-_gsl_vector_short_view 
+-gsl_matrix_short_column (gsl_matrix_short * m, const size_t j);
+-
+-_gsl_vector_short_view 
+-gsl_matrix_short_diagonal (gsl_matrix_short * m);
+-
+-_gsl_vector_short_view 
+-gsl_matrix_short_subdiagonal (gsl_matrix_short * m, const size_t k);
+-
+-_gsl_vector_short_view 
+-gsl_matrix_short_superdiagonal (gsl_matrix_short * m, const size_t k);
+-
+-_gsl_vector_short_view
+-gsl_matrix_short_subrow (gsl_matrix_short * m, const size_t i,
+-                         const size_t offset, const size_t n);
+-
+-_gsl_vector_short_view
+-gsl_matrix_short_subcolumn (gsl_matrix_short * m, const size_t j,
+-                            const size_t offset, const size_t n);
+-
+-_gsl_matrix_short_view
+-gsl_matrix_short_view_array (short * base,
+-                             const size_t n1, 
+-                             const size_t n2);
+-
+-_gsl_matrix_short_view
+-gsl_matrix_short_view_array_with_tda (short * base, 
+-                                      const size_t n1, 
+-                                      const size_t n2,
+-                                      const size_t tda);
+-
+-
+-_gsl_matrix_short_view
+-gsl_matrix_short_view_vector (gsl_vector_short * v,
+-                              const size_t n1, 
+-                              const size_t n2);
+-
+-_gsl_matrix_short_view
+-gsl_matrix_short_view_vector_with_tda (gsl_vector_short * v,
+-                                       const size_t n1, 
+-                                       const size_t n2,
+-                                       const size_t tda);
+-
+-
+-_gsl_matrix_short_const_view 
+-gsl_matrix_short_const_submatrix (const gsl_matrix_short * m, 
+-                                  const size_t i, const size_t j, 
+-                                  const size_t n1, const size_t n2);
+-
+-_gsl_vector_short_const_view 
+-gsl_matrix_short_const_row (const gsl_matrix_short * m, 
+-                            const size_t i);
+-
+-_gsl_vector_short_const_view 
+-gsl_matrix_short_const_column (const gsl_matrix_short * m, 
+-                               const size_t j);
+-
+-_gsl_vector_short_const_view
+-gsl_matrix_short_const_diagonal (const gsl_matrix_short * m);
+-
+-_gsl_vector_short_const_view 
+-gsl_matrix_short_const_subdiagonal (const gsl_matrix_short * m, 
+-                                    const size_t k);
+-
+-_gsl_vector_short_const_view 
+-gsl_matrix_short_const_superdiagonal (const gsl_matrix_short * m, 
+-                                      const size_t k);
+-
+-_gsl_vector_short_const_view
+-gsl_matrix_short_const_subrow (const gsl_matrix_short * m, const size_t i,
+-                               const size_t offset, const size_t n);
+-
+-_gsl_vector_short_const_view
+-gsl_matrix_short_const_subcolumn (const gsl_matrix_short * m, const size_t j,
+-                                  const size_t offset, const size_t n);
+-
+-_gsl_matrix_short_const_view
+-gsl_matrix_short_const_view_array (const short * base,
+-                                   const size_t n1, 
+-                                   const size_t n2);
+-
+-_gsl_matrix_short_const_view
+-gsl_matrix_short_const_view_array_with_tda (const short * base, 
+-                                            const size_t n1, 
+-                                            const size_t n2,
+-                                            const size_t tda);
+-
+-_gsl_matrix_short_const_view
+-gsl_matrix_short_const_view_vector (const gsl_vector_short * v,
+-                                    const size_t n1, 
+-                                    const size_t n2);
+-
+-_gsl_matrix_short_const_view
+-gsl_matrix_short_const_view_vector_with_tda (const gsl_vector_short * v,
+-                                             const size_t n1, 
+-                                             const size_t n2,
+-                                             const size_t tda);
+-
+-/* Operations */
+-
+-void gsl_matrix_short_set_zero (gsl_matrix_short * m);
+-void gsl_matrix_short_set_identity (gsl_matrix_short * m);
+-void gsl_matrix_short_set_all (gsl_matrix_short * m, short x);
+-
+-int gsl_matrix_short_fread (FILE * stream, gsl_matrix_short * m) ;
+-int gsl_matrix_short_fwrite (FILE * stream, const gsl_matrix_short * m) ;
+-int gsl_matrix_short_fscanf (FILE * stream, gsl_matrix_short * m);
+-int gsl_matrix_short_fprintf (FILE * stream, const gsl_matrix_short * m, const char * format);
+- 
+-int gsl_matrix_short_memcpy(gsl_matrix_short * dest, const gsl_matrix_short * src);
+-int gsl_matrix_short_swap(gsl_matrix_short * m1, gsl_matrix_short * m2);
+-
+-int gsl_matrix_short_swap_rows(gsl_matrix_short * m, const size_t i, const size_t j);
+-int gsl_matrix_short_swap_columns(gsl_matrix_short * m, const size_t i, const size_t j);
+-int gsl_matrix_short_swap_rowcol(gsl_matrix_short * m, const size_t i, const size_t j);
+-int gsl_matrix_short_transpose (gsl_matrix_short * m);
+-int gsl_matrix_short_transpose_memcpy (gsl_matrix_short * dest, const gsl_matrix_short * src);
+-
+-short gsl_matrix_short_max (const gsl_matrix_short * m);
+-short gsl_matrix_short_min (const gsl_matrix_short * m);
+-void gsl_matrix_short_minmax (const gsl_matrix_short * m, short * min_out, short * max_out);
+-
+-void gsl_matrix_short_max_index (const gsl_matrix_short * m, size_t * imax, size_t *jmax);
+-void gsl_matrix_short_min_index (const gsl_matrix_short * m, size_t * imin, size_t *jmin);
+-void gsl_matrix_short_minmax_index (const gsl_matrix_short * m, size_t * imin, size_t * jmin, size_t * imax, size_t * jmax);
+-
+-int gsl_matrix_short_equal (const gsl_matrix_short * a, const gsl_matrix_short * b);
+-
+-int gsl_matrix_short_isnull (const gsl_matrix_short * m);
+-int gsl_matrix_short_ispos (const gsl_matrix_short * m);
+-int gsl_matrix_short_isneg (const gsl_matrix_short * m);
+-int gsl_matrix_short_isnonneg (const gsl_matrix_short * m);
+-
+-int gsl_matrix_short_add (gsl_matrix_short * a, const gsl_matrix_short * b);
+-int gsl_matrix_short_sub (gsl_matrix_short * a, const gsl_matrix_short * b);
+-int gsl_matrix_short_mul_elements (gsl_matrix_short * a, const gsl_matrix_short * b);
+-int gsl_matrix_short_div_elements (gsl_matrix_short * a, const gsl_matrix_short * b);
+-int gsl_matrix_short_scale (gsl_matrix_short * a, const double x);
+-int gsl_matrix_short_add_constant (gsl_matrix_short * a, const double x);
+-int gsl_matrix_short_add_diagonal (gsl_matrix_short * a, const double x);
+-
+-/***********************************************************************/
+-/* The functions below are obsolete                                    */
+-/***********************************************************************/
+-int gsl_matrix_short_get_row(gsl_vector_short * v, const gsl_matrix_short * m, const size_t i);
+-int gsl_matrix_short_get_col(gsl_vector_short * v, const gsl_matrix_short * m, const size_t j);
+-int gsl_matrix_short_set_row(gsl_matrix_short * m, const size_t i, const gsl_vector_short * v);
+-int gsl_matrix_short_set_col(gsl_matrix_short * m, const size_t j, const gsl_vector_short * v);
+-/***********************************************************************/
+-
+-/* inline functions if you are using GCC */
+-
+-INLINE_DECL short   gsl_matrix_short_get(const gsl_matrix_short * m, const size_t i, const size_t j);
+-INLINE_DECL void    gsl_matrix_short_set(gsl_matrix_short * m, const size_t i, const size_t j, const short x);
+-INLINE_DECL short * gsl_matrix_short_ptr(gsl_matrix_short * m, const size_t i, const size_t j);
+-INLINE_DECL const short * gsl_matrix_short_const_ptr(const gsl_matrix_short * m, const size_t i, const size_t j);
+-
+-#ifdef HAVE_INLINE
+-INLINE_FUN 
+-short
+-gsl_matrix_short_get(const gsl_matrix_short * m, const size_t i, const size_t j)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(1)) 
+-    {
+-      if (i >= m->size1)
+-        {
+-          GSL_ERROR_VAL("first index out of range", GSL_EINVAL, 0) ;
+-        }
+-      else if (j >= m->size2)
+-        {
+-          GSL_ERROR_VAL("second index out of range", GSL_EINVAL, 0) ;
+-        }
+-    }
+-#endif
+-  return m->data[i * m->tda + j] ;
+-} 
+-
+-INLINE_FUN 
+-void
+-gsl_matrix_short_set(gsl_matrix_short * m, const size_t i, const size_t j, const short x)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(1)) 
+-    {
+-      if (i >= m->size1)
+-        {
+-          GSL_ERROR_VOID("first index out of range", GSL_EINVAL) ;
+-        }
+-      else if (j >= m->size2)
+-        {
+-          GSL_ERROR_VOID("second index out of range", GSL_EINVAL) ;
+-        }
+-    }
+-#endif
+-  m->data[i * m->tda + j] = x ;
+-}
+-
+-INLINE_FUN 
+-short *
+-gsl_matrix_short_ptr(gsl_matrix_short * m, const size_t i, const size_t j)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(1)) 
+-    {
+-      if (i >= m->size1)
+-        {
+-          GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
+-        }
+-      else if (j >= m->size2)
+-        {
+-          GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
+-        }
+-    }
+-#endif
+-  return (short *) (m->data + (i * m->tda + j)) ;
+-} 
+-
+-INLINE_FUN 
+-const short *
+-gsl_matrix_short_const_ptr(const gsl_matrix_short * m, const size_t i, const size_t j)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(1)) 
+-    {
+-      if (i >= m->size1)
+-        {
+-          GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
+-        }
+-      else if (j >= m->size2)
+-        {
+-          GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
+-        }
+-    }
+-#endif
+-  return (const short *) (m->data + (i * m->tda + j)) ;
+-} 
+-
+-#endif
+-
+-__END_DECLS
+-
+-#endif /* __GSL_MATRIX_SHORT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_int.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_int.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_int.h	(revision 14079)
+@@ -1,51 +0,0 @@
+-/* sort/gsl_sort_vector_int.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_SORT_VECTOR_INT_H__
+-#define __GSL_SORT_VECTOR_INT_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_permutation.h>
+-#include <gsl/gsl_vector_int.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-void gsl_sort_vector_int (gsl_vector_int * v);
+-int gsl_sort_vector_int_index (gsl_permutation * p, const gsl_vector_int * v);
+-
+-int gsl_sort_vector_int_smallest (int * dest, const size_t k, const gsl_vector_int * v);
+-int gsl_sort_vector_int_largest (int * dest, const size_t k, const gsl_vector_int * v);
+-
+-int gsl_sort_vector_int_smallest_index (size_t * p, const size_t k, const gsl_vector_int * v);
+-int gsl_sort_vector_int_largest_index (size_t * p, const size_t k, const gsl_vector_int * v);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_SORT_VECTOR_INT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_double.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_double.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_double.h	(revision 14079)
+@@ -1,65 +0,0 @@
+-/* block/gsl_block_double.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_BLOCK_DOUBLE_H__
+-#define __GSL_BLOCK_DOUBLE_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-struct gsl_block_struct
+-{
+-  size_t size;
+-  double *data;
+-};
+-
+-typedef struct gsl_block_struct gsl_block;
+-
+-gsl_block *gsl_block_alloc (const size_t n);
+-gsl_block *gsl_block_calloc (const size_t n);
+-void gsl_block_free (gsl_block * b);
+-
+-int gsl_block_fread (FILE * stream, gsl_block * b);
+-int gsl_block_fwrite (FILE * stream, const gsl_block * b);
+-int gsl_block_fscanf (FILE * stream, gsl_block * b);
+-int gsl_block_fprintf (FILE * stream, const gsl_block * b, const char *format);
+-
+-int gsl_block_raw_fread (FILE * stream, double * b, const size_t n, const size_t stride);
+-int gsl_block_raw_fwrite (FILE * stream, const double * b, const size_t n, const size_t stride);
+-int gsl_block_raw_fscanf (FILE * stream, double * b, const size_t n, const size_t stride);
+-int gsl_block_raw_fprintf (FILE * stream, const double * b, const size_t n, const size_t stride, const char *format);
+-
+-size_t gsl_block_size (const gsl_block * b);
+-double * gsl_block_data (const gsl_block * b);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_BLOCK_DOUBLE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_const.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_const.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_const.h	(revision 14079)
+@@ -1,31 +0,0 @@
+-/* const/gsl_const.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004, 2007 Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_CONST__
+-#define __GSL_CONST__
+-
+-#include <gsl/gsl_const_num.h>
+-
+-#include <gsl/gsl_const_cgs.h>
+-#include <gsl/gsl_const_mks.h>
+-
+-#include <gsl/gsl_const_cgsm.h>
+-#include <gsl/gsl_const_mksa.h>
+-
+-#endif /* __GSL_CONST__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_minmax.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_minmax.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_minmax.h	(revision 14079)
+@@ -1,102 +0,0 @@
+-/* gsl_minmax.h
+- * 
+- * Copyright (C) 2008 Gerard Jungman, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_MINMAX_H__
+-#define __GSL_MINMAX_H__
+-#include <gsl/gsl_inline.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-/* Define MAX and MIN macros/functions if they don't exist. */
+-
+-/* plain old macros for general use */
+-#define GSL_MAX(a,b) ((a) > (b) ? (a) : (b))
+-#define GSL_MIN(a,b) ((a) < (b) ? (a) : (b))
+-
+-/* function versions of the above, in case they are needed */
+-double gsl_max (double a, double b);
+-double gsl_min (double a, double b);
+-
+-/* inline-friendly strongly typed versions */
+-#ifdef HAVE_INLINE
+-
+-INLINE_FUN int GSL_MAX_INT (int a, int b);
+-INLINE_FUN int GSL_MIN_INT (int a, int b);
+-INLINE_FUN double GSL_MAX_DBL (double a, double b);
+-INLINE_FUN double GSL_MIN_DBL (double a, double b);
+-INLINE_FUN long double GSL_MAX_LDBL (long double a, long double b);
+-INLINE_FUN long double GSL_MIN_LDBL (long double a, long double b);
+-
+-INLINE_FUN int
+-GSL_MAX_INT (int a, int b)
+-{
+-  return GSL_MAX (a, b);
+-}
+-
+-INLINE_FUN int
+-GSL_MIN_INT (int a, int b)
+-{
+-  return GSL_MIN (a, b);
+-}
+-
+-INLINE_FUN double
+-GSL_MAX_DBL (double a, double b)
+-{
+-  return GSL_MAX (a, b);
+-}
+-
+-INLINE_FUN double
+-GSL_MIN_DBL (double a, double b)
+-{
+-  return GSL_MIN (a, b);
+-}
+-
+-INLINE_FUN long double
+-GSL_MAX_LDBL (long double a, long double b)
+-{
+-  return GSL_MAX (a, b);
+-}
+-
+-INLINE_FUN long double
+-GSL_MIN_LDBL (long double a, long double b)
+-{
+-  return GSL_MIN (a, b);
+-}
+-#else
+-#define GSL_MAX_INT(a,b)   GSL_MAX(a,b)
+-#define GSL_MIN_INT(a,b)   GSL_MIN(a,b)
+-#define GSL_MAX_DBL(a,b)   GSL_MAX(a,b)
+-#define GSL_MIN_DBL(a,b)   GSL_MIN(a,b)
+-#define GSL_MAX_LDBL(a,b)  GSL_MAX(a,b)
+-#define GSL_MIN_LDBL(a,b)  GSL_MIN(a,b)
+-#endif /* HAVE_INLINE */
+-
+-__END_DECLS
+-
+-#endif /* __GSL_POW_INT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_uint.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_uint.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_uint.h	(revision 14079)
+@@ -1,79 +0,0 @@
+-/* statistics/gsl_statistics_uint.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_STATISTICS_UINT_H__
+-#define __GSL_STATISTICS_UINT_H__
+-
+-#include <stddef.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-double gsl_stats_uint_mean (const unsigned int data[], const size_t stride, const size_t n);
+-double gsl_stats_uint_variance (const unsigned int data[], const size_t stride, const size_t n);
+-double gsl_stats_uint_sd (const unsigned int data[], const size_t stride, const size_t n);
+-double gsl_stats_uint_variance_with_fixed_mean (const unsigned int data[], const size_t stride, const size_t n, const double mean);
+-double gsl_stats_uint_sd_with_fixed_mean (const unsigned int data[], const size_t stride, const size_t n, const double mean);
+-double gsl_stats_uint_tss (const unsigned int data[], const size_t stride, const size_t n);
+-double gsl_stats_uint_tss_m (const unsigned int data[], const size_t stride, const size_t n, const double mean);
+-
+-double gsl_stats_uint_absdev (const unsigned int data[], const size_t stride, const size_t n);
+-double gsl_stats_uint_skew (const unsigned int data[], const size_t stride, const size_t n);
+-double gsl_stats_uint_kurtosis (const unsigned int data[], const size_t stride, const size_t n);
+-double gsl_stats_uint_lag1_autocorrelation (const unsigned int data[], const size_t stride, const size_t n);
+-
+-double gsl_stats_uint_covariance (const unsigned int data1[], const size_t stride1,const unsigned int data2[], const size_t stride2, const size_t n);
+-double gsl_stats_uint_correlation (const unsigned int data1[], const size_t stride1,const unsigned int data2[], const size_t stride2, const size_t n);
+-
+-double gsl_stats_uint_variance_m (const unsigned int data[], const size_t stride, const size_t n, const double mean);
+-double gsl_stats_uint_sd_m (const unsigned int data[], const size_t stride, const size_t n, const double mean);
+-double gsl_stats_uint_absdev_m (const unsigned int data[], const size_t stride, const size_t n, const double mean);
+-double gsl_stats_uint_skew_m_sd (const unsigned int data[], const size_t stride, const size_t n, const double mean, const double sd);
+-double gsl_stats_uint_kurtosis_m_sd (const unsigned int data[], const size_t stride, const size_t n, const double mean, const double sd);
+-double gsl_stats_uint_lag1_autocorrelation_m (const unsigned int data[], const size_t stride, const size_t n, const double mean);
+-
+-double gsl_stats_uint_covariance_m (const unsigned int data1[], const size_t stride1,const unsigned int data2[], const size_t stride2, const size_t n, const double mean1, const double mean2);
+-
+-
+-double gsl_stats_uint_pvariance (const unsigned int data1[], const size_t stride1, const size_t n1, const unsigned int data2[], const size_t stride2, const size_t n2);
+-double gsl_stats_uint_ttest (const unsigned int data1[], const size_t stride1, const size_t n1, const unsigned int data2[], const size_t stride2, const size_t n2);
+-
+-unsigned int gsl_stats_uint_max (const unsigned int data[], const size_t stride, const size_t n);
+-unsigned int gsl_stats_uint_min (const unsigned int data[], const size_t stride, const size_t n);
+-void gsl_stats_uint_minmax (unsigned int * min, unsigned int * max, const unsigned int data[], const size_t stride, const size_t n);
+-
+-size_t gsl_stats_uint_max_index (const unsigned int data[], const size_t stride, const size_t n);
+-size_t gsl_stats_uint_min_index (const unsigned int data[], const size_t stride, const size_t n);
+-void gsl_stats_uint_minmax_index (size_t * min_index, size_t * max_index, const unsigned int data[], const size_t stride, const size_t n);
+-
+-double gsl_stats_uint_median_from_sorted_data (const unsigned int sorted_data[], const size_t stride, const size_t n) ;
+-double gsl_stats_uint_quantile_from_sorted_data (const unsigned int sorted_data[], const size_t stride, const size_t n, const double f) ;
+-
+-__END_DECLS
+-
+-#endif /* __GSL_STATISTICS_UINT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_long_double.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_long_double.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_long_double.h	(revision 14079)
+@@ -1,44 +0,0 @@
+-/* permutation/gsl_permute_long_double.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_PERMUTE_LONG_DOUBLE_H__
+-#define __GSL_PERMUTE_LONG_DOUBLE_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_permutation.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-int gsl_permute_long_double (const size_t * p, long double * data, const size_t stride, const size_t n);
+-int gsl_permute_long_double_inverse (const size_t * p, long double * data, const size_t stride, const size_t n);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_PERMUTE_LONG_DOUBLE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_uchar.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_uchar.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_uchar.h	(revision 14079)
+@@ -1,51 +0,0 @@
+-/* sort/gsl_sort_vector_uchar.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_SORT_VECTOR_UCHAR_H__
+-#define __GSL_SORT_VECTOR_UCHAR_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_permutation.h>
+-#include <gsl/gsl_vector_uchar.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-void gsl_sort_vector_uchar (gsl_vector_uchar * v);
+-int gsl_sort_vector_uchar_index (gsl_permutation * p, const gsl_vector_uchar * v);
+-
+-int gsl_sort_vector_uchar_smallest (unsigned char * dest, const size_t k, const gsl_vector_uchar * v);
+-int gsl_sort_vector_uchar_largest (unsigned char * dest, const size_t k, const gsl_vector_uchar * v);
+-
+-int gsl_sort_vector_uchar_smallest_index (size_t * p, const size_t k, const gsl_vector_uchar * v);
+-int gsl_sort_vector_uchar_largest_index (size_t * p, const size_t k, const gsl_vector_uchar * v);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_SORT_VECTOR_UCHAR_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_double.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_double.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_double.h	(revision 14079)
+@@ -1,45 +0,0 @@
+-/* permutation/gsl_permute_vector_double.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_PERMUTE_VECTOR_DOUBLE_H__
+-#define __GSL_PERMUTE_VECTOR_DOUBLE_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_permutation.h>
+-#include <gsl/gsl_vector_double.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-int gsl_permute_vector (const gsl_permutation * p, gsl_vector * v);
+-int gsl_permute_vector_inverse (const gsl_permutation * p, gsl_vector * v);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_PERMUTE_VECTOR_DOUBLE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_expint.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_expint.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_expint.h	(revision 14079)
+@@ -1,167 +0,0 @@
+-/* specfunc/gsl_sf_expint.h
+- * 
+- * Copyright (C) 2007 Brian Gough
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002 Gerard Jungman
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-/* Author: G. Jungman */
+-
+-#ifndef __GSL_SF_EXPINT_H__
+-#define __GSL_SF_EXPINT_H__
+-
+-#include <gsl/gsl_sf_result.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-
+-/* E_1(x) := Re[ Integrate[ Exp[-xt]/t, {t,1,Infinity}] ]
+- *
+- * x != 0.0
+- * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW
+- */
+-int     gsl_sf_expint_E1_e(const double x, gsl_sf_result * result);
+-double  gsl_sf_expint_E1(const double x);
+-
+-
+-/* E_2(x) := Re[ Integrate[ Exp[-xt]/t^2, {t,1,Infinity}] ]
+- *
+- * x != 0.0
+- * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW
+- */
+-int     gsl_sf_expint_E2_e(const double x, gsl_sf_result * result);
+-double  gsl_sf_expint_E2(const double x);
+-
+-
+-/* E_n(x) := Re[ Integrate[ Exp[-xt]/t^n, {t,1,Infinity}] ]
+- *
+- * x != 0.0
+- * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW
+- */
+-int     gsl_sf_expint_En_e(const int n, const double x, gsl_sf_result * result);
+-double  gsl_sf_expint_En(const int n, const double x);
+-
+-
+-/* E_1_scaled(x) := exp(x) E_1(x)
+- *
+- * x != 0.0
+- * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW
+- */
+-int     gsl_sf_expint_E1_scaled_e(const double x, gsl_sf_result * result);
+-double  gsl_sf_expint_E1_scaled(const double x);
+-
+-
+-/* E_2_scaled(x) := exp(x) E_2(x)
+- *
+- * x != 0.0
+- * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW
+- */
+-int     gsl_sf_expint_E2_scaled_e(const double x, gsl_sf_result * result);
+-double  gsl_sf_expint_E2_scaled(const double x);
+-
+-/* E_n_scaled(x) := exp(x) E_n(x)
+- *
+- * x != 0.0
+- * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW
+- */
+-int     gsl_sf_expint_En_scaled_e(const int n, const double x, gsl_sf_result * result);
+-double  gsl_sf_expint_En_scaled(const int n, const double x);
+-
+-
+-/* Ei(x) := - PV Integrate[ Exp[-t]/t, {t,-x,Infinity}]
+- *       :=   PV Integrate[ Exp[t]/t, {t,-Infinity,x}]
+- *
+- * x != 0.0
+- * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW
+- */
+-int     gsl_sf_expint_Ei_e(const double x, gsl_sf_result * result);
+-double  gsl_sf_expint_Ei(const double x);
+-
+-
+-/* Ei_scaled(x) := exp(-x) Ei(x)
+- *
+- * x != 0.0
+- * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW
+- */
+-int     gsl_sf_expint_Ei_scaled_e(const double x, gsl_sf_result * result);
+-double  gsl_sf_expint_Ei_scaled(const double x);
+-
+-
+-/* Shi(x) := Integrate[ Sinh[t]/t, {t,0,x}]
+- *
+- * exceptions: GSL_EOVRFLW, GSL_EUNDRFLW
+- */
+-int     gsl_sf_Shi_e(const double x, gsl_sf_result * result);
+-double  gsl_sf_Shi(const double x);
+-
+-
+-/* Chi(x) := Re[ M_EULER + log(x) + Integrate[(Cosh[t]-1)/t, {t,0,x}] ]
+- *
+- * x != 0.0
+- * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW
+- */
+-int     gsl_sf_Chi_e(const double x, gsl_sf_result * result);
+-double  gsl_sf_Chi(const double x);
+-
+-
+-/* Ei_3(x) := Integral[ Exp[-t^3], {t,0,x}]
+- *
+- * x >= 0.0
+- * exceptions: GSL_EDOM
+- */
+-int     gsl_sf_expint_3_e(const double x, gsl_sf_result * result);
+-double  gsl_sf_expint_3(double x);
+-
+-
+-/* Si(x) := Integrate[ Sin[t]/t, {t,0,x}]
+- *
+- * exceptions: none
+- */
+-int     gsl_sf_Si_e(const double x, gsl_sf_result * result);
+-double  gsl_sf_Si(const double x);
+-
+-
+-/* Ci(x) := -Integrate[ Cos[t]/t, {t,x,Infinity}]
+- *
+- * x > 0.0
+- * exceptions: GSL_EDOM 
+- */
+-int     gsl_sf_Ci_e(const double x, gsl_sf_result * result);
+-double  gsl_sf_Ci(const double x);
+-
+-
+-/* AtanInt(x) := Integral[ Arctan[t]/t, {t,0,x}]
+- *
+- *
+- * exceptions:
+- */
+-int     gsl_sf_atanint_e(const double x, gsl_sf_result * result);
+-double  gsl_sf_atanint(const double x);
+-
+-
+-__END_DECLS
+-
+-#endif /* __GSL_SF_EXPINT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_short.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_short.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_short.h	(revision 14079)
+@@ -1,44 +0,0 @@
+-/* permutation/gsl_permute_short.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_PERMUTE_SHORT_H__
+-#define __GSL_PERMUTE_SHORT_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_permutation.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-int gsl_permute_short (const size_t * p, short * data, const size_t stride, const size_t n);
+-int gsl_permute_short_inverse (const size_t * p, short * data, const size_t stride, const size_t n);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_PERMUTE_SHORT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_fft_halfcomplex.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_fft_halfcomplex.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_fft_halfcomplex.h	(revision 14079)
+@@ -1,86 +0,0 @@
+-/* fft/gsl_fft_halfcomplex.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_FFT_HALFCOMPLEX_H__
+-#define __GSL_FFT_HALFCOMPLEX_H__
+-
+-#include <stddef.h>
+-
+-#include <gsl/gsl_math.h>
+-#include <gsl/gsl_complex.h>
+-#include <gsl/gsl_fft.h>
+-#include <gsl/gsl_fft_real.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-int gsl_fft_halfcomplex_radix2_backward (double data[], const size_t stride, const size_t n);
+-int gsl_fft_halfcomplex_radix2_inverse (double data[], const size_t stride, const size_t n);
+-int gsl_fft_halfcomplex_radix2_transform (double data[], const size_t stride, const size_t n);
+-
+-typedef struct
+-  {
+-    size_t n;
+-    size_t nf;
+-    size_t factor[64];
+-    gsl_complex *twiddle[64];
+-    gsl_complex *trig;
+-  }
+-gsl_fft_halfcomplex_wavetable;
+-
+-gsl_fft_halfcomplex_wavetable * gsl_fft_halfcomplex_wavetable_alloc (size_t n);
+-
+-void
+-gsl_fft_halfcomplex_wavetable_free (gsl_fft_halfcomplex_wavetable * wavetable);
+-
+-
+-int gsl_fft_halfcomplex_backward (double data[], const size_t stride, const size_t n,
+-                                  const gsl_fft_halfcomplex_wavetable * wavetable,
+-                                  gsl_fft_real_workspace * work);
+-
+-int gsl_fft_halfcomplex_inverse (double data[], const size_t stride, const size_t n,
+-                                 const gsl_fft_halfcomplex_wavetable * wavetable,
+-                                 gsl_fft_real_workspace * work);
+-
+-int gsl_fft_halfcomplex_transform (double data[], const size_t stride, const size_t n,
+-                                   const gsl_fft_halfcomplex_wavetable * wavetable,
+-                                   gsl_fft_real_workspace * work);
+-
+-int
+-gsl_fft_halfcomplex_unpack (const double halfcomplex_coefficient[],
+-                            double complex_coefficient[],
+-                            const size_t stride, const size_t n);
+-
+-int
+-gsl_fft_halfcomplex_radix2_unpack (const double halfcomplex_coefficient[],
+-                                   double complex_coefficient[],
+-                                   const size_t stride, const size_t n);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_FFT_HALFCOMPLEX_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_char.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_char.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_char.h	(revision 14079)
+@@ -1,51 +0,0 @@
+-/* sort/gsl_sort_vector_char.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_SORT_VECTOR_CHAR_H__
+-#define __GSL_SORT_VECTOR_CHAR_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_permutation.h>
+-#include <gsl/gsl_vector_char.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-void gsl_sort_vector_char (gsl_vector_char * v);
+-int gsl_sort_vector_char_index (gsl_permutation * p, const gsl_vector_char * v);
+-
+-int gsl_sort_vector_char_smallest (char * dest, const size_t k, const gsl_vector_char * v);
+-int gsl_sort_vector_char_largest (char * dest, const size_t k, const gsl_vector_char * v);
+-
+-int gsl_sort_vector_char_smallest_index (size_t * p, const size_t k, const gsl_vector_char * v);
+-int gsl_sort_vector_char_largest_index (size_t * p, const size_t k, const gsl_vector_char * v);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_SORT_VECTOR_CHAR_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_complex.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_complex.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_complex.h	(revision 14079)
+@@ -1,103 +0,0 @@
+-/* complex/gsl_complex.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_COMPLEX_H__
+-#define __GSL_COMPLEX_H__
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-
+-/* two consecutive built-in types as a complex number */
+-typedef double *       gsl_complex_packed ;
+-typedef float *        gsl_complex_packed_float  ;
+-typedef long double *  gsl_complex_packed_long_double ;
+-
+-typedef const double *       gsl_const_complex_packed ;
+-typedef const float *        gsl_const_complex_packed_float  ;
+-typedef const long double *  gsl_const_complex_packed_long_double ;
+-
+-
+-/* 2N consecutive built-in types as N complex numbers */
+-typedef double *       gsl_complex_packed_array ;
+-typedef float *        gsl_complex_packed_array_float  ;
+-typedef long double *  gsl_complex_packed_array_long_double ;
+-
+-typedef const double *       gsl_const_complex_packed_array ;
+-typedef const float *        gsl_const_complex_packed_array_float  ;
+-typedef const long double *  gsl_const_complex_packed_array_long_double ;
+-
+-
+-/* Yes... this seems weird. Trust us. The point is just that
+-   sometimes you want to make it obvious that something is
+-   an output value. The fact that it lacks a 'const' may not
+-   be enough of a clue for people in some contexts.
+- */
+-typedef double *       gsl_complex_packed_ptr ;
+-typedef float *        gsl_complex_packed_float_ptr  ;
+-typedef long double *  gsl_complex_packed_long_double_ptr ;
+-
+-typedef const double *       gsl_const_complex_packed_ptr ;
+-typedef const float *        gsl_const_complex_packed_float_ptr  ;
+-typedef const long double *  gsl_const_complex_packed_long_double_ptr ;
+-
+-
+-typedef struct
+-  {
+-    long double dat[2];
+-  }
+-gsl_complex_long_double;
+-
+-typedef struct
+-  {
+-    double dat[2];
+-  }
+-gsl_complex;
+-
+-typedef struct
+-  {
+-    float dat[2];
+-  }
+-gsl_complex_float;
+-
+-#define GSL_REAL(z)     ((z).dat[0])
+-#define GSL_IMAG(z)     ((z).dat[1])
+-#define GSL_COMPLEX_P(zp) ((zp)->dat)
+-#define GSL_COMPLEX_P_REAL(zp)  ((zp)->dat[0])
+-#define GSL_COMPLEX_P_IMAG(zp)  ((zp)->dat[1])
+-#define GSL_COMPLEX_EQ(z1,z2) (((z1).dat[0] == (z2).dat[0]) && ((z1).dat[1] == (z2).dat[1]))
+-
+-#define GSL_SET_COMPLEX(zp,x,y) do {(zp)->dat[0]=(x); (zp)->dat[1]=(y);} while(0)
+-#define GSL_SET_REAL(zp,x) do {(zp)->dat[0]=(x);} while(0)
+-#define GSL_SET_IMAG(zp,y) do {(zp)->dat[1]=(y);} while(0)
+-
+-#define GSL_SET_COMPLEX_PACKED(zp,n,x,y) do {*((zp)+2*(n))=(x); *((zp)+(2*(n)+1))=(y);} while(0)
+-
+-__END_DECLS
+-
+-#endif /* __GSL_COMPLEX_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_log.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_log.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_log.h	(revision 14079)
+@@ -1,82 +0,0 @@
+-/* specfunc/gsl_sf_log.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004 Gerard Jungman
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-/* Author:  G. Jungman */
+-
+-#ifndef __GSL_SF_LOG_H__
+-#define __GSL_SF_LOG_H__
+-
+-#include <gsl/gsl_sf_result.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-
+-/* Provide a logarithm function with GSL semantics.
+- *
+- * exceptions: GSL_EDOM
+- */
+-int gsl_sf_log_e(const double x, gsl_sf_result * result);
+-double gsl_sf_log(const double x);
+-
+-
+-/* Log(|x|)
+- *
+- * exceptions: GSL_EDOM
+- */
+-int gsl_sf_log_abs_e(const double x, gsl_sf_result * result);
+-double gsl_sf_log_abs(const double x);
+-
+-
+-/* Complex Logarithm
+- *   exp(lnr + I theta) = zr + I zi
+- * Returns argument in [-pi,pi].
+- *
+- * exceptions: GSL_EDOM
+- */
+-int gsl_sf_complex_log_e(const double zr, const double zi, gsl_sf_result * lnr, gsl_sf_result * theta);
+-
+-
+-/* Log(1 + x)
+- *
+- * exceptions: GSL_EDOM
+- */
+-int gsl_sf_log_1plusx_e(const double x, gsl_sf_result * result);
+-double gsl_sf_log_1plusx(const double x);
+-
+-
+-/* Log(1 + x) - x
+- *
+- * exceptions: GSL_EDOM
+- */
+-int gsl_sf_log_1plusx_mx_e(const double x, gsl_sf_result * result);
+-double gsl_sf_log_1plusx_mx(const double x);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_SF_LOG_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_long.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_long.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_long.h	(revision 14079)
+@@ -1,79 +0,0 @@
+-/* statistics/gsl_statistics_long.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_STATISTICS_LONG_H__
+-#define __GSL_STATISTICS_LONG_H__
+-
+-#include <stddef.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-double gsl_stats_long_mean (const long data[], const size_t stride, const size_t n);
+-double gsl_stats_long_variance (const long data[], const size_t stride, const size_t n);
+-double gsl_stats_long_sd (const long data[], const size_t stride, const size_t n);
+-double gsl_stats_long_variance_with_fixed_mean (const long data[], const size_t stride, const size_t n, const double mean);
+-double gsl_stats_long_sd_with_fixed_mean (const long data[], const size_t stride, const size_t n, const double mean);
+-double gsl_stats_long_tss (const long data[], const size_t stride, const size_t n);
+-double gsl_stats_long_tss_m (const long data[], const size_t stride, const size_t n, const double mean);
+-
+-double gsl_stats_long_absdev (const long data[], const size_t stride, const size_t n);
+-double gsl_stats_long_skew (const long data[], const size_t stride, const size_t n);
+-double gsl_stats_long_kurtosis (const long data[], const size_t stride, const size_t n);
+-double gsl_stats_long_lag1_autocorrelation (const long data[], const size_t stride, const size_t n);
+-
+-double gsl_stats_long_covariance (const long data1[], const size_t stride1,const long data2[], const size_t stride2, const size_t n);
+-double gsl_stats_long_correlation (const long data1[], const size_t stride1,const long data2[], const size_t stride2, const size_t n);
+-
+-double gsl_stats_long_variance_m (const long data[], const size_t stride, const size_t n, const double mean);
+-double gsl_stats_long_sd_m (const long data[], const size_t stride, const size_t n, const double mean);
+-double gsl_stats_long_absdev_m (const long data[], const size_t stride, const size_t n, const double mean);
+-double gsl_stats_long_skew_m_sd (const long data[], const size_t stride, const size_t n, const double mean, const double sd);
+-double gsl_stats_long_kurtosis_m_sd (const long data[], const size_t stride, const size_t n, const double mean, const double sd);
+-double gsl_stats_long_lag1_autocorrelation_m (const long data[], const size_t stride, const size_t n, const double mean);
+-
+-double gsl_stats_long_covariance_m (const long data1[], const size_t stride1,const long data2[], const size_t stride2, const size_t n, const double mean1, const double mean2);
+-
+-
+-double gsl_stats_long_pvariance (const long data1[], const size_t stride1, const size_t n1, const long data2[], const size_t stride2, const size_t n2);
+-double gsl_stats_long_ttest (const long data1[], const size_t stride1, const size_t n1, const long data2[], const size_t stride2, const size_t n2);
+-
+-long gsl_stats_long_max (const long data[], const size_t stride, const size_t n);
+-long gsl_stats_long_min (const long data[], const size_t stride, const size_t n);
+-void gsl_stats_long_minmax (long * min, long * max, const long data[], const size_t stride, const size_t n);
+-
+-size_t gsl_stats_long_max_index (const long data[], const size_t stride, const size_t n);
+-size_t gsl_stats_long_min_index (const long data[], const size_t stride, const size_t n);
+-void gsl_stats_long_minmax_index (size_t * min_index, size_t * max_index, const long data[], const size_t stride, const size_t n);
+-
+-double gsl_stats_long_median_from_sorted_data (const long sorted_data[], const size_t stride, const size_t n) ;
+-double gsl_stats_long_quantile_from_sorted_data (const long sorted_data[], const size_t stride, const size_t n, const double f) ;
+-
+-__END_DECLS
+-
+-#endif /* __GSL_STATISTICS_LONG_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_complex_double.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_complex_double.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_complex_double.h	(revision 14079)
+@@ -1,65 +0,0 @@
+-/* block/gsl_block_complex_double.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_BLOCK_COMPLEX_DOUBLE_H__
+-#define __GSL_BLOCK_COMPLEX_DOUBLE_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-struct gsl_block_complex_struct
+-{
+-  size_t size;
+-  double *data;
+-};
+-
+-typedef struct gsl_block_complex_struct gsl_block_complex;
+-
+-gsl_block_complex *gsl_block_complex_alloc (const size_t n);
+-gsl_block_complex *gsl_block_complex_calloc (const size_t n);
+-void gsl_block_complex_free (gsl_block_complex * b);
+-
+-int gsl_block_complex_fread (FILE * stream, gsl_block_complex * b);
+-int gsl_block_complex_fwrite (FILE * stream, const gsl_block_complex * b);
+-int gsl_block_complex_fscanf (FILE * stream, gsl_block_complex * b);
+-int gsl_block_complex_fprintf (FILE * stream, const gsl_block_complex * b, const char *format);
+-
+-int gsl_block_complex_raw_fread (FILE * stream, double * b, const size_t n, const size_t stride);
+-int gsl_block_complex_raw_fwrite (FILE * stream, const double * b, const size_t n, const size_t stride);
+-int gsl_block_complex_raw_fscanf (FILE * stream, double * b, const size_t n, const size_t stride);
+-int gsl_block_complex_raw_fprintf (FILE * stream, const double * b, const size_t n, const size_t stride, const char *format);
+-
+-size_t gsl_block_complex_size (const gsl_block_complex * b);
+-double * gsl_block_complex_data (const gsl_block_complex * b);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_BLOCK_COMPLEX_DOUBLE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_long_double.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_long_double.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_long_double.h	(revision 14079)
+@@ -1,45 +0,0 @@
+-/* permutation/gsl_permute_vector_long_double.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_PERMUTE_VECTOR_LONG_DOUBLE_H__
+-#define __GSL_PERMUTE_VECTOR_LONG_DOUBLE_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_permutation.h>
+-#include <gsl/gsl_vector_long_double.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-int gsl_permute_vector_long_double (const gsl_permutation * p, gsl_vector_long_double * v);
+-int gsl_permute_vector_long_double_inverse (const gsl_permutation * p, gsl_vector_long_double * v);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_PERMUTE_VECTOR_LONG_DOUBLE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_int.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_int.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_int.h	(revision 14079)
+@@ -1,230 +0,0 @@
+-/* vector/gsl_vector_int.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_VECTOR_INT_H__
+-#define __GSL_VECTOR_INT_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_types.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_inline.h>
+-#include <gsl/gsl_check_range.h>
+-#include <gsl/gsl_block_int.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-typedef struct 
+-{
+-  size_t size;
+-  size_t stride;
+-  int *data;
+-  gsl_block_int *block;
+-  int owner;
+-} 
+-gsl_vector_int;
+-
+-typedef struct
+-{
+-  gsl_vector_int vector;
+-} _gsl_vector_int_view;
+-
+-typedef _gsl_vector_int_view gsl_vector_int_view;
+-
+-typedef struct
+-{
+-  gsl_vector_int vector;
+-} _gsl_vector_int_const_view;
+-
+-typedef const _gsl_vector_int_const_view gsl_vector_int_const_view;
+-
+-
+-/* Allocation */
+-
+-gsl_vector_int *gsl_vector_int_alloc (const size_t n);
+-gsl_vector_int *gsl_vector_int_calloc (const size_t n);
+-
+-gsl_vector_int *gsl_vector_int_alloc_from_block (gsl_block_int * b,
+-                                                     const size_t offset, 
+-                                                     const size_t n, 
+-                                                     const size_t stride);
+-
+-gsl_vector_int *gsl_vector_int_alloc_from_vector (gsl_vector_int * v,
+-                                                      const size_t offset, 
+-                                                      const size_t n, 
+-                                                      const size_t stride);
+-
+-void gsl_vector_int_free (gsl_vector_int * v);
+-
+-/* Views */
+-
+-_gsl_vector_int_view 
+-gsl_vector_int_view_array (int *v, size_t n);
+-
+-_gsl_vector_int_view 
+-gsl_vector_int_view_array_with_stride (int *base,
+-                                         size_t stride,
+-                                         size_t n);
+-
+-_gsl_vector_int_const_view 
+-gsl_vector_int_const_view_array (const int *v, size_t n);
+-
+-_gsl_vector_int_const_view 
+-gsl_vector_int_const_view_array_with_stride (const int *base,
+-                                               size_t stride,
+-                                               size_t n);
+-
+-_gsl_vector_int_view 
+-gsl_vector_int_subvector (gsl_vector_int *v, 
+-                            size_t i, 
+-                            size_t n);
+-
+-_gsl_vector_int_view 
+-gsl_vector_int_subvector_with_stride (gsl_vector_int *v, 
+-                                        size_t i,
+-                                        size_t stride,
+-                                        size_t n);
+-
+-_gsl_vector_int_const_view 
+-gsl_vector_int_const_subvector (const gsl_vector_int *v, 
+-                                  size_t i, 
+-                                  size_t n);
+-
+-_gsl_vector_int_const_view 
+-gsl_vector_int_const_subvector_with_stride (const gsl_vector_int *v, 
+-                                              size_t i, 
+-                                              size_t stride,
+-                                              size_t n);
+-
+-/* Operations */
+-
+-void gsl_vector_int_set_zero (gsl_vector_int * v);
+-void gsl_vector_int_set_all (gsl_vector_int * v, int x);
+-int gsl_vector_int_set_basis (gsl_vector_int * v, size_t i);
+-
+-int gsl_vector_int_fread (FILE * stream, gsl_vector_int * v);
+-int gsl_vector_int_fwrite (FILE * stream, const gsl_vector_int * v);
+-int gsl_vector_int_fscanf (FILE * stream, gsl_vector_int * v);
+-int gsl_vector_int_fprintf (FILE * stream, const gsl_vector_int * v,
+-                              const char *format);
+-
+-int gsl_vector_int_memcpy (gsl_vector_int * dest, const gsl_vector_int * src);
+-
+-int gsl_vector_int_reverse (gsl_vector_int * v);
+-
+-int gsl_vector_int_swap (gsl_vector_int * v, gsl_vector_int * w);
+-int gsl_vector_int_swap_elements (gsl_vector_int * v, const size_t i, const size_t j);
+-
+-int gsl_vector_int_max (const gsl_vector_int * v);
+-int gsl_vector_int_min (const gsl_vector_int * v);
+-void gsl_vector_int_minmax (const gsl_vector_int * v, int * min_out, int * max_out);
+-
+-size_t gsl_vector_int_max_index (const gsl_vector_int * v);
+-size_t gsl_vector_int_min_index (const gsl_vector_int * v);
+-void gsl_vector_int_minmax_index (const gsl_vector_int * v, size_t * imin, size_t * imax);
+-
+-int gsl_vector_int_add (gsl_vector_int * a, const gsl_vector_int * b);
+-int gsl_vector_int_sub (gsl_vector_int * a, const gsl_vector_int * b);
+-int gsl_vector_int_mul (gsl_vector_int * a, const gsl_vector_int * b);
+-int gsl_vector_int_div (gsl_vector_int * a, const gsl_vector_int * b);
+-int gsl_vector_int_scale (gsl_vector_int * a, const double x);
+-int gsl_vector_int_add_constant (gsl_vector_int * a, const double x);
+-
+-int gsl_vector_int_equal (const gsl_vector_int * u, 
+-                            const gsl_vector_int * v);
+-
+-int gsl_vector_int_isnull (const gsl_vector_int * v);
+-int gsl_vector_int_ispos (const gsl_vector_int * v);
+-int gsl_vector_int_isneg (const gsl_vector_int * v);
+-int gsl_vector_int_isnonneg (const gsl_vector_int * v);
+-
+-INLINE_DECL int gsl_vector_int_get (const gsl_vector_int * v, const size_t i);
+-INLINE_DECL void gsl_vector_int_set (gsl_vector_int * v, const size_t i, int x);
+-INLINE_DECL int * gsl_vector_int_ptr (gsl_vector_int * v, const size_t i);
+-INLINE_DECL const int * gsl_vector_int_const_ptr (const gsl_vector_int * v, const size_t i);
+-
+-#ifdef HAVE_INLINE
+-
+-INLINE_FUN
+-int
+-gsl_vector_int_get (const gsl_vector_int * v, const size_t i)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(i >= v->size))
+-    {
+-      GSL_ERROR_VAL ("index out of range", GSL_EINVAL, 0);
+-    }
+-#endif
+-  return v->data[i * v->stride];
+-}
+-
+-INLINE_FUN
+-void
+-gsl_vector_int_set (gsl_vector_int * v, const size_t i, int x)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(i >= v->size))
+-    {
+-      GSL_ERROR_VOID ("index out of range", GSL_EINVAL);
+-    }
+-#endif
+-  v->data[i * v->stride] = x;
+-}
+-
+-INLINE_FUN
+-int *
+-gsl_vector_int_ptr (gsl_vector_int * v, const size_t i)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(i >= v->size))
+-    {
+-      GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
+-    }
+-#endif
+-  return (int *) (v->data + i * v->stride);
+-}
+-
+-INLINE_FUN
+-const int *
+-gsl_vector_int_const_ptr (const gsl_vector_int * v, const size_t i)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(i >= v->size))
+-    {
+-      GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
+-    }
+-#endif
+-  return (const int *) (v->data + i * v->stride);
+-}
+-#endif /* HAVE_INLINE */
+-
+-__END_DECLS
+-
+-#endif /* __GSL_VECTOR_INT_H__ */
+-
+-
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_inline.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_inline.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_inline.h	(revision 14079)
+@@ -1,67 +0,0 @@
+-/* gsl_inline.h
+- * 
+- * Copyright (C) 2008, 2009 Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_INLINE_H__
+-#define __GSL_INLINE_H__
+-
+-/* In recent versiions of GCC, the inline keyword has two different
+-   forms: GNU and C99.
+-
+-   In GNU mode we can use 'extern inline' to make inline functions
+-   work like macros.  The function is only inlined--it is never output
+-   as a definition in an object file.
+-
+-   In the new C99 mode 'extern inline' has a different meaning--it
+-   causes the definition of the function to be output in each object
+-   file where it is used.  This will result in multiple-definition
+-   errors on linking.  The 'inline' keyword on its own (without
+-   extern) has the same behavior as the original GNU 'extern inline'.
+-
+-   The C99 style is the default with -std=c99 in GCC 4.3.  
+-
+-   This header file allows either form of inline to be used by
+-   redefining the macros INLINE_DECL and INLINE_FUN.  These are used
+-   in the public header files as
+-
+-        INLINE_DECL double gsl_foo (double x);
+-	#ifdef HAVE_INLINE
+-	INLINE_FUN double gsl_foo (double x) { return x+1.0; } ;
+-        #endif
+-   
+-*/
+-
+-#ifdef HAVE_INLINE
+-#  if defined(__GNUC_STDC_INLINE__) || defined(GSL_C99_INLINE) || defined(HAVE_C99_INLINE)
+-#    define INLINE_DECL inline  /* use C99 inline */
+-#    define INLINE_FUN inline
+-#  else
+-#    define INLINE_DECL         /* use GNU extern inline */
+-#    define INLINE_FUN extern inline
+-#  endif
+-#else
+-#  define INLINE_DECL /* */
+-#endif
+-
+-/* Range checking conditions in headers do not require any run-time
+-   tests of the global variable gsl_check_range.  They are enabled or
+-   disabled in user code at compile time with GSL_RANGE_CHECK macro.
+-   See also build.h. */
+-#define GSL_RANGE_COND(x) (x)
+-
+-#endif /* __GSL_INLINE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_int.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_int.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_int.h	(revision 14079)
+@@ -1,350 +0,0 @@
+-/* matrix/gsl_matrix_int.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_MATRIX_INT_H__
+-#define __GSL_MATRIX_INT_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_types.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_inline.h>
+-#include <gsl/gsl_check_range.h>
+-#include <gsl/gsl_vector_int.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-typedef struct 
+-{
+-  size_t size1;
+-  size_t size2;
+-  size_t tda;
+-  int * data;
+-  gsl_block_int * block;
+-  int owner;
+-} gsl_matrix_int;
+-
+-typedef struct
+-{
+-  gsl_matrix_int matrix;
+-} _gsl_matrix_int_view;
+-
+-typedef _gsl_matrix_int_view gsl_matrix_int_view;
+-
+-typedef struct
+-{
+-  gsl_matrix_int matrix;
+-} _gsl_matrix_int_const_view;
+-
+-typedef const _gsl_matrix_int_const_view gsl_matrix_int_const_view;
+-
+-/* Allocation */
+-
+-gsl_matrix_int * 
+-gsl_matrix_int_alloc (const size_t n1, const size_t n2);
+-
+-gsl_matrix_int * 
+-gsl_matrix_int_calloc (const size_t n1, const size_t n2);
+-
+-gsl_matrix_int * 
+-gsl_matrix_int_alloc_from_block (gsl_block_int * b, 
+-                                   const size_t offset, 
+-                                   const size_t n1, 
+-                                   const size_t n2, 
+-                                   const size_t d2);
+-
+-gsl_matrix_int * 
+-gsl_matrix_int_alloc_from_matrix (gsl_matrix_int * m,
+-                                    const size_t k1, 
+-                                    const size_t k2,
+-                                    const size_t n1, 
+-                                    const size_t n2);
+-
+-gsl_vector_int * 
+-gsl_vector_int_alloc_row_from_matrix (gsl_matrix_int * m,
+-                                        const size_t i);
+-
+-gsl_vector_int * 
+-gsl_vector_int_alloc_col_from_matrix (gsl_matrix_int * m,
+-                                        const size_t j);
+-
+-void gsl_matrix_int_free (gsl_matrix_int * m);
+-
+-/* Views */
+-
+-_gsl_matrix_int_view 
+-gsl_matrix_int_submatrix (gsl_matrix_int * m, 
+-                            const size_t i, const size_t j, 
+-                            const size_t n1, const size_t n2);
+-
+-_gsl_vector_int_view 
+-gsl_matrix_int_row (gsl_matrix_int * m, const size_t i);
+-
+-_gsl_vector_int_view 
+-gsl_matrix_int_column (gsl_matrix_int * m, const size_t j);
+-
+-_gsl_vector_int_view 
+-gsl_matrix_int_diagonal (gsl_matrix_int * m);
+-
+-_gsl_vector_int_view 
+-gsl_matrix_int_subdiagonal (gsl_matrix_int * m, const size_t k);
+-
+-_gsl_vector_int_view 
+-gsl_matrix_int_superdiagonal (gsl_matrix_int * m, const size_t k);
+-
+-_gsl_vector_int_view
+-gsl_matrix_int_subrow (gsl_matrix_int * m, const size_t i,
+-                         const size_t offset, const size_t n);
+-
+-_gsl_vector_int_view
+-gsl_matrix_int_subcolumn (gsl_matrix_int * m, const size_t j,
+-                            const size_t offset, const size_t n);
+-
+-_gsl_matrix_int_view
+-gsl_matrix_int_view_array (int * base,
+-                             const size_t n1, 
+-                             const size_t n2);
+-
+-_gsl_matrix_int_view
+-gsl_matrix_int_view_array_with_tda (int * base, 
+-                                      const size_t n1, 
+-                                      const size_t n2,
+-                                      const size_t tda);
+-
+-
+-_gsl_matrix_int_view
+-gsl_matrix_int_view_vector (gsl_vector_int * v,
+-                              const size_t n1, 
+-                              const size_t n2);
+-
+-_gsl_matrix_int_view
+-gsl_matrix_int_view_vector_with_tda (gsl_vector_int * v,
+-                                       const size_t n1, 
+-                                       const size_t n2,
+-                                       const size_t tda);
+-
+-
+-_gsl_matrix_int_const_view 
+-gsl_matrix_int_const_submatrix (const gsl_matrix_int * m, 
+-                                  const size_t i, const size_t j, 
+-                                  const size_t n1, const size_t n2);
+-
+-_gsl_vector_int_const_view 
+-gsl_matrix_int_const_row (const gsl_matrix_int * m, 
+-                            const size_t i);
+-
+-_gsl_vector_int_const_view 
+-gsl_matrix_int_const_column (const gsl_matrix_int * m, 
+-                               const size_t j);
+-
+-_gsl_vector_int_const_view
+-gsl_matrix_int_const_diagonal (const gsl_matrix_int * m);
+-
+-_gsl_vector_int_const_view 
+-gsl_matrix_int_const_subdiagonal (const gsl_matrix_int * m, 
+-                                    const size_t k);
+-
+-_gsl_vector_int_const_view 
+-gsl_matrix_int_const_superdiagonal (const gsl_matrix_int * m, 
+-                                      const size_t k);
+-
+-_gsl_vector_int_const_view
+-gsl_matrix_int_const_subrow (const gsl_matrix_int * m, const size_t i,
+-                               const size_t offset, const size_t n);
+-
+-_gsl_vector_int_const_view
+-gsl_matrix_int_const_subcolumn (const gsl_matrix_int * m, const size_t j,
+-                                  const size_t offset, const size_t n);
+-
+-_gsl_matrix_int_const_view
+-gsl_matrix_int_const_view_array (const int * base,
+-                                   const size_t n1, 
+-                                   const size_t n2);
+-
+-_gsl_matrix_int_const_view
+-gsl_matrix_int_const_view_array_with_tda (const int * base, 
+-                                            const size_t n1, 
+-                                            const size_t n2,
+-                                            const size_t tda);
+-
+-_gsl_matrix_int_const_view
+-gsl_matrix_int_const_view_vector (const gsl_vector_int * v,
+-                                    const size_t n1, 
+-                                    const size_t n2);
+-
+-_gsl_matrix_int_const_view
+-gsl_matrix_int_const_view_vector_with_tda (const gsl_vector_int * v,
+-                                             const size_t n1, 
+-                                             const size_t n2,
+-                                             const size_t tda);
+-
+-/* Operations */
+-
+-void gsl_matrix_int_set_zero (gsl_matrix_int * m);
+-void gsl_matrix_int_set_identity (gsl_matrix_int * m);
+-void gsl_matrix_int_set_all (gsl_matrix_int * m, int x);
+-
+-int gsl_matrix_int_fread (FILE * stream, gsl_matrix_int * m) ;
+-int gsl_matrix_int_fwrite (FILE * stream, const gsl_matrix_int * m) ;
+-int gsl_matrix_int_fscanf (FILE * stream, gsl_matrix_int * m);
+-int gsl_matrix_int_fprintf (FILE * stream, const gsl_matrix_int * m, const char * format);
+- 
+-int gsl_matrix_int_memcpy(gsl_matrix_int * dest, const gsl_matrix_int * src);
+-int gsl_matrix_int_swap(gsl_matrix_int * m1, gsl_matrix_int * m2);
+-
+-int gsl_matrix_int_swap_rows(gsl_matrix_int * m, const size_t i, const size_t j);
+-int gsl_matrix_int_swap_columns(gsl_matrix_int * m, const size_t i, const size_t j);
+-int gsl_matrix_int_swap_rowcol(gsl_matrix_int * m, const size_t i, const size_t j);
+-int gsl_matrix_int_transpose (gsl_matrix_int * m);
+-int gsl_matrix_int_transpose_memcpy (gsl_matrix_int * dest, const gsl_matrix_int * src);
+-
+-int gsl_matrix_int_max (const gsl_matrix_int * m);
+-int gsl_matrix_int_min (const gsl_matrix_int * m);
+-void gsl_matrix_int_minmax (const gsl_matrix_int * m, int * min_out, int * max_out);
+-
+-void gsl_matrix_int_max_index (const gsl_matrix_int * m, size_t * imax, size_t *jmax);
+-void gsl_matrix_int_min_index (const gsl_matrix_int * m, size_t * imin, size_t *jmin);
+-void gsl_matrix_int_minmax_index (const gsl_matrix_int * m, size_t * imin, size_t * jmin, size_t * imax, size_t * jmax);
+-
+-int gsl_matrix_int_equal (const gsl_matrix_int * a, const gsl_matrix_int * b);
+-
+-int gsl_matrix_int_isnull (const gsl_matrix_int * m);
+-int gsl_matrix_int_ispos (const gsl_matrix_int * m);
+-int gsl_matrix_int_isneg (const gsl_matrix_int * m);
+-int gsl_matrix_int_isnonneg (const gsl_matrix_int * m);
+-
+-int gsl_matrix_int_add (gsl_matrix_int * a, const gsl_matrix_int * b);
+-int gsl_matrix_int_sub (gsl_matrix_int * a, const gsl_matrix_int * b);
+-int gsl_matrix_int_mul_elements (gsl_matrix_int * a, const gsl_matrix_int * b);
+-int gsl_matrix_int_div_elements (gsl_matrix_int * a, const gsl_matrix_int * b);
+-int gsl_matrix_int_scale (gsl_matrix_int * a, const double x);
+-int gsl_matrix_int_add_constant (gsl_matrix_int * a, const double x);
+-int gsl_matrix_int_add_diagonal (gsl_matrix_int * a, const double x);
+-
+-/***********************************************************************/
+-/* The functions below are obsolete                                    */
+-/***********************************************************************/
+-int gsl_matrix_int_get_row(gsl_vector_int * v, const gsl_matrix_int * m, const size_t i);
+-int gsl_matrix_int_get_col(gsl_vector_int * v, const gsl_matrix_int * m, const size_t j);
+-int gsl_matrix_int_set_row(gsl_matrix_int * m, const size_t i, const gsl_vector_int * v);
+-int gsl_matrix_int_set_col(gsl_matrix_int * m, const size_t j, const gsl_vector_int * v);
+-/***********************************************************************/
+-
+-/* inline functions if you are using GCC */
+-
+-INLINE_DECL int   gsl_matrix_int_get(const gsl_matrix_int * m, const size_t i, const size_t j);
+-INLINE_DECL void    gsl_matrix_int_set(gsl_matrix_int * m, const size_t i, const size_t j, const int x);
+-INLINE_DECL int * gsl_matrix_int_ptr(gsl_matrix_int * m, const size_t i, const size_t j);
+-INLINE_DECL const int * gsl_matrix_int_const_ptr(const gsl_matrix_int * m, const size_t i, const size_t j);
+-
+-#ifdef HAVE_INLINE
+-INLINE_FUN 
+-int
+-gsl_matrix_int_get(const gsl_matrix_int * m, const size_t i, const size_t j)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(1)) 
+-    {
+-      if (i >= m->size1)
+-        {
+-          GSL_ERROR_VAL("first index out of range", GSL_EINVAL, 0) ;
+-        }
+-      else if (j >= m->size2)
+-        {
+-          GSL_ERROR_VAL("second index out of range", GSL_EINVAL, 0) ;
+-        }
+-    }
+-#endif
+-  return m->data[i * m->tda + j] ;
+-} 
+-
+-INLINE_FUN 
+-void
+-gsl_matrix_int_set(gsl_matrix_int * m, const size_t i, const size_t j, const int x)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(1)) 
+-    {
+-      if (i >= m->size1)
+-        {
+-          GSL_ERROR_VOID("first index out of range", GSL_EINVAL) ;
+-        }
+-      else if (j >= m->size2)
+-        {
+-          GSL_ERROR_VOID("second index out of range", GSL_EINVAL) ;
+-        }
+-    }
+-#endif
+-  m->data[i * m->tda + j] = x ;
+-}
+-
+-INLINE_FUN 
+-int *
+-gsl_matrix_int_ptr(gsl_matrix_int * m, const size_t i, const size_t j)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(1)) 
+-    {
+-      if (i >= m->size1)
+-        {
+-          GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
+-        }
+-      else if (j >= m->size2)
+-        {
+-          GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
+-        }
+-    }
+-#endif
+-  return (int *) (m->data + (i * m->tda + j)) ;
+-} 
+-
+-INLINE_FUN 
+-const int *
+-gsl_matrix_int_const_ptr(const gsl_matrix_int * m, const size_t i, const size_t j)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(1)) 
+-    {
+-      if (i >= m->size1)
+-        {
+-          GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
+-        }
+-      else if (j >= m->size2)
+-        {
+-          GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
+-        }
+-    }
+-#endif
+-  return (const int *) (m->data + (i * m->tda + j)) ;
+-} 
+-
+-#endif
+-
+-__END_DECLS
+-
+-#endif /* __GSL_MATRIX_INT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_complex_float.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_complex_float.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_complex_float.h	(revision 14079)
+@@ -1,45 +0,0 @@
+-/* permutation/gsl_permute_vector_complex_float.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_PERMUTE_VECTOR_COMPLEX_FLOAT_H__
+-#define __GSL_PERMUTE_VECTOR_COMPLEX_FLOAT_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_permutation.h>
+-#include <gsl/gsl_vector_complex_float.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-int gsl_permute_vector_complex_float (const gsl_permutation * p, gsl_vector_complex_float * v);
+-int gsl_permute_vector_complex_float_inverse (const gsl_permutation * p, gsl_vector_complex_float * v);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_PERMUTE_VECTOR_COMPLEX_FLOAT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_dht.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_dht.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_dht.h	(revision 14079)
+@@ -1,87 +0,0 @@
+-/* dht/gsl_dht.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-/* Author:  G. Jungman
+- */
+-#ifndef __GSL_DHT_H__
+-#define __GSL_DHT_H__
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-
+-struct gsl_dht_struct {
+-  size_t    size;  /* size of the sample arrays to be transformed    */
+-  double    nu;    /* Bessel function order                          */
+-  double    xmax;  /* the upper limit to the x-sampling domain       */
+-  double    kmax;  /* the upper limit to the k-sampling domain       */
+-  double *  j;     /* array of computed J_nu zeros, j_{nu,s} = j[s]  */
+-  double *  Jjj;   /* transform numerator, J_nu(j_i j_m / j_N)       */
+-  double *  J2;    /* transform denominator, J_{nu+1}^2(j_m)         */
+-};
+-typedef struct gsl_dht_struct gsl_dht;
+-
+-
+-/* Create a new transform object for a given size
+- * sampling array on the domain [0, xmax].
+- */
+-gsl_dht * gsl_dht_alloc(size_t size);
+-gsl_dht * gsl_dht_new(size_t size, double nu, double xmax);
+-
+-/* Recalculate a transform object for given values of nu, xmax.
+- * You cannot change the size of the object since the internal
+- * allocation is reused.
+- */
+-int gsl_dht_init(gsl_dht * t, double nu, double xmax);
+-
+-/* The n'th computed x sample point for a given transform.
+- * 0 <= n <= size-1
+- */
+-double gsl_dht_x_sample(const gsl_dht * t, int n);
+-
+-
+-/* The n'th computed k sample point for a given transform.
+- * 0 <= n <= size-1
+- */
+-double gsl_dht_k_sample(const gsl_dht * t, int n);
+-
+-
+-/* Free a transform object.
+- */
+-void gsl_dht_free(gsl_dht * t);
+-
+-
+-/* Perform a transform on a sampled array.
+- * f_in[0] ... f_in[size-1] and similarly for f_out[]
+- */
+-int gsl_dht_apply(const gsl_dht * t, double * f_in, double * f_out);
+-
+-
+-__END_DECLS
+-
+-#endif /* __GSL_DHT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_monte.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_monte.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_monte.h	(revision 14079)
+@@ -1,55 +0,0 @@
+-/* monte/gsl_monte.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000 Michael Booth
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-/* Some things common to all the Monte-Carlo implementations */
+-/* Author: MJB */
+-
+-#ifndef __GSL_MONTE_H__
+-#define __GSL_MONTE_H__
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-/* Hide the function type in a typedef so that we can use it in all our
+-   integration functions, and make it easy to change things.
+-*/
+-
+-struct gsl_monte_function_struct {
+-  double (*f)(double * x_array, size_t dim, void * params);
+-  size_t dim;
+-  void * params;
+-};
+-
+-typedef struct gsl_monte_function_struct gsl_monte_function;
+-
+-#define GSL_MONTE_FN_EVAL(F,x) (*((F)->f))(x,(F)->dim,(F)->params)
+-
+-
+-__END_DECLS
+-
+-#endif /* __GSL_MONTE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_clausen.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_clausen.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_clausen.h	(revision 14079)
+@@ -1,52 +0,0 @@
+-/* specfunc/gsl_sf_clausen.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-/* Author:  G. Jungman */
+-
+-#ifndef __GSL_SF_CLAUSEN_H__
+-#define __GSL_SF_CLAUSEN_H__
+-
+-#include <gsl/gsl_sf_result.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-
+-/* Calculate the Clausen integral:
+- *   Cl_2(x) := Integrate[-Log[2 Sin[t/2]], {t,0,x}]
+- *
+- * Relation to dilogarithm:
+- *   Cl_2(theta) = Im[ Li_2(e^(i theta)) ]
+- */
+-int gsl_sf_clausen_e(double x, gsl_sf_result * result);
+-double gsl_sf_clausen(const double x);
+-
+-
+-__END_DECLS
+-
+-#endif /* __GSL_SF_CLAUSEN_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_long_double.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_long_double.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_long_double.h	(revision 14079)
+@@ -1,51 +0,0 @@
+-/* sort/gsl_sort_vector_long_double.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_SORT_VECTOR_LONG_DOUBLE_H__
+-#define __GSL_SORT_VECTOR_LONG_DOUBLE_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_permutation.h>
+-#include <gsl/gsl_vector_long_double.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-void gsl_sort_vector_long_double (gsl_vector_long_double * v);
+-int gsl_sort_vector_long_double_index (gsl_permutation * p, const gsl_vector_long_double * v);
+-
+-int gsl_sort_vector_long_double_smallest (long double * dest, const size_t k, const gsl_vector_long_double * v);
+-int gsl_sort_vector_long_double_largest (long double * dest, const size_t k, const gsl_vector_long_double * v);
+-
+-int gsl_sort_vector_long_double_smallest_index (size_t * p, const size_t k, const gsl_vector_long_double * v);
+-int gsl_sort_vector_long_double_largest_index (size_t * p, const size_t k, const gsl_vector_long_double * v);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_SORT_VECTOR_LONG_DOUBLE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_dawson.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_dawson.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_dawson.h	(revision 14079)
+@@ -1,52 +0,0 @@
+-/* specfunc/gsl_sf_dawson.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-/* Author:  G. Jungman */
+-
+-#ifndef __GSL_SF_DAWSON_H__
+-#define __GSL_SF_DAWSON_H__
+-
+-#include <gsl/gsl_sf_result.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-
+-/* Dawson's integral:
+- *
+- *   Exp[-x^2] Integral[ Exp[t^2], {t,0,x}]
+- *
+- * exceptions: GSL_EUNDRFLW;
+- */
+-int     gsl_sf_dawson_e(double x, gsl_sf_result * result);
+-double     gsl_sf_dawson(double x);
+-
+-
+-__END_DECLS
+-
+-#endif /* __GSL_SF_DAWSON_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_psi.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_psi.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_psi.h	(revision 14079)
+@@ -1,113 +0,0 @@
+-/* specfunc/gsl_sf_psi.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004 Gerard Jungman
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-/* Author:  G. Jungman */
+-
+-#ifndef __GSL_SF_PSI_H__
+-#define __GSL_SF_PSI_H__
+-
+-#include <gsl/gsl_sf_result.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-
+-/* Poly-Gamma Functions
+- *
+- * psi(m,x) := (d/dx)^m psi(0,x) = (d/dx)^{m+1} log(gamma(x))
+- */
+-
+-
+-/* Di-Gamma Function  psi(n) = psi(0,n)
+- *
+- * n > 0
+- * exceptions: GSL_EDOM
+- */
+-int     gsl_sf_psi_int_e(const int n, gsl_sf_result * result);
+-double  gsl_sf_psi_int(const int n);
+-
+-
+-/* Di-Gamma Function psi(x) = psi(0, x)
+- *
+- * x != 0.0, -1.0, -2.0, ...
+- * exceptions: GSL_EDOM, GSL_ELOSS
+- */
+-int     gsl_sf_psi_e(const double x, gsl_sf_result * result);
+-double  gsl_sf_psi(const double x);
+-
+-
+-/* Di-Gamma Function Re[psi(1 + I y)]
+- *
+- * exceptions: none
+- */
+-int     gsl_sf_psi_1piy_e(const double y, gsl_sf_result * result);
+-double  gsl_sf_psi_1piy(const double y);
+-
+-
+-/* Di-Gamma Function psi(z) for general complex argument z = x + iy
+- *
+- * exceptions: GSL_EDOM
+- */
+-int gsl_sf_complex_psi_e(
+-  const double x,
+-  const double y,
+-  gsl_sf_result * result_re,
+-  gsl_sf_result * result_im
+-  );
+-
+-
+-/* Tri-Gamma Function psi^(1)(n)
+- *
+- * n > 0
+- * exceptions: GSL_EDOM
+- */
+-int     gsl_sf_psi_1_int_e(const int n, gsl_sf_result * result);
+-double  gsl_sf_psi_1_int(const int n);
+-
+-
+-/* Tri-Gamma Function psi^(1)(x)
+- *
+- * x != 0.0, -1.0, -2.0, ...
+- * exceptions: GSL_EDOM, GSL_ELOSS
+- */
+-int     gsl_sf_psi_1_e(const double x, gsl_sf_result * result);
+-double  gsl_sf_psi_1(const double x);
+-
+-
+-/* Poly-Gamma Function psi^(n)(x)
+- *
+- * n >= 0, x > 0.0
+- * exceptions: GSL_EDOM
+- */
+-int     gsl_sf_psi_n_e(const int n, const double x, gsl_sf_result * result);
+-double  gsl_sf_psi_n(const int n, const double x);
+-
+-
+-__END_DECLS
+-
+-#endif /* __GSL_SF_PSI_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_complex_double.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_complex_double.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_complex_double.h	(revision 14079)
+@@ -1,45 +0,0 @@
+-/* permutation/gsl_permute_vector_complex_double.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_PERMUTE_VECTOR_COMPLEX_DOUBLE_H__
+-#define __GSL_PERMUTE_VECTOR_COMPLEX_DOUBLE_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_permutation.h>
+-#include <gsl/gsl_vector_complex_double.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-int gsl_permute_vector_complex (const gsl_permutation * p, gsl_vector_complex * v);
+-int gsl_permute_vector_complex_inverse (const gsl_permutation * p, gsl_vector_complex * v);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_PERMUTE_VECTOR_COMPLEX_DOUBLE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_transport.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_transport.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_transport.h	(revision 14079)
+@@ -1,78 +0,0 @@
+-/* specfunc/gsl_sf_transport.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-/* Author:  G. Jungman */
+-
+-#ifndef __GSL_SF_TRANSPORT_H__
+-#define __GSL_SF_TRANSPORT_H__
+-
+-#include <gsl/gsl_sf_result.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-
+-/* Transport function:
+- *   J(n,x) := Integral[ t^n e^t /(e^t - 1)^2, {t,0,x}]
+- */
+-
+-/* J(2,x)
+- *
+- * exceptions: GSL_EDOM
+- */
+-int     gsl_sf_transport_2_e(const double x, gsl_sf_result * result);
+-double     gsl_sf_transport_2(const double x);
+-
+-
+-/* J(3,x)
+- *
+- * exceptions: GSL_EDOM, GSL_EUNDRFLW
+- */
+-int     gsl_sf_transport_3_e(const double x, gsl_sf_result * result);
+-double     gsl_sf_transport_3(const double x);
+-
+-
+-/* J(4,x)
+- *
+- * exceptions: GSL_EDOM, GSL_EUNDRFLW
+- */
+-int     gsl_sf_transport_4_e(const double x, gsl_sf_result * result);
+-double     gsl_sf_transport_4(const double x);
+-
+-
+-/* J(5,x)
+- *
+- * exceptions: GSL_EDOM, GSL_EUNDRFLW
+- */
+-int     gsl_sf_transport_5_e(const double x, gsl_sf_result * result);
+-double     gsl_sf_transport_5(const double x);
+-
+-
+-__END_DECLS
+-
+-#endif /* __GSL_SF_TRANSPORT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_message.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_message.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_message.h	(revision 14079)
+@@ -1,80 +0,0 @@
+-/* err/gsl_message.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_MESSAGE_H__
+-#define __GSL_MESSAGE_H__
+-#include <gsl/gsl_types.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-/* Provide a general messaging service for client use.  Messages can
+- * be selectively turned off at compile time by defining an
+- * appropriate message mask. Client code which uses the GSL_MESSAGE()
+- * macro must provide a mask which is or'ed with the GSL_MESSAGE_MASK.
+- *
+- * The messaging service can be completely turned off
+- * by defining GSL_MESSAGING_OFF.  */
+-
+-void gsl_message(const char * message, const char * file, int line,
+-                 unsigned int mask);
+-
+-#ifndef GSL_MESSAGE_MASK
+-#define GSL_MESSAGE_MASK 0xffffffffu /* default all messages allowed */
+-#endif
+-
+-GSL_VAR unsigned int gsl_message_mask ;
+-
+-/* Provide some symolic masks for client ease of use. */
+-
+-enum {
+-  GSL_MESSAGE_MASK_A = 1,
+-  GSL_MESSAGE_MASK_B = 2,
+-  GSL_MESSAGE_MASK_C = 4,
+-  GSL_MESSAGE_MASK_D = 8,
+-  GSL_MESSAGE_MASK_E = 16,
+-  GSL_MESSAGE_MASK_F = 32,
+-  GSL_MESSAGE_MASK_G = 64,
+-  GSL_MESSAGE_MASK_H = 128
+-} ;
+-
+-#ifdef GSL_MESSAGING_OFF        /* throw away messages */ 
+-#define GSL_MESSAGE(message, mask) do { } while(0)
+-#else                           /* output all messages */
+-#define GSL_MESSAGE(message, mask) \
+-       do { \
+-       if (mask & GSL_MESSAGE_MASK) \
+-         gsl_message (message, __FILE__, __LINE__, mask) ; \
+-       } while (0)
+-#endif
+-
+-__END_DECLS
+-
+-#endif /* __GSL_MESSAGE_H__ */
+-
+-
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_rng.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_rng.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_rng.h	(revision 14079)
+@@ -1,217 +0,0 @@
+-/* rng/gsl_rng.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004, 2007 James Theiler, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_RNG_H__
+-#define __GSL_RNG_H__
+-#include <stdlib.h>
+-#include <gsl/gsl_types.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_inline.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-typedef struct
+-  {
+-    const char *name;
+-    unsigned long int max;
+-    unsigned long int min;
+-    size_t size;
+-    void (*set) (void *state, unsigned long int seed);
+-    unsigned long int (*get) (void *state);
+-    double (*get_double) (void *state);
+-  }
+-gsl_rng_type;
+-
+-typedef struct
+-  {
+-    const gsl_rng_type * type;
+-    void *state;
+-  }
+-gsl_rng;
+-
+-
+-/* These structs also need to appear in default.c so you can select
+-   them via the environment variable GSL_RNG_TYPE */
+-
+-GSL_VAR const gsl_rng_type *gsl_rng_borosh13;
+-GSL_VAR const gsl_rng_type *gsl_rng_coveyou;
+-GSL_VAR const gsl_rng_type *gsl_rng_cmrg;
+-GSL_VAR const gsl_rng_type *gsl_rng_fishman18;
+-GSL_VAR const gsl_rng_type *gsl_rng_fishman20;
+-GSL_VAR const gsl_rng_type *gsl_rng_fishman2x;
+-GSL_VAR const gsl_rng_type *gsl_rng_gfsr4;
+-GSL_VAR const gsl_rng_type *gsl_rng_knuthran;
+-GSL_VAR const gsl_rng_type *gsl_rng_knuthran2;
+-GSL_VAR const gsl_rng_type *gsl_rng_knuthran2002;
+-GSL_VAR const gsl_rng_type *gsl_rng_lecuyer21;
+-GSL_VAR const gsl_rng_type *gsl_rng_minstd;
+-GSL_VAR const gsl_rng_type *gsl_rng_mrg;
+-GSL_VAR const gsl_rng_type *gsl_rng_mt19937;
+-GSL_VAR const gsl_rng_type *gsl_rng_mt19937_1999;
+-GSL_VAR const gsl_rng_type *gsl_rng_mt19937_1998;
+-GSL_VAR const gsl_rng_type *gsl_rng_r250;
+-GSL_VAR const gsl_rng_type *gsl_rng_ran0;
+-GSL_VAR const gsl_rng_type *gsl_rng_ran1;
+-GSL_VAR const gsl_rng_type *gsl_rng_ran2;
+-GSL_VAR const gsl_rng_type *gsl_rng_ran3;
+-GSL_VAR const gsl_rng_type *gsl_rng_rand;
+-GSL_VAR const gsl_rng_type *gsl_rng_rand48;
+-GSL_VAR const gsl_rng_type *gsl_rng_random128_bsd;
+-GSL_VAR const gsl_rng_type *gsl_rng_random128_glibc2;
+-GSL_VAR const gsl_rng_type *gsl_rng_random128_libc5;
+-GSL_VAR const gsl_rng_type *gsl_rng_random256_bsd;
+-GSL_VAR const gsl_rng_type *gsl_rng_random256_glibc2;
+-GSL_VAR const gsl_rng_type *gsl_rng_random256_libc5;
+-GSL_VAR const gsl_rng_type *gsl_rng_random32_bsd;
+-GSL_VAR const gsl_rng_type *gsl_rng_random32_glibc2;
+-GSL_VAR const gsl_rng_type *gsl_rng_random32_libc5;
+-GSL_VAR const gsl_rng_type *gsl_rng_random64_bsd;
+-GSL_VAR const gsl_rng_type *gsl_rng_random64_glibc2;
+-GSL_VAR const gsl_rng_type *gsl_rng_random64_libc5;
+-GSL_VAR const gsl_rng_type *gsl_rng_random8_bsd;
+-GSL_VAR const gsl_rng_type *gsl_rng_random8_glibc2;
+-GSL_VAR const gsl_rng_type *gsl_rng_random8_libc5;
+-GSL_VAR const gsl_rng_type *gsl_rng_random_bsd;
+-GSL_VAR const gsl_rng_type *gsl_rng_random_glibc2;
+-GSL_VAR const gsl_rng_type *gsl_rng_random_libc5;
+-GSL_VAR const gsl_rng_type *gsl_rng_randu;
+-GSL_VAR const gsl_rng_type *gsl_rng_ranf;
+-GSL_VAR const gsl_rng_type *gsl_rng_ranlux;
+-GSL_VAR const gsl_rng_type *gsl_rng_ranlux389;
+-GSL_VAR const gsl_rng_type *gsl_rng_ranlxd1;
+-GSL_VAR const gsl_rng_type *gsl_rng_ranlxd2;
+-GSL_VAR const gsl_rng_type *gsl_rng_ranlxs0;
+-GSL_VAR const gsl_rng_type *gsl_rng_ranlxs1;
+-GSL_VAR const gsl_rng_type *gsl_rng_ranlxs2;
+-GSL_VAR const gsl_rng_type *gsl_rng_ranmar;
+-GSL_VAR const gsl_rng_type *gsl_rng_slatec;
+-GSL_VAR const gsl_rng_type *gsl_rng_taus;
+-GSL_VAR const gsl_rng_type *gsl_rng_taus2;
+-GSL_VAR const gsl_rng_type *gsl_rng_taus113;
+-GSL_VAR const gsl_rng_type *gsl_rng_transputer;
+-GSL_VAR const gsl_rng_type *gsl_rng_tt800;
+-GSL_VAR const gsl_rng_type *gsl_rng_uni;
+-GSL_VAR const gsl_rng_type *gsl_rng_uni32;
+-GSL_VAR const gsl_rng_type *gsl_rng_vax;
+-GSL_VAR const gsl_rng_type *gsl_rng_waterman14;
+-GSL_VAR const gsl_rng_type *gsl_rng_zuf;
+-
+-const gsl_rng_type ** gsl_rng_types_setup(void);
+-
+-GSL_VAR const gsl_rng_type *gsl_rng_default;
+-GSL_VAR unsigned long int gsl_rng_default_seed;
+-
+-gsl_rng *gsl_rng_alloc (const gsl_rng_type * T);
+-int gsl_rng_memcpy (gsl_rng * dest, const gsl_rng * src);
+-gsl_rng *gsl_rng_clone (const gsl_rng * r);
+-
+-void gsl_rng_free (gsl_rng * r);
+-
+-void gsl_rng_set (const gsl_rng * r, unsigned long int seed);
+-unsigned long int gsl_rng_max (const gsl_rng * r);
+-unsigned long int gsl_rng_min (const gsl_rng * r);
+-const char *gsl_rng_name (const gsl_rng * r);
+-
+-int gsl_rng_fread (FILE * stream, gsl_rng * r);
+-int gsl_rng_fwrite (FILE * stream, const gsl_rng * r);
+-
+-size_t gsl_rng_size (const gsl_rng * r);
+-void * gsl_rng_state (const gsl_rng * r);
+-
+-void gsl_rng_print_state (const gsl_rng * r);
+-
+-const gsl_rng_type * gsl_rng_env_setup (void);
+-
+-INLINE_DECL unsigned long int gsl_rng_get (const gsl_rng * r);
+-INLINE_DECL double gsl_rng_uniform (const gsl_rng * r);
+-INLINE_DECL double gsl_rng_uniform_pos (const gsl_rng * r);
+-INLINE_DECL unsigned long int gsl_rng_uniform_int (const gsl_rng * r, unsigned long int n);
+-
+-#ifdef HAVE_INLINE
+-
+-INLINE_FUN unsigned long int
+-gsl_rng_get (const gsl_rng * r)
+-{
+-  return (r->type->get) (r->state);
+-}
+-
+-INLINE_FUN double
+-gsl_rng_uniform (const gsl_rng * r)
+-{
+-  return (r->type->get_double) (r->state);
+-}
+-
+-INLINE_FUN double
+-gsl_rng_uniform_pos (const gsl_rng * r)
+-{
+-  double x ;
+-  do
+-    {
+-      x = (r->type->get_double) (r->state) ;
+-    }
+-  while (x == 0) ;
+-
+-  return x ;
+-}
+-
+-/* Note: to avoid integer overflow in (range+1) we work with scale =
+-   range/n = (max-min)/n rather than scale=(max-min+1)/n, this reduces
+-   efficiency slightly but avoids having to check for the out of range
+-   value.  Note that range is typically O(2^32) so the addition of 1
+-   is negligible in most usage. */
+-
+-INLINE_FUN unsigned long int
+-gsl_rng_uniform_int (const gsl_rng * r, unsigned long int n)
+-{
+-  unsigned long int offset = r->type->min;
+-  unsigned long int range = r->type->max - offset;
+-  unsigned long int scale;
+-  unsigned long int k;
+-
+-  if (n > range || n == 0) 
+-    {
+-      GSL_ERROR_VAL ("invalid n, either 0 or exceeds maximum value of generator",
+-                     GSL_EINVAL, 0) ;
+-    }
+-
+-  scale = range / n;
+-
+-  do
+-    {
+-      k = (((r->type->get) (r->state)) - offset) / scale;
+-    }
+-  while (k >= n);
+-
+-  return k;
+-}
+-#endif /* HAVE_INLINE */
+-
+-__END_DECLS
+-
+-#endif /* __GSL_RNG_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_short.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_short.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_short.h	(revision 14079)
+@@ -1,51 +0,0 @@
+-/* sort/gsl_sort_vector_short.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_SORT_VECTOR_SHORT_H__
+-#define __GSL_SORT_VECTOR_SHORT_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_permutation.h>
+-#include <gsl/gsl_vector_short.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-void gsl_sort_vector_short (gsl_vector_short * v);
+-int gsl_sort_vector_short_index (gsl_permutation * p, const gsl_vector_short * v);
+-
+-int gsl_sort_vector_short_smallest (short * dest, const size_t k, const gsl_vector_short * v);
+-int gsl_sort_vector_short_largest (short * dest, const size_t k, const gsl_vector_short * v);
+-
+-int gsl_sort_vector_short_smallest_index (size_t * p, const size_t k, const gsl_vector_short * v);
+-int gsl_sort_vector_short_largest_index (size_t * p, const size_t k, const gsl_vector_short * v);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_SORT_VECTOR_SHORT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_coulomb.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_coulomb.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_coulomb.h	(revision 14079)
+@@ -1,128 +0,0 @@
+-/* specfunc/gsl_sf_coulomb.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-/* Author:  G. Jungman */
+-
+-#ifndef __GSL_SF_COULOMB_H__
+-#define __GSL_SF_COULOMB_H__
+-
+-#include <gsl/gsl_mode.h>
+-#include <gsl/gsl_sf_result.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-
+-/* Normalized hydrogenic bound states, radial dependence. */
+-
+-/* R_1 := 2Z sqrt(Z) exp(-Z r)
+- */
+-int gsl_sf_hydrogenicR_1_e(const double Z, const double r, gsl_sf_result * result);
+-double gsl_sf_hydrogenicR_1(const double Z, const double r);
+-
+-/* R_n := norm exp(-Z r/n) (2Z/n)^l Laguerre[n-l-1, 2l+1, 2Z/n r]
+- *
+- * normalization such that psi(n,l,r) = R_n Y_{lm}
+- */
+-int gsl_sf_hydrogenicR_e(const int n, const int l, const double Z, const double r, gsl_sf_result * result);
+-double gsl_sf_hydrogenicR(const int n, const int l, const double Z, const double r);
+-
+-
+-/* Coulomb wave functions F_{lam_F}(eta,x), G_{lam_G}(eta,x)
+- * and their derivatives; lam_G := lam_F - k_lam_G
+- *
+- * lam_F, lam_G > -0.5
+- * x > 0.0
+- *
+- * Conventions of Abramowitz+Stegun.
+- *
+- * Because there can be a large dynamic range of values,
+- * overflows are handled gracefully. If an overflow occurs,
+- * GSL_EOVRFLW is signalled and exponent(s) are returned
+- * through exp_F, exp_G. These are such that
+- *
+- *   F_L(eta,x)  =  fc[k_L] * exp(exp_F)
+- *   G_L(eta,x)  =  gc[k_L] * exp(exp_G)
+- *   F_L'(eta,x) = fcp[k_L] * exp(exp_F)
+- *   G_L'(eta,x) = gcp[k_L] * exp(exp_G)
+- */
+-int
+-gsl_sf_coulomb_wave_FG_e(const double eta, const double x,
+-                            const double lam_F,
+-                            const int  k_lam_G,
+-                            gsl_sf_result * F, gsl_sf_result * Fp,
+-                            gsl_sf_result * G, gsl_sf_result * Gp,
+-                            double * exp_F, double * exp_G);
+-
+-
+-/* F_L(eta,x) as array */
+-int gsl_sf_coulomb_wave_F_array(
+-  double lam_min, int kmax,
+-  double eta, double x,
+-  double * fc_array,
+-  double * F_exponent
+-  );
+-
+-/* F_L(eta,x), G_L(eta,x) as arrays */
+-int gsl_sf_coulomb_wave_FG_array(double lam_min, int kmax,
+-                                double eta, double x,
+-                                double * fc_array, double * gc_array,
+-                                double * F_exponent,
+-                                double * G_exponent
+-                                );
+-
+-/* F_L(eta,x), G_L(eta,x), F'_L(eta,x), G'_L(eta,x) as arrays */
+-int gsl_sf_coulomb_wave_FGp_array(double lam_min, int kmax,
+-                                double eta, double x,
+-                                double * fc_array, double * fcp_array,
+-                                double * gc_array, double * gcp_array,
+-                                double * F_exponent,
+-                                double * G_exponent
+-                                );
+-
+-/* Coulomb wave function divided by the argument,
+- * F(eta, x)/x. This is the function which reduces to
+- * spherical Bessel functions in the limit eta->0.
+- */
+-int gsl_sf_coulomb_wave_sphF_array(double lam_min, int kmax,
+-                                        double eta, double x,
+-                                        double * fc_array,
+-                                        double * F_exponent
+-                                        );
+-
+-
+-/* Coulomb wave function normalization constant.
+- * [Abramowitz+Stegun 14.1.8, 14.1.9]
+- */
+-int gsl_sf_coulomb_CL_e(double L, double eta, gsl_sf_result * result);
+-int gsl_sf_coulomb_CL_array(double Lmin, int kmax, double eta, double * cl);
+-
+-
+-__END_DECLS
+-
+-#endif /* __GSL_SF_COULOMB_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_ulong.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_ulong.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_ulong.h	(revision 14079)
+@@ -1,79 +0,0 @@
+-/* statistics/gsl_statistics_ulong.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_STATISTICS_ULONG_H__
+-#define __GSL_STATISTICS_ULONG_H__
+-
+-#include <stddef.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-double gsl_stats_ulong_mean (const unsigned long data[], const size_t stride, const size_t n);
+-double gsl_stats_ulong_variance (const unsigned long data[], const size_t stride, const size_t n);
+-double gsl_stats_ulong_sd (const unsigned long data[], const size_t stride, const size_t n);
+-double gsl_stats_ulong_variance_with_fixed_mean (const unsigned long data[], const size_t stride, const size_t n, const double mean);
+-double gsl_stats_ulong_sd_with_fixed_mean (const unsigned long data[], const size_t stride, const size_t n, const double mean);
+-double gsl_stats_ulong_tss (const unsigned long data[], const size_t stride, const size_t n);
+-double gsl_stats_ulong_tss_m (const unsigned long data[], const size_t stride, const size_t n, const double mean);
+-
+-double gsl_stats_ulong_absdev (const unsigned long data[], const size_t stride, const size_t n);
+-double gsl_stats_ulong_skew (const unsigned long data[], const size_t stride, const size_t n);
+-double gsl_stats_ulong_kurtosis (const unsigned long data[], const size_t stride, const size_t n);
+-double gsl_stats_ulong_lag1_autocorrelation (const unsigned long data[], const size_t stride, const size_t n);
+-
+-double gsl_stats_ulong_covariance (const unsigned long data1[], const size_t stride1,const unsigned long data2[], const size_t stride2, const size_t n);
+-double gsl_stats_ulong_correlation (const unsigned long data1[], const size_t stride1,const unsigned long data2[], const size_t stride2, const size_t n);
+-
+-double gsl_stats_ulong_variance_m (const unsigned long data[], const size_t stride, const size_t n, const double mean);
+-double gsl_stats_ulong_sd_m (const unsigned long data[], const size_t stride, const size_t n, const double mean);
+-double gsl_stats_ulong_absdev_m (const unsigned long data[], const size_t stride, const size_t n, const double mean);
+-double gsl_stats_ulong_skew_m_sd (const unsigned long data[], const size_t stride, const size_t n, const double mean, const double sd);
+-double gsl_stats_ulong_kurtosis_m_sd (const unsigned long data[], const size_t stride, const size_t n, const double mean, const double sd);
+-double gsl_stats_ulong_lag1_autocorrelation_m (const unsigned long data[], const size_t stride, const size_t n, const double mean);
+-
+-double gsl_stats_ulong_covariance_m (const unsigned long data1[], const size_t stride1,const unsigned long data2[], const size_t stride2, const size_t n, const double mean1, const double mean2);
+-
+-
+-double gsl_stats_ulong_pvariance (const unsigned long data1[], const size_t stride1, const size_t n1, const unsigned long data2[], const size_t stride2, const size_t n2);
+-double gsl_stats_ulong_ttest (const unsigned long data1[], const size_t stride1, const size_t n1, const unsigned long data2[], const size_t stride2, const size_t n2);
+-
+-unsigned long gsl_stats_ulong_max (const unsigned long data[], const size_t stride, const size_t n);
+-unsigned long gsl_stats_ulong_min (const unsigned long data[], const size_t stride, const size_t n);
+-void gsl_stats_ulong_minmax (unsigned long * min, unsigned long * max, const unsigned long data[], const size_t stride, const size_t n);
+-
+-size_t gsl_stats_ulong_max_index (const unsigned long data[], const size_t stride, const size_t n);
+-size_t gsl_stats_ulong_min_index (const unsigned long data[], const size_t stride, const size_t n);
+-void gsl_stats_ulong_minmax_index (size_t * min_index, size_t * max_index, const unsigned long data[], const size_t stride, const size_t n);
+-
+-double gsl_stats_ulong_median_from_sorted_data (const unsigned long sorted_data[], const size_t stride, const size_t n) ;
+-double gsl_stats_ulong_quantile_from_sorted_data (const unsigned long sorted_data[], const size_t stride, const size_t n, const double f) ;
+-
+-__END_DECLS
+-
+-#endif /* __GSL_STATISTICS_ULONG_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_combination.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_combination.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_combination.h	(revision 14079)
+@@ -1,92 +0,0 @@
+-/* combination/gsl_combination.h
+- * based on permutation/gsl_permutation.h by Brian Gough
+- * 
+- * Copyright (C) 2001 Szymon Jaroszewicz
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_COMBINATION_H__
+-#define __GSL_COMBINATION_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_types.h>
+-#include <gsl/gsl_inline.h>
+-#include <gsl/gsl_check_range.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-struct gsl_combination_struct
+-{
+-  size_t n;
+-  size_t k;
+-  size_t *data;
+-};
+-
+-typedef struct gsl_combination_struct gsl_combination;
+-
+-gsl_combination *gsl_combination_alloc (const size_t n, const size_t k);
+-gsl_combination *gsl_combination_calloc (const size_t n, const size_t k);
+-void gsl_combination_init_first (gsl_combination * c);
+-void gsl_combination_init_last (gsl_combination * c);
+-void gsl_combination_free (gsl_combination * c);
+-int gsl_combination_memcpy (gsl_combination * dest, const gsl_combination * src); 
+-
+-int gsl_combination_fread (FILE * stream, gsl_combination * c);
+-int gsl_combination_fwrite (FILE * stream, const gsl_combination * c);
+-int gsl_combination_fscanf (FILE * stream, gsl_combination * c);
+-int gsl_combination_fprintf (FILE * stream, const gsl_combination * c, const char *format);
+-
+-size_t gsl_combination_n (const gsl_combination * c);
+-size_t gsl_combination_k (const gsl_combination * c);
+-size_t * gsl_combination_data (const gsl_combination * c);
+-
+-int gsl_combination_valid (gsl_combination * c);
+-int gsl_combination_next (gsl_combination * c);
+-int gsl_combination_prev (gsl_combination * c);
+-
+-INLINE_DECL size_t gsl_combination_get (const gsl_combination * c, const size_t i);
+-
+-#ifdef HAVE_INLINE
+-
+-INLINE_FUN
+-size_t
+-gsl_combination_get (const gsl_combination * c, const size_t i)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(i >= c->k)) /* size_t is unsigned, can't be negative */
+-    {
+-      GSL_ERROR_VAL ("index out of range", GSL_EINVAL, 0);
+-    }
+-#endif
+-  return c->data[i];
+-}
+-
+-#endif /* HAVE_INLINE */
+-
+-__END_DECLS
+-
+-#endif /* __GSL_COMBINATION_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_const_num.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_const_num.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_const_num.h	(revision 14079)
+@@ -1,43 +0,0 @@
+-/* const/gsl_const_num.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+- * 2006, 2007, 2008, 2009 Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_CONST_NUM__
+-#define __GSL_CONST_NUM__
+-
+-#define GSL_CONST_NUM_FINE_STRUCTURE (7.297352533e-3) /* 1 */
+-#define GSL_CONST_NUM_AVOGADRO (6.02214199e23) /* 1 / mol */
+-#define GSL_CONST_NUM_YOTTA (1e24) /* 1 */
+-#define GSL_CONST_NUM_ZETTA (1e21) /* 1 */
+-#define GSL_CONST_NUM_EXA (1e18) /* 1 */
+-#define GSL_CONST_NUM_PETA (1e15) /* 1 */
+-#define GSL_CONST_NUM_TERA (1e12) /* 1 */
+-#define GSL_CONST_NUM_GIGA (1e9) /* 1 */
+-#define GSL_CONST_NUM_MEGA (1e6) /* 1 */
+-#define GSL_CONST_NUM_KILO (1e3) /* 1 */
+-#define GSL_CONST_NUM_MILLI (1e-3) /* 1 */
+-#define GSL_CONST_NUM_MICRO (1e-6) /* 1 */
+-#define GSL_CONST_NUM_NANO (1e-9) /* 1 */
+-#define GSL_CONST_NUM_PICO (1e-12) /* 1 */
+-#define GSL_CONST_NUM_FEMTO (1e-15) /* 1 */
+-#define GSL_CONST_NUM_ATTO (1e-18) /* 1 */
+-#define GSL_CONST_NUM_ZEPTO (1e-21) /* 1 */
+-#define GSL_CONST_NUM_YOCTO (1e-24) /* 1 */
+-
+-#endif /* __GSL_CONST_NUM__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_ushort.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_ushort.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_ushort.h	(revision 14079)
+@@ -1,230 +0,0 @@
+-/* vector/gsl_vector_ushort.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_VECTOR_USHORT_H__
+-#define __GSL_VECTOR_USHORT_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_types.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_inline.h>
+-#include <gsl/gsl_check_range.h>
+-#include <gsl/gsl_block_ushort.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-typedef struct 
+-{
+-  size_t size;
+-  size_t stride;
+-  unsigned short *data;
+-  gsl_block_ushort *block;
+-  int owner;
+-} 
+-gsl_vector_ushort;
+-
+-typedef struct
+-{
+-  gsl_vector_ushort vector;
+-} _gsl_vector_ushort_view;
+-
+-typedef _gsl_vector_ushort_view gsl_vector_ushort_view;
+-
+-typedef struct
+-{
+-  gsl_vector_ushort vector;
+-} _gsl_vector_ushort_const_view;
+-
+-typedef const _gsl_vector_ushort_const_view gsl_vector_ushort_const_view;
+-
+-
+-/* Allocation */
+-
+-gsl_vector_ushort *gsl_vector_ushort_alloc (const size_t n);
+-gsl_vector_ushort *gsl_vector_ushort_calloc (const size_t n);
+-
+-gsl_vector_ushort *gsl_vector_ushort_alloc_from_block (gsl_block_ushort * b,
+-                                                     const size_t offset, 
+-                                                     const size_t n, 
+-                                                     const size_t stride);
+-
+-gsl_vector_ushort *gsl_vector_ushort_alloc_from_vector (gsl_vector_ushort * v,
+-                                                      const size_t offset, 
+-                                                      const size_t n, 
+-                                                      const size_t stride);
+-
+-void gsl_vector_ushort_free (gsl_vector_ushort * v);
+-
+-/* Views */
+-
+-_gsl_vector_ushort_view 
+-gsl_vector_ushort_view_array (unsigned short *v, size_t n);
+-
+-_gsl_vector_ushort_view 
+-gsl_vector_ushort_view_array_with_stride (unsigned short *base,
+-                                         size_t stride,
+-                                         size_t n);
+-
+-_gsl_vector_ushort_const_view 
+-gsl_vector_ushort_const_view_array (const unsigned short *v, size_t n);
+-
+-_gsl_vector_ushort_const_view 
+-gsl_vector_ushort_const_view_array_with_stride (const unsigned short *base,
+-                                               size_t stride,
+-                                               size_t n);
+-
+-_gsl_vector_ushort_view 
+-gsl_vector_ushort_subvector (gsl_vector_ushort *v, 
+-                            size_t i, 
+-                            size_t n);
+-
+-_gsl_vector_ushort_view 
+-gsl_vector_ushort_subvector_with_stride (gsl_vector_ushort *v, 
+-                                        size_t i,
+-                                        size_t stride,
+-                                        size_t n);
+-
+-_gsl_vector_ushort_const_view 
+-gsl_vector_ushort_const_subvector (const gsl_vector_ushort *v, 
+-                                  size_t i, 
+-                                  size_t n);
+-
+-_gsl_vector_ushort_const_view 
+-gsl_vector_ushort_const_subvector_with_stride (const gsl_vector_ushort *v, 
+-                                              size_t i, 
+-                                              size_t stride,
+-                                              size_t n);
+-
+-/* Operations */
+-
+-void gsl_vector_ushort_set_zero (gsl_vector_ushort * v);
+-void gsl_vector_ushort_set_all (gsl_vector_ushort * v, unsigned short x);
+-int gsl_vector_ushort_set_basis (gsl_vector_ushort * v, size_t i);
+-
+-int gsl_vector_ushort_fread (FILE * stream, gsl_vector_ushort * v);
+-int gsl_vector_ushort_fwrite (FILE * stream, const gsl_vector_ushort * v);
+-int gsl_vector_ushort_fscanf (FILE * stream, gsl_vector_ushort * v);
+-int gsl_vector_ushort_fprintf (FILE * stream, const gsl_vector_ushort * v,
+-                              const char *format);
+-
+-int gsl_vector_ushort_memcpy (gsl_vector_ushort * dest, const gsl_vector_ushort * src);
+-
+-int gsl_vector_ushort_reverse (gsl_vector_ushort * v);
+-
+-int gsl_vector_ushort_swap (gsl_vector_ushort * v, gsl_vector_ushort * w);
+-int gsl_vector_ushort_swap_elements (gsl_vector_ushort * v, const size_t i, const size_t j);
+-
+-unsigned short gsl_vector_ushort_max (const gsl_vector_ushort * v);
+-unsigned short gsl_vector_ushort_min (const gsl_vector_ushort * v);
+-void gsl_vector_ushort_minmax (const gsl_vector_ushort * v, unsigned short * min_out, unsigned short * max_out);
+-
+-size_t gsl_vector_ushort_max_index (const gsl_vector_ushort * v);
+-size_t gsl_vector_ushort_min_index (const gsl_vector_ushort * v);
+-void gsl_vector_ushort_minmax_index (const gsl_vector_ushort * v, size_t * imin, size_t * imax);
+-
+-int gsl_vector_ushort_add (gsl_vector_ushort * a, const gsl_vector_ushort * b);
+-int gsl_vector_ushort_sub (gsl_vector_ushort * a, const gsl_vector_ushort * b);
+-int gsl_vector_ushort_mul (gsl_vector_ushort * a, const gsl_vector_ushort * b);
+-int gsl_vector_ushort_div (gsl_vector_ushort * a, const gsl_vector_ushort * b);
+-int gsl_vector_ushort_scale (gsl_vector_ushort * a, const double x);
+-int gsl_vector_ushort_add_constant (gsl_vector_ushort * a, const double x);
+-
+-int gsl_vector_ushort_equal (const gsl_vector_ushort * u, 
+-                            const gsl_vector_ushort * v);
+-
+-int gsl_vector_ushort_isnull (const gsl_vector_ushort * v);
+-int gsl_vector_ushort_ispos (const gsl_vector_ushort * v);
+-int gsl_vector_ushort_isneg (const gsl_vector_ushort * v);
+-int gsl_vector_ushort_isnonneg (const gsl_vector_ushort * v);
+-
+-INLINE_DECL unsigned short gsl_vector_ushort_get (const gsl_vector_ushort * v, const size_t i);
+-INLINE_DECL void gsl_vector_ushort_set (gsl_vector_ushort * v, const size_t i, unsigned short x);
+-INLINE_DECL unsigned short * gsl_vector_ushort_ptr (gsl_vector_ushort * v, const size_t i);
+-INLINE_DECL const unsigned short * gsl_vector_ushort_const_ptr (const gsl_vector_ushort * v, const size_t i);
+-
+-#ifdef HAVE_INLINE
+-
+-INLINE_FUN
+-unsigned short
+-gsl_vector_ushort_get (const gsl_vector_ushort * v, const size_t i)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(i >= v->size))
+-    {
+-      GSL_ERROR_VAL ("index out of range", GSL_EINVAL, 0);
+-    }
+-#endif
+-  return v->data[i * v->stride];
+-}
+-
+-INLINE_FUN
+-void
+-gsl_vector_ushort_set (gsl_vector_ushort * v, const size_t i, unsigned short x)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(i >= v->size))
+-    {
+-      GSL_ERROR_VOID ("index out of range", GSL_EINVAL);
+-    }
+-#endif
+-  v->data[i * v->stride] = x;
+-}
+-
+-INLINE_FUN
+-unsigned short *
+-gsl_vector_ushort_ptr (gsl_vector_ushort * v, const size_t i)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(i >= v->size))
+-    {
+-      GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
+-    }
+-#endif
+-  return (unsigned short *) (v->data + i * v->stride);
+-}
+-
+-INLINE_FUN
+-const unsigned short *
+-gsl_vector_ushort_const_ptr (const gsl_vector_ushort * v, const size_t i)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(i >= v->size))
+-    {
+-      GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
+-    }
+-#endif
+-  return (const unsigned short *) (v->data + i * v->stride);
+-}
+-#endif /* HAVE_INLINE */
+-
+-__END_DECLS
+-
+-#endif /* __GSL_VECTOR_USHORT_H__ */
+-
+-
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_complex_float.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_complex_float.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_complex_float.h	(revision 14079)
+@@ -1,65 +0,0 @@
+-/* block/gsl_block_complex_float.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_BLOCK_COMPLEX_FLOAT_H__
+-#define __GSL_BLOCK_COMPLEX_FLOAT_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-struct gsl_block_complex_float_struct
+-{
+-  size_t size;
+-  float *data;
+-};
+-
+-typedef struct gsl_block_complex_float_struct gsl_block_complex_float;
+-
+-gsl_block_complex_float *gsl_block_complex_float_alloc (const size_t n);
+-gsl_block_complex_float *gsl_block_complex_float_calloc (const size_t n);
+-void gsl_block_complex_float_free (gsl_block_complex_float * b);
+-
+-int gsl_block_complex_float_fread (FILE * stream, gsl_block_complex_float * b);
+-int gsl_block_complex_float_fwrite (FILE * stream, const gsl_block_complex_float * b);
+-int gsl_block_complex_float_fscanf (FILE * stream, gsl_block_complex_float * b);
+-int gsl_block_complex_float_fprintf (FILE * stream, const gsl_block_complex_float * b, const char *format);
+-
+-int gsl_block_complex_float_raw_fread (FILE * stream, float * b, const size_t n, const size_t stride);
+-int gsl_block_complex_float_raw_fwrite (FILE * stream, const float * b, const size_t n, const size_t stride);
+-int gsl_block_complex_float_raw_fscanf (FILE * stream, float * b, const size_t n, const size_t stride);
+-int gsl_block_complex_float_raw_fprintf (FILE * stream, const float * b, const size_t n, const size_t stride, const char *format);
+-
+-size_t gsl_block_complex_float_size (const gsl_block_complex_float * b);
+-float * gsl_block_complex_float_data (const gsl_block_complex_float * b);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_BLOCK_COMPLEX_FLOAT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_ulong.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_ulong.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_ulong.h	(revision 14079)
+@@ -1,350 +0,0 @@
+-/* matrix/gsl_matrix_ulong.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_MATRIX_ULONG_H__
+-#define __GSL_MATRIX_ULONG_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_types.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_inline.h>
+-#include <gsl/gsl_check_range.h>
+-#include <gsl/gsl_vector_ulong.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-typedef struct 
+-{
+-  size_t size1;
+-  size_t size2;
+-  size_t tda;
+-  unsigned long * data;
+-  gsl_block_ulong * block;
+-  int owner;
+-} gsl_matrix_ulong;
+-
+-typedef struct
+-{
+-  gsl_matrix_ulong matrix;
+-} _gsl_matrix_ulong_view;
+-
+-typedef _gsl_matrix_ulong_view gsl_matrix_ulong_view;
+-
+-typedef struct
+-{
+-  gsl_matrix_ulong matrix;
+-} _gsl_matrix_ulong_const_view;
+-
+-typedef const _gsl_matrix_ulong_const_view gsl_matrix_ulong_const_view;
+-
+-/* Allocation */
+-
+-gsl_matrix_ulong * 
+-gsl_matrix_ulong_alloc (const size_t n1, const size_t n2);
+-
+-gsl_matrix_ulong * 
+-gsl_matrix_ulong_calloc (const size_t n1, const size_t n2);
+-
+-gsl_matrix_ulong * 
+-gsl_matrix_ulong_alloc_from_block (gsl_block_ulong * b, 
+-                                   const size_t offset, 
+-                                   const size_t n1, 
+-                                   const size_t n2, 
+-                                   const size_t d2);
+-
+-gsl_matrix_ulong * 
+-gsl_matrix_ulong_alloc_from_matrix (gsl_matrix_ulong * m,
+-                                    const size_t k1, 
+-                                    const size_t k2,
+-                                    const size_t n1, 
+-                                    const size_t n2);
+-
+-gsl_vector_ulong * 
+-gsl_vector_ulong_alloc_row_from_matrix (gsl_matrix_ulong * m,
+-                                        const size_t i);
+-
+-gsl_vector_ulong * 
+-gsl_vector_ulong_alloc_col_from_matrix (gsl_matrix_ulong * m,
+-                                        const size_t j);
+-
+-void gsl_matrix_ulong_free (gsl_matrix_ulong * m);
+-
+-/* Views */
+-
+-_gsl_matrix_ulong_view 
+-gsl_matrix_ulong_submatrix (gsl_matrix_ulong * m, 
+-                            const size_t i, const size_t j, 
+-                            const size_t n1, const size_t n2);
+-
+-_gsl_vector_ulong_view 
+-gsl_matrix_ulong_row (gsl_matrix_ulong * m, const size_t i);
+-
+-_gsl_vector_ulong_view 
+-gsl_matrix_ulong_column (gsl_matrix_ulong * m, const size_t j);
+-
+-_gsl_vector_ulong_view 
+-gsl_matrix_ulong_diagonal (gsl_matrix_ulong * m);
+-
+-_gsl_vector_ulong_view 
+-gsl_matrix_ulong_subdiagonal (gsl_matrix_ulong * m, const size_t k);
+-
+-_gsl_vector_ulong_view 
+-gsl_matrix_ulong_superdiagonal (gsl_matrix_ulong * m, const size_t k);
+-
+-_gsl_vector_ulong_view
+-gsl_matrix_ulong_subrow (gsl_matrix_ulong * m, const size_t i,
+-                         const size_t offset, const size_t n);
+-
+-_gsl_vector_ulong_view
+-gsl_matrix_ulong_subcolumn (gsl_matrix_ulong * m, const size_t j,
+-                            const size_t offset, const size_t n);
+-
+-_gsl_matrix_ulong_view
+-gsl_matrix_ulong_view_array (unsigned long * base,
+-                             const size_t n1, 
+-                             const size_t n2);
+-
+-_gsl_matrix_ulong_view
+-gsl_matrix_ulong_view_array_with_tda (unsigned long * base, 
+-                                      const size_t n1, 
+-                                      const size_t n2,
+-                                      const size_t tda);
+-
+-
+-_gsl_matrix_ulong_view
+-gsl_matrix_ulong_view_vector (gsl_vector_ulong * v,
+-                              const size_t n1, 
+-                              const size_t n2);
+-
+-_gsl_matrix_ulong_view
+-gsl_matrix_ulong_view_vector_with_tda (gsl_vector_ulong * v,
+-                                       const size_t n1, 
+-                                       const size_t n2,
+-                                       const size_t tda);
+-
+-
+-_gsl_matrix_ulong_const_view 
+-gsl_matrix_ulong_const_submatrix (const gsl_matrix_ulong * m, 
+-                                  const size_t i, const size_t j, 
+-                                  const size_t n1, const size_t n2);
+-
+-_gsl_vector_ulong_const_view 
+-gsl_matrix_ulong_const_row (const gsl_matrix_ulong * m, 
+-                            const size_t i);
+-
+-_gsl_vector_ulong_const_view 
+-gsl_matrix_ulong_const_column (const gsl_matrix_ulong * m, 
+-                               const size_t j);
+-
+-_gsl_vector_ulong_const_view
+-gsl_matrix_ulong_const_diagonal (const gsl_matrix_ulong * m);
+-
+-_gsl_vector_ulong_const_view 
+-gsl_matrix_ulong_const_subdiagonal (const gsl_matrix_ulong * m, 
+-                                    const size_t k);
+-
+-_gsl_vector_ulong_const_view 
+-gsl_matrix_ulong_const_superdiagonal (const gsl_matrix_ulong * m, 
+-                                      const size_t k);
+-
+-_gsl_vector_ulong_const_view
+-gsl_matrix_ulong_const_subrow (const gsl_matrix_ulong * m, const size_t i,
+-                               const size_t offset, const size_t n);
+-
+-_gsl_vector_ulong_const_view
+-gsl_matrix_ulong_const_subcolumn (const gsl_matrix_ulong * m, const size_t j,
+-                                  const size_t offset, const size_t n);
+-
+-_gsl_matrix_ulong_const_view
+-gsl_matrix_ulong_const_view_array (const unsigned long * base,
+-                                   const size_t n1, 
+-                                   const size_t n2);
+-
+-_gsl_matrix_ulong_const_view
+-gsl_matrix_ulong_const_view_array_with_tda (const unsigned long * base, 
+-                                            const size_t n1, 
+-                                            const size_t n2,
+-                                            const size_t tda);
+-
+-_gsl_matrix_ulong_const_view
+-gsl_matrix_ulong_const_view_vector (const gsl_vector_ulong * v,
+-                                    const size_t n1, 
+-                                    const size_t n2);
+-
+-_gsl_matrix_ulong_const_view
+-gsl_matrix_ulong_const_view_vector_with_tda (const gsl_vector_ulong * v,
+-                                             const size_t n1, 
+-                                             const size_t n2,
+-                                             const size_t tda);
+-
+-/* Operations */
+-
+-void gsl_matrix_ulong_set_zero (gsl_matrix_ulong * m);
+-void gsl_matrix_ulong_set_identity (gsl_matrix_ulong * m);
+-void gsl_matrix_ulong_set_all (gsl_matrix_ulong * m, unsigned long x);
+-
+-int gsl_matrix_ulong_fread (FILE * stream, gsl_matrix_ulong * m) ;
+-int gsl_matrix_ulong_fwrite (FILE * stream, const gsl_matrix_ulong * m) ;
+-int gsl_matrix_ulong_fscanf (FILE * stream, gsl_matrix_ulong * m);
+-int gsl_matrix_ulong_fprintf (FILE * stream, const gsl_matrix_ulong * m, const char * format);
+- 
+-int gsl_matrix_ulong_memcpy(gsl_matrix_ulong * dest, const gsl_matrix_ulong * src);
+-int gsl_matrix_ulong_swap(gsl_matrix_ulong * m1, gsl_matrix_ulong * m2);
+-
+-int gsl_matrix_ulong_swap_rows(gsl_matrix_ulong * m, const size_t i, const size_t j);
+-int gsl_matrix_ulong_swap_columns(gsl_matrix_ulong * m, const size_t i, const size_t j);
+-int gsl_matrix_ulong_swap_rowcol(gsl_matrix_ulong * m, const size_t i, const size_t j);
+-int gsl_matrix_ulong_transpose (gsl_matrix_ulong * m);
+-int gsl_matrix_ulong_transpose_memcpy (gsl_matrix_ulong * dest, const gsl_matrix_ulong * src);
+-
+-unsigned long gsl_matrix_ulong_max (const gsl_matrix_ulong * m);
+-unsigned long gsl_matrix_ulong_min (const gsl_matrix_ulong * m);
+-void gsl_matrix_ulong_minmax (const gsl_matrix_ulong * m, unsigned long * min_out, unsigned long * max_out);
+-
+-void gsl_matrix_ulong_max_index (const gsl_matrix_ulong * m, size_t * imax, size_t *jmax);
+-void gsl_matrix_ulong_min_index (const gsl_matrix_ulong * m, size_t * imin, size_t *jmin);
+-void gsl_matrix_ulong_minmax_index (const gsl_matrix_ulong * m, size_t * imin, size_t * jmin, size_t * imax, size_t * jmax);
+-
+-int gsl_matrix_ulong_equal (const gsl_matrix_ulong * a, const gsl_matrix_ulong * b);
+-
+-int gsl_matrix_ulong_isnull (const gsl_matrix_ulong * m);
+-int gsl_matrix_ulong_ispos (const gsl_matrix_ulong * m);
+-int gsl_matrix_ulong_isneg (const gsl_matrix_ulong * m);
+-int gsl_matrix_ulong_isnonneg (const gsl_matrix_ulong * m);
+-
+-int gsl_matrix_ulong_add (gsl_matrix_ulong * a, const gsl_matrix_ulong * b);
+-int gsl_matrix_ulong_sub (gsl_matrix_ulong * a, const gsl_matrix_ulong * b);
+-int gsl_matrix_ulong_mul_elements (gsl_matrix_ulong * a, const gsl_matrix_ulong * b);
+-int gsl_matrix_ulong_div_elements (gsl_matrix_ulong * a, const gsl_matrix_ulong * b);
+-int gsl_matrix_ulong_scale (gsl_matrix_ulong * a, const double x);
+-int gsl_matrix_ulong_add_constant (gsl_matrix_ulong * a, const double x);
+-int gsl_matrix_ulong_add_diagonal (gsl_matrix_ulong * a, const double x);
+-
+-/***********************************************************************/
+-/* The functions below are obsolete                                    */
+-/***********************************************************************/
+-int gsl_matrix_ulong_get_row(gsl_vector_ulong * v, const gsl_matrix_ulong * m, const size_t i);
+-int gsl_matrix_ulong_get_col(gsl_vector_ulong * v, const gsl_matrix_ulong * m, const size_t j);
+-int gsl_matrix_ulong_set_row(gsl_matrix_ulong * m, const size_t i, const gsl_vector_ulong * v);
+-int gsl_matrix_ulong_set_col(gsl_matrix_ulong * m, const size_t j, const gsl_vector_ulong * v);
+-/***********************************************************************/
+-
+-/* inline functions if you are using GCC */
+-
+-INLINE_DECL unsigned long   gsl_matrix_ulong_get(const gsl_matrix_ulong * m, const size_t i, const size_t j);
+-INLINE_DECL void    gsl_matrix_ulong_set(gsl_matrix_ulong * m, const size_t i, const size_t j, const unsigned long x);
+-INLINE_DECL unsigned long * gsl_matrix_ulong_ptr(gsl_matrix_ulong * m, const size_t i, const size_t j);
+-INLINE_DECL const unsigned long * gsl_matrix_ulong_const_ptr(const gsl_matrix_ulong * m, const size_t i, const size_t j);
+-
+-#ifdef HAVE_INLINE
+-INLINE_FUN 
+-unsigned long
+-gsl_matrix_ulong_get(const gsl_matrix_ulong * m, const size_t i, const size_t j)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(1)) 
+-    {
+-      if (i >= m->size1)
+-        {
+-          GSL_ERROR_VAL("first index out of range", GSL_EINVAL, 0) ;
+-        }
+-      else if (j >= m->size2)
+-        {
+-          GSL_ERROR_VAL("second index out of range", GSL_EINVAL, 0) ;
+-        }
+-    }
+-#endif
+-  return m->data[i * m->tda + j] ;
+-} 
+-
+-INLINE_FUN 
+-void
+-gsl_matrix_ulong_set(gsl_matrix_ulong * m, const size_t i, const size_t j, const unsigned long x)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(1)) 
+-    {
+-      if (i >= m->size1)
+-        {
+-          GSL_ERROR_VOID("first index out of range", GSL_EINVAL) ;
+-        }
+-      else if (j >= m->size2)
+-        {
+-          GSL_ERROR_VOID("second index out of range", GSL_EINVAL) ;
+-        }
+-    }
+-#endif
+-  m->data[i * m->tda + j] = x ;
+-}
+-
+-INLINE_FUN 
+-unsigned long *
+-gsl_matrix_ulong_ptr(gsl_matrix_ulong * m, const size_t i, const size_t j)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(1)) 
+-    {
+-      if (i >= m->size1)
+-        {
+-          GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
+-        }
+-      else if (j >= m->size2)
+-        {
+-          GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
+-        }
+-    }
+-#endif
+-  return (unsigned long *) (m->data + (i * m->tda + j)) ;
+-} 
+-
+-INLINE_FUN 
+-const unsigned long *
+-gsl_matrix_ulong_const_ptr(const gsl_matrix_ulong * m, const size_t i, const size_t j)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(1)) 
+-    {
+-      if (i >= m->size1)
+-        {
+-          GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
+-        }
+-      else if (j >= m->size2)
+-        {
+-          GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
+-        }
+-    }
+-#endif
+-  return (const unsigned long *) (m->data + (i * m->tda + j)) ;
+-} 
+-
+-#endif
+-
+-__END_DECLS
+-
+-#endif /* __GSL_MATRIX_ULONG_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_deriv.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_deriv.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_deriv.h	(revision 14079)
+@@ -1,50 +0,0 @@
+-/* deriv/gsl_deriv.h
+- * 
+- * Copyright (C) 2000 David Morrison
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_DERIV_H__
+-#define __GSL_DERIV_H__
+-#include <gsl/gsl_math.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-int gsl_deriv_central (const gsl_function *f,
+-                       double x, double h,
+-                       double *result, double *abserr);
+-
+-int gsl_deriv_backward (const gsl_function *f,
+-                        double x, double h,
+-                        double *result, double *abserr);
+-
+-int gsl_deriv_forward (const gsl_function *f,
+-                       double x, double h,
+-                       double *result, double *abserr);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_DERIV_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_uchar.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_uchar.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_uchar.h	(revision 14079)
+@@ -1,50 +0,0 @@
+-/* sort/gsl_sort_uchar.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_SORT_UCHAR_H__
+-#define __GSL_SORT_UCHAR_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_permutation.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-void gsl_sort_uchar (unsigned char * data, const size_t stride, const size_t n);
+-void gsl_sort_uchar_index (size_t * p, const unsigned char * data, const size_t stride, const size_t n);
+-
+-int gsl_sort_uchar_smallest (unsigned char * dest, const size_t k, const unsigned char * src, const size_t stride, const size_t n);
+-int gsl_sort_uchar_smallest_index (size_t * p, const size_t k, const unsigned char * src, const size_t stride, const size_t n);
+-
+-int gsl_sort_uchar_largest (unsigned char * dest, const size_t k, const unsigned char * src, const size_t stride, const size_t n);
+-int gsl_sort_uchar_largest_index (size_t * p, const size_t k, const unsigned char * src, const size_t stride, const size_t n);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_SORT_UCHAR_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_gamma.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_gamma.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_gamma.h	(revision 14079)
+@@ -1,293 +0,0 @@
+-/* specfunc/gsl_sf_gamma.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-/* Author:  G. Jungman */
+-
+-#ifndef __GSL_SF_GAMMA_H__
+-#define __GSL_SF_GAMMA_H__
+-
+-#include <gsl/gsl_sf_result.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-
+-/* Log[Gamma(x)], x not a negative integer
+- * Uses real Lanczos method.
+- * Returns the real part of Log[Gamma[x]] when x < 0,
+- * i.e. Log[|Gamma[x]|].
+- *
+- * exceptions: GSL_EDOM, GSL_EROUND
+- */
+-int gsl_sf_lngamma_e(double x, gsl_sf_result * result);
+-double gsl_sf_lngamma(const double x);
+-
+-
+-/* Log[Gamma(x)], x not a negative integer
+- * Uses real Lanczos method. Determines
+- * the sign of Gamma[x] as well as Log[|Gamma[x]|] for x < 0.
+- * So Gamma[x] = sgn * Exp[result_lg].
+- *
+- * exceptions: GSL_EDOM, GSL_EROUND
+- */
+-int gsl_sf_lngamma_sgn_e(double x, gsl_sf_result * result_lg, double *sgn);
+-
+-
+-/* Gamma(x), x not a negative integer
+- * Uses real Lanczos method.
+- *
+- * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EROUND
+- */
+-int gsl_sf_gamma_e(const double x, gsl_sf_result * result);
+-double gsl_sf_gamma(const double x);
+-
+-
+-/* Regulated Gamma Function, x > 0
+- * Gamma^*(x) = Gamma(x)/(Sqrt[2Pi] x^(x-1/2) exp(-x))
+- *            = (1 + 1/(12x) + ...),  x->Inf
+- * A useful suggestion of Temme.
+- *
+- * exceptions: GSL_EDOM
+- */
+-int gsl_sf_gammastar_e(const double x, gsl_sf_result * result);
+-double gsl_sf_gammastar(const double x);
+-
+-
+-/* 1/Gamma(x)
+- * Uses real Lanczos method.
+- *
+- * exceptions: GSL_EUNDRFLW, GSL_EROUND
+- */
+-int gsl_sf_gammainv_e(const double x, gsl_sf_result * result);
+-double gsl_sf_gammainv(const double x);
+-
+-
+-/* Log[Gamma(z)] for z complex, z not a negative integer
+- * Uses complex Lanczos method. Note that the phase part (arg)
+- * is not well-determined when |z| is very large, due
+- * to inevitable roundoff in restricting to (-Pi,Pi].
+- * This will raise the GSL_ELOSS exception when it occurs.
+- * The absolute value part (lnr), however, never suffers.
+- *
+- * Calculates:
+- *   lnr = log|Gamma(z)|
+- *   arg = arg(Gamma(z))  in (-Pi, Pi]
+- *
+- * exceptions: GSL_EDOM, GSL_ELOSS
+- */
+-int gsl_sf_lngamma_complex_e(double zr, double zi, gsl_sf_result * lnr, gsl_sf_result * arg);
+-
+-
+-/* x^n / n!
+- *
+- * x >= 0.0, n >= 0
+- * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW
+- */
+-int gsl_sf_taylorcoeff_e(const int n, const double x, gsl_sf_result * result);
+-double gsl_sf_taylorcoeff(const int n, const double x);
+-
+-
+-/* n!
+- *
+- * exceptions: GSL_EDOM, GSL_EOVRFLW
+- */
+-int gsl_sf_fact_e(const unsigned int n, gsl_sf_result * result);
+-double gsl_sf_fact(const unsigned int n);
+-
+-
+-/* n!! = n(n-2)(n-4) ... 
+- *
+- * exceptions: GSL_EDOM, GSL_EOVRFLW
+- */
+-int gsl_sf_doublefact_e(const unsigned int n, gsl_sf_result * result);
+-double gsl_sf_doublefact(const unsigned int n);
+-
+-
+-/* log(n!) 
+- * Faster than ln(Gamma(n+1)) for n < 170; defers for larger n.
+- *
+- * exceptions: none
+- */
+-int gsl_sf_lnfact_e(const unsigned int n, gsl_sf_result * result);
+-double gsl_sf_lnfact(const unsigned int n);
+-
+-
+-/* log(n!!) 
+- *
+- * exceptions: none
+- */
+-int gsl_sf_lndoublefact_e(const unsigned int n, gsl_sf_result * result);
+-double gsl_sf_lndoublefact(const unsigned int n);
+-
+-
+-/* log(n choose m)
+- *
+- * exceptions: GSL_EDOM 
+- */
+-int gsl_sf_lnchoose_e(unsigned int n, unsigned int m, gsl_sf_result * result);
+-double gsl_sf_lnchoose(unsigned int n, unsigned int m);
+-
+-
+-/* n choose m
+- *
+- * exceptions: GSL_EDOM, GSL_EOVRFLW
+- */
+-int gsl_sf_choose_e(unsigned int n, unsigned int m, gsl_sf_result * result);
+-double gsl_sf_choose(unsigned int n, unsigned int m);
+-
+-
+-/* Logarithm of Pochhammer (Apell) symbol
+- *   log( (a)_x )
+- *   where (a)_x := Gamma[a + x]/Gamma[a]
+- *
+- * a > 0, a+x > 0
+- *
+- * exceptions:  GSL_EDOM
+- */
+-int gsl_sf_lnpoch_e(const double a, const double x, gsl_sf_result * result);
+-double gsl_sf_lnpoch(const double a, const double x);
+-
+-
+-/* Logarithm of Pochhammer (Apell) symbol, with sign information.
+- *   result = log( |(a)_x| )
+- *   sgn    = sgn( (a)_x )
+- *   where (a)_x := Gamma[a + x]/Gamma[a]
+- *
+- * a != neg integer, a+x != neg integer
+- *
+- * exceptions:  GSL_EDOM
+- */
+-int gsl_sf_lnpoch_sgn_e(const double a, const double x, gsl_sf_result * result, double * sgn);
+-
+-
+-/* Pochhammer (Apell) symbol
+- *   (a)_x := Gamma[a + x]/Gamma[x]
+- *
+- * a != neg integer, a+x != neg integer
+- *
+- * exceptions:  GSL_EDOM, GSL_EOVRFLW
+- */
+-int gsl_sf_poch_e(const double a, const double x, gsl_sf_result * result);
+-double gsl_sf_poch(const double a, const double x);
+-
+-
+-/* Relative Pochhammer (Apell) symbol
+- *   ((a,x) - 1)/x
+- *   where (a,x) = (a)_x := Gamma[a + x]/Gamma[a]
+- *
+- * exceptions:  GSL_EDOM
+- */
+-int gsl_sf_pochrel_e(const double a, const double x, gsl_sf_result * result);
+-double gsl_sf_pochrel(const double a, const double x);
+-
+-
+-/* Normalized Incomplete Gamma Function
+- *
+- * Q(a,x) = 1/Gamma(a) Integral[ t^(a-1) e^(-t), {t,x,Infinity} ]
+- *
+- * a >= 0, x >= 0
+- *   Q(a,0) := 1
+- *   Q(0,x) := 0, x != 0
+- *
+- * exceptions: GSL_EDOM
+- */
+-int gsl_sf_gamma_inc_Q_e(const double a, const double x, gsl_sf_result * result);
+-double gsl_sf_gamma_inc_Q(const double a, const double x);
+-
+-
+-/* Complementary Normalized Incomplete Gamma Function
+- *
+- * P(a,x) = 1/Gamma(a) Integral[ t^(a-1) e^(-t), {t,0,x} ]
+- *
+- * a > 0, x >= 0
+- *
+- * exceptions: GSL_EDOM
+- */
+-int gsl_sf_gamma_inc_P_e(const double a, const double x, gsl_sf_result * result);
+-double gsl_sf_gamma_inc_P(const double a, const double x);
+-
+-
+-/* Non-normalized Incomplete Gamma Function
+- *
+- * Gamma(a,x) := Integral[ t^(a-1) e^(-t), {t,x,Infinity} ]
+- *
+- * x >= 0.0
+- *   Gamma(a, 0) := Gamma(a)
+- *
+- * exceptions: GSL_EDOM
+- */
+-int gsl_sf_gamma_inc_e(const double a, const double x, gsl_sf_result * result);
+-double gsl_sf_gamma_inc(const double a, const double x);
+-
+-
+-/* Logarithm of Beta Function
+- * Log[B(a,b)]
+- *
+- * a > 0, b > 0
+- * exceptions: GSL_EDOM
+- */
+-int gsl_sf_lnbeta_e(const double a, const double b, gsl_sf_result * result);
+-double gsl_sf_lnbeta(const double a, const double b);
+-
+-int gsl_sf_lnbeta_sgn_e(const double x, const double y, gsl_sf_result * result, double * sgn);
+-
+-
+-/* Beta Function
+- * B(a,b)
+- *
+- * a > 0, b > 0
+- * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW
+- */
+-int gsl_sf_beta_e(const double a, const double b, gsl_sf_result * result);
+-double gsl_sf_beta(const double a, const double b);
+-
+-
+-/* Normalized Incomplete Beta Function
+- * B_x(a,b)/B(a,b)
+- *
+- * a > 0, b > 0, 0 <= x <= 1
+- * exceptions: GSL_EDOM, GSL_EUNDRFLW
+- */
+-int gsl_sf_beta_inc_e(const double a, const double b, const double x, gsl_sf_result * result);
+-double gsl_sf_beta_inc(const double a, const double b, const double x);
+-
+-
+-/* The maximum x such that gamma(x) is not
+- * considered an overflow.
+- */
+-#define GSL_SF_GAMMA_XMAX  171.0
+-
+-/* The maximum n such that gsl_sf_fact(n) does not give an overflow. */
+-#define GSL_SF_FACT_NMAX 170
+-
+-/* The maximum n such that gsl_sf_doublefact(n) does not give an overflow. */
+-#define GSL_SF_DOUBLEFACT_NMAX 297
+-
+-__END_DECLS
+-
+-#endif /* __GSL_SF_GAMMA_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_double.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_double.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_double.h	(revision 14079)
+@@ -1,44 +0,0 @@
+-/* permutation/gsl_permute_double.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_PERMUTE_DOUBLE_H__
+-#define __GSL_PERMUTE_DOUBLE_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_permutation.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-int gsl_permute (const size_t * p, double * data, const size_t stride, const size_t n);
+-int gsl_permute_inverse (const size_t * p, double * data, const size_t stride, const size_t n);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_PERMUTE_DOUBLE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_long_double.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_long_double.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_long_double.h	(revision 14079)
+@@ -1,230 +0,0 @@
+-/* vector/gsl_vector_long_double.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_VECTOR_LONG_DOUBLE_H__
+-#define __GSL_VECTOR_LONG_DOUBLE_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_types.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_inline.h>
+-#include <gsl/gsl_check_range.h>
+-#include <gsl/gsl_block_long_double.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-typedef struct 
+-{
+-  size_t size;
+-  size_t stride;
+-  long double *data;
+-  gsl_block_long_double *block;
+-  int owner;
+-} 
+-gsl_vector_long_double;
+-
+-typedef struct
+-{
+-  gsl_vector_long_double vector;
+-} _gsl_vector_long_double_view;
+-
+-typedef _gsl_vector_long_double_view gsl_vector_long_double_view;
+-
+-typedef struct
+-{
+-  gsl_vector_long_double vector;
+-} _gsl_vector_long_double_const_view;
+-
+-typedef const _gsl_vector_long_double_const_view gsl_vector_long_double_const_view;
+-
+-
+-/* Allocation */
+-
+-gsl_vector_long_double *gsl_vector_long_double_alloc (const size_t n);
+-gsl_vector_long_double *gsl_vector_long_double_calloc (const size_t n);
+-
+-gsl_vector_long_double *gsl_vector_long_double_alloc_from_block (gsl_block_long_double * b,
+-                                                     const size_t offset, 
+-                                                     const size_t n, 
+-                                                     const size_t stride);
+-
+-gsl_vector_long_double *gsl_vector_long_double_alloc_from_vector (gsl_vector_long_double * v,
+-                                                      const size_t offset, 
+-                                                      const size_t n, 
+-                                                      const size_t stride);
+-
+-void gsl_vector_long_double_free (gsl_vector_long_double * v);
+-
+-/* Views */
+-
+-_gsl_vector_long_double_view 
+-gsl_vector_long_double_view_array (long double *v, size_t n);
+-
+-_gsl_vector_long_double_view 
+-gsl_vector_long_double_view_array_with_stride (long double *base,
+-                                         size_t stride,
+-                                         size_t n);
+-
+-_gsl_vector_long_double_const_view 
+-gsl_vector_long_double_const_view_array (const long double *v, size_t n);
+-
+-_gsl_vector_long_double_const_view 
+-gsl_vector_long_double_const_view_array_with_stride (const long double *base,
+-                                               size_t stride,
+-                                               size_t n);
+-
+-_gsl_vector_long_double_view 
+-gsl_vector_long_double_subvector (gsl_vector_long_double *v, 
+-                            size_t i, 
+-                            size_t n);
+-
+-_gsl_vector_long_double_view 
+-gsl_vector_long_double_subvector_with_stride (gsl_vector_long_double *v, 
+-                                        size_t i,
+-                                        size_t stride,
+-                                        size_t n);
+-
+-_gsl_vector_long_double_const_view 
+-gsl_vector_long_double_const_subvector (const gsl_vector_long_double *v, 
+-                                  size_t i, 
+-                                  size_t n);
+-
+-_gsl_vector_long_double_const_view 
+-gsl_vector_long_double_const_subvector_with_stride (const gsl_vector_long_double *v, 
+-                                              size_t i, 
+-                                              size_t stride,
+-                                              size_t n);
+-
+-/* Operations */
+-
+-void gsl_vector_long_double_set_zero (gsl_vector_long_double * v);
+-void gsl_vector_long_double_set_all (gsl_vector_long_double * v, long double x);
+-int gsl_vector_long_double_set_basis (gsl_vector_long_double * v, size_t i);
+-
+-int gsl_vector_long_double_fread (FILE * stream, gsl_vector_long_double * v);
+-int gsl_vector_long_double_fwrite (FILE * stream, const gsl_vector_long_double * v);
+-int gsl_vector_long_double_fscanf (FILE * stream, gsl_vector_long_double * v);
+-int gsl_vector_long_double_fprintf (FILE * stream, const gsl_vector_long_double * v,
+-                              const char *format);
+-
+-int gsl_vector_long_double_memcpy (gsl_vector_long_double * dest, const gsl_vector_long_double * src);
+-
+-int gsl_vector_long_double_reverse (gsl_vector_long_double * v);
+-
+-int gsl_vector_long_double_swap (gsl_vector_long_double * v, gsl_vector_long_double * w);
+-int gsl_vector_long_double_swap_elements (gsl_vector_long_double * v, const size_t i, const size_t j);
+-
+-long double gsl_vector_long_double_max (const gsl_vector_long_double * v);
+-long double gsl_vector_long_double_min (const gsl_vector_long_double * v);
+-void gsl_vector_long_double_minmax (const gsl_vector_long_double * v, long double * min_out, long double * max_out);
+-
+-size_t gsl_vector_long_double_max_index (const gsl_vector_long_double * v);
+-size_t gsl_vector_long_double_min_index (const gsl_vector_long_double * v);
+-void gsl_vector_long_double_minmax_index (const gsl_vector_long_double * v, size_t * imin, size_t * imax);
+-
+-int gsl_vector_long_double_add (gsl_vector_long_double * a, const gsl_vector_long_double * b);
+-int gsl_vector_long_double_sub (gsl_vector_long_double * a, const gsl_vector_long_double * b);
+-int gsl_vector_long_double_mul (gsl_vector_long_double * a, const gsl_vector_long_double * b);
+-int gsl_vector_long_double_div (gsl_vector_long_double * a, const gsl_vector_long_double * b);
+-int gsl_vector_long_double_scale (gsl_vector_long_double * a, const double x);
+-int gsl_vector_long_double_add_constant (gsl_vector_long_double * a, const double x);
+-
+-int gsl_vector_long_double_equal (const gsl_vector_long_double * u, 
+-                            const gsl_vector_long_double * v);
+-
+-int gsl_vector_long_double_isnull (const gsl_vector_long_double * v);
+-int gsl_vector_long_double_ispos (const gsl_vector_long_double * v);
+-int gsl_vector_long_double_isneg (const gsl_vector_long_double * v);
+-int gsl_vector_long_double_isnonneg (const gsl_vector_long_double * v);
+-
+-INLINE_DECL long double gsl_vector_long_double_get (const gsl_vector_long_double * v, const size_t i);
+-INLINE_DECL void gsl_vector_long_double_set (gsl_vector_long_double * v, const size_t i, long double x);
+-INLINE_DECL long double * gsl_vector_long_double_ptr (gsl_vector_long_double * v, const size_t i);
+-INLINE_DECL const long double * gsl_vector_long_double_const_ptr (const gsl_vector_long_double * v, const size_t i);
+-
+-#ifdef HAVE_INLINE
+-
+-INLINE_FUN
+-long double
+-gsl_vector_long_double_get (const gsl_vector_long_double * v, const size_t i)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(i >= v->size))
+-    {
+-      GSL_ERROR_VAL ("index out of range", GSL_EINVAL, 0);
+-    }
+-#endif
+-  return v->data[i * v->stride];
+-}
+-
+-INLINE_FUN
+-void
+-gsl_vector_long_double_set (gsl_vector_long_double * v, const size_t i, long double x)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(i >= v->size))
+-    {
+-      GSL_ERROR_VOID ("index out of range", GSL_EINVAL);
+-    }
+-#endif
+-  v->data[i * v->stride] = x;
+-}
+-
+-INLINE_FUN
+-long double *
+-gsl_vector_long_double_ptr (gsl_vector_long_double * v, const size_t i)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(i >= v->size))
+-    {
+-      GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
+-    }
+-#endif
+-  return (long double *) (v->data + i * v->stride);
+-}
+-
+-INLINE_FUN
+-const long double *
+-gsl_vector_long_double_const_ptr (const gsl_vector_long_double * v, const size_t i)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(i >= v->size))
+-    {
+-      GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
+-    }
+-#endif
+-  return (const long double *) (v->data + i * v->stride);
+-}
+-#endif /* HAVE_INLINE */
+-
+-__END_DECLS
+-
+-#endif /* __GSL_VECTOR_LONG_DOUBLE_H__ */
+-
+-
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_long_double.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_long_double.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_long_double.h	(revision 14079)
+@@ -1,350 +0,0 @@
+-/* matrix/gsl_matrix_long_double.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_MATRIX_LONG_DOUBLE_H__
+-#define __GSL_MATRIX_LONG_DOUBLE_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_types.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_inline.h>
+-#include <gsl/gsl_check_range.h>
+-#include <gsl/gsl_vector_long_double.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-typedef struct 
+-{
+-  size_t size1;
+-  size_t size2;
+-  size_t tda;
+-  long double * data;
+-  gsl_block_long_double * block;
+-  int owner;
+-} gsl_matrix_long_double;
+-
+-typedef struct
+-{
+-  gsl_matrix_long_double matrix;
+-} _gsl_matrix_long_double_view;
+-
+-typedef _gsl_matrix_long_double_view gsl_matrix_long_double_view;
+-
+-typedef struct
+-{
+-  gsl_matrix_long_double matrix;
+-} _gsl_matrix_long_double_const_view;
+-
+-typedef const _gsl_matrix_long_double_const_view gsl_matrix_long_double_const_view;
+-
+-/* Allocation */
+-
+-gsl_matrix_long_double * 
+-gsl_matrix_long_double_alloc (const size_t n1, const size_t n2);
+-
+-gsl_matrix_long_double * 
+-gsl_matrix_long_double_calloc (const size_t n1, const size_t n2);
+-
+-gsl_matrix_long_double * 
+-gsl_matrix_long_double_alloc_from_block (gsl_block_long_double * b, 
+-                                   const size_t offset, 
+-                                   const size_t n1, 
+-                                   const size_t n2, 
+-                                   const size_t d2);
+-
+-gsl_matrix_long_double * 
+-gsl_matrix_long_double_alloc_from_matrix (gsl_matrix_long_double * m,
+-                                    const size_t k1, 
+-                                    const size_t k2,
+-                                    const size_t n1, 
+-                                    const size_t n2);
+-
+-gsl_vector_long_double * 
+-gsl_vector_long_double_alloc_row_from_matrix (gsl_matrix_long_double * m,
+-                                        const size_t i);
+-
+-gsl_vector_long_double * 
+-gsl_vector_long_double_alloc_col_from_matrix (gsl_matrix_long_double * m,
+-                                        const size_t j);
+-
+-void gsl_matrix_long_double_free (gsl_matrix_long_double * m);
+-
+-/* Views */
+-
+-_gsl_matrix_long_double_view 
+-gsl_matrix_long_double_submatrix (gsl_matrix_long_double * m, 
+-                            const size_t i, const size_t j, 
+-                            const size_t n1, const size_t n2);
+-
+-_gsl_vector_long_double_view 
+-gsl_matrix_long_double_row (gsl_matrix_long_double * m, const size_t i);
+-
+-_gsl_vector_long_double_view 
+-gsl_matrix_long_double_column (gsl_matrix_long_double * m, const size_t j);
+-
+-_gsl_vector_long_double_view 
+-gsl_matrix_long_double_diagonal (gsl_matrix_long_double * m);
+-
+-_gsl_vector_long_double_view 
+-gsl_matrix_long_double_subdiagonal (gsl_matrix_long_double * m, const size_t k);
+-
+-_gsl_vector_long_double_view 
+-gsl_matrix_long_double_superdiagonal (gsl_matrix_long_double * m, const size_t k);
+-
+-_gsl_vector_long_double_view
+-gsl_matrix_long_double_subrow (gsl_matrix_long_double * m, const size_t i,
+-                         const size_t offset, const size_t n);
+-
+-_gsl_vector_long_double_view
+-gsl_matrix_long_double_subcolumn (gsl_matrix_long_double * m, const size_t j,
+-                            const size_t offset, const size_t n);
+-
+-_gsl_matrix_long_double_view
+-gsl_matrix_long_double_view_array (long double * base,
+-                             const size_t n1, 
+-                             const size_t n2);
+-
+-_gsl_matrix_long_double_view
+-gsl_matrix_long_double_view_array_with_tda (long double * base, 
+-                                      const size_t n1, 
+-                                      const size_t n2,
+-                                      const size_t tda);
+-
+-
+-_gsl_matrix_long_double_view
+-gsl_matrix_long_double_view_vector (gsl_vector_long_double * v,
+-                              const size_t n1, 
+-                              const size_t n2);
+-
+-_gsl_matrix_long_double_view
+-gsl_matrix_long_double_view_vector_with_tda (gsl_vector_long_double * v,
+-                                       const size_t n1, 
+-                                       const size_t n2,
+-                                       const size_t tda);
+-
+-
+-_gsl_matrix_long_double_const_view 
+-gsl_matrix_long_double_const_submatrix (const gsl_matrix_long_double * m, 
+-                                  const size_t i, const size_t j, 
+-                                  const size_t n1, const size_t n2);
+-
+-_gsl_vector_long_double_const_view 
+-gsl_matrix_long_double_const_row (const gsl_matrix_long_double * m, 
+-                            const size_t i);
+-
+-_gsl_vector_long_double_const_view 
+-gsl_matrix_long_double_const_column (const gsl_matrix_long_double * m, 
+-                               const size_t j);
+-
+-_gsl_vector_long_double_const_view
+-gsl_matrix_long_double_const_diagonal (const gsl_matrix_long_double * m);
+-
+-_gsl_vector_long_double_const_view 
+-gsl_matrix_long_double_const_subdiagonal (const gsl_matrix_long_double * m, 
+-                                    const size_t k);
+-
+-_gsl_vector_long_double_const_view 
+-gsl_matrix_long_double_const_superdiagonal (const gsl_matrix_long_double * m, 
+-                                      const size_t k);
+-
+-_gsl_vector_long_double_const_view
+-gsl_matrix_long_double_const_subrow (const gsl_matrix_long_double * m, const size_t i,
+-                               const size_t offset, const size_t n);
+-
+-_gsl_vector_long_double_const_view
+-gsl_matrix_long_double_const_subcolumn (const gsl_matrix_long_double * m, const size_t j,
+-                                  const size_t offset, const size_t n);
+-
+-_gsl_matrix_long_double_const_view
+-gsl_matrix_long_double_const_view_array (const long double * base,
+-                                   const size_t n1, 
+-                                   const size_t n2);
+-
+-_gsl_matrix_long_double_const_view
+-gsl_matrix_long_double_const_view_array_with_tda (const long double * base, 
+-                                            const size_t n1, 
+-                                            const size_t n2,
+-                                            const size_t tda);
+-
+-_gsl_matrix_long_double_const_view
+-gsl_matrix_long_double_const_view_vector (const gsl_vector_long_double * v,
+-                                    const size_t n1, 
+-                                    const size_t n2);
+-
+-_gsl_matrix_long_double_const_view
+-gsl_matrix_long_double_const_view_vector_with_tda (const gsl_vector_long_double * v,
+-                                             const size_t n1, 
+-                                             const size_t n2,
+-                                             const size_t tda);
+-
+-/* Operations */
+-
+-void gsl_matrix_long_double_set_zero (gsl_matrix_long_double * m);
+-void gsl_matrix_long_double_set_identity (gsl_matrix_long_double * m);
+-void gsl_matrix_long_double_set_all (gsl_matrix_long_double * m, long double x);
+-
+-int gsl_matrix_long_double_fread (FILE * stream, gsl_matrix_long_double * m) ;
+-int gsl_matrix_long_double_fwrite (FILE * stream, const gsl_matrix_long_double * m) ;
+-int gsl_matrix_long_double_fscanf (FILE * stream, gsl_matrix_long_double * m);
+-int gsl_matrix_long_double_fprintf (FILE * stream, const gsl_matrix_long_double * m, const char * format);
+- 
+-int gsl_matrix_long_double_memcpy(gsl_matrix_long_double * dest, const gsl_matrix_long_double * src);
+-int gsl_matrix_long_double_swap(gsl_matrix_long_double * m1, gsl_matrix_long_double * m2);
+-
+-int gsl_matrix_long_double_swap_rows(gsl_matrix_long_double * m, const size_t i, const size_t j);
+-int gsl_matrix_long_double_swap_columns(gsl_matrix_long_double * m, const size_t i, const size_t j);
+-int gsl_matrix_long_double_swap_rowcol(gsl_matrix_long_double * m, const size_t i, const size_t j);
+-int gsl_matrix_long_double_transpose (gsl_matrix_long_double * m);
+-int gsl_matrix_long_double_transpose_memcpy (gsl_matrix_long_double * dest, const gsl_matrix_long_double * src);
+-
+-long double gsl_matrix_long_double_max (const gsl_matrix_long_double * m);
+-long double gsl_matrix_long_double_min (const gsl_matrix_long_double * m);
+-void gsl_matrix_long_double_minmax (const gsl_matrix_long_double * m, long double * min_out, long double * max_out);
+-
+-void gsl_matrix_long_double_max_index (const gsl_matrix_long_double * m, size_t * imax, size_t *jmax);
+-void gsl_matrix_long_double_min_index (const gsl_matrix_long_double * m, size_t * imin, size_t *jmin);
+-void gsl_matrix_long_double_minmax_index (const gsl_matrix_long_double * m, size_t * imin, size_t * jmin, size_t * imax, size_t * jmax);
+-
+-int gsl_matrix_long_double_equal (const gsl_matrix_long_double * a, const gsl_matrix_long_double * b);
+-
+-int gsl_matrix_long_double_isnull (const gsl_matrix_long_double * m);
+-int gsl_matrix_long_double_ispos (const gsl_matrix_long_double * m);
+-int gsl_matrix_long_double_isneg (const gsl_matrix_long_double * m);
+-int gsl_matrix_long_double_isnonneg (const gsl_matrix_long_double * m);
+-
+-int gsl_matrix_long_double_add (gsl_matrix_long_double * a, const gsl_matrix_long_double * b);
+-int gsl_matrix_long_double_sub (gsl_matrix_long_double * a, const gsl_matrix_long_double * b);
+-int gsl_matrix_long_double_mul_elements (gsl_matrix_long_double * a, const gsl_matrix_long_double * b);
+-int gsl_matrix_long_double_div_elements (gsl_matrix_long_double * a, const gsl_matrix_long_double * b);
+-int gsl_matrix_long_double_scale (gsl_matrix_long_double * a, const double x);
+-int gsl_matrix_long_double_add_constant (gsl_matrix_long_double * a, const double x);
+-int gsl_matrix_long_double_add_diagonal (gsl_matrix_long_double * a, const double x);
+-
+-/***********************************************************************/
+-/* The functions below are obsolete                                    */
+-/***********************************************************************/
+-int gsl_matrix_long_double_get_row(gsl_vector_long_double * v, const gsl_matrix_long_double * m, const size_t i);
+-int gsl_matrix_long_double_get_col(gsl_vector_long_double * v, const gsl_matrix_long_double * m, const size_t j);
+-int gsl_matrix_long_double_set_row(gsl_matrix_long_double * m, const size_t i, const gsl_vector_long_double * v);
+-int gsl_matrix_long_double_set_col(gsl_matrix_long_double * m, const size_t j, const gsl_vector_long_double * v);
+-/***********************************************************************/
+-
+-/* inline functions if you are using GCC */
+-
+-INLINE_DECL long double   gsl_matrix_long_double_get(const gsl_matrix_long_double * m, const size_t i, const size_t j);
+-INLINE_DECL void    gsl_matrix_long_double_set(gsl_matrix_long_double * m, const size_t i, const size_t j, const long double x);
+-INLINE_DECL long double * gsl_matrix_long_double_ptr(gsl_matrix_long_double * m, const size_t i, const size_t j);
+-INLINE_DECL const long double * gsl_matrix_long_double_const_ptr(const gsl_matrix_long_double * m, const size_t i, const size_t j);
+-
+-#ifdef HAVE_INLINE
+-INLINE_FUN 
+-long double
+-gsl_matrix_long_double_get(const gsl_matrix_long_double * m, const size_t i, const size_t j)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(1)) 
+-    {
+-      if (i >= m->size1)
+-        {
+-          GSL_ERROR_VAL("first index out of range", GSL_EINVAL, 0) ;
+-        }
+-      else if (j >= m->size2)
+-        {
+-          GSL_ERROR_VAL("second index out of range", GSL_EINVAL, 0) ;
+-        }
+-    }
+-#endif
+-  return m->data[i * m->tda + j] ;
+-} 
+-
+-INLINE_FUN 
+-void
+-gsl_matrix_long_double_set(gsl_matrix_long_double * m, const size_t i, const size_t j, const long double x)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(1)) 
+-    {
+-      if (i >= m->size1)
+-        {
+-          GSL_ERROR_VOID("first index out of range", GSL_EINVAL) ;
+-        }
+-      else if (j >= m->size2)
+-        {
+-          GSL_ERROR_VOID("second index out of range", GSL_EINVAL) ;
+-        }
+-    }
+-#endif
+-  m->data[i * m->tda + j] = x ;
+-}
+-
+-INLINE_FUN 
+-long double *
+-gsl_matrix_long_double_ptr(gsl_matrix_long_double * m, const size_t i, const size_t j)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(1)) 
+-    {
+-      if (i >= m->size1)
+-        {
+-          GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
+-        }
+-      else if (j >= m->size2)
+-        {
+-          GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
+-        }
+-    }
+-#endif
+-  return (long double *) (m->data + (i * m->tda + j)) ;
+-} 
+-
+-INLINE_FUN 
+-const long double *
+-gsl_matrix_long_double_const_ptr(const gsl_matrix_long_double * m, const size_t i, const size_t j)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(1)) 
+-    {
+-      if (i >= m->size1)
+-        {
+-          GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
+-        }
+-      else if (j >= m->size2)
+-        {
+-          GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
+-        }
+-    }
+-#endif
+-  return (const long double *) (m->data + (i * m->tda + j)) ;
+-} 
+-
+-#endif
+-
+-__END_DECLS
+-
+-#endif /* __GSL_MATRIX_LONG_DOUBLE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_float.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_float.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_float.h	(revision 14079)
+@@ -1,99 +0,0 @@
+-/* statistics/gsl_statistics_float.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_STATISTICS_FLOAT_H__
+-#define __GSL_STATISTICS_FLOAT_H__
+-
+-#include <stddef.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-double gsl_stats_float_mean (const float data[], const size_t stride, const size_t n);
+-double gsl_stats_float_variance (const float data[], const size_t stride, const size_t n);
+-double gsl_stats_float_sd (const float data[], const size_t stride, const size_t n);
+-double gsl_stats_float_variance_with_fixed_mean (const float data[], const size_t stride, const size_t n, const double mean);
+-double gsl_stats_float_sd_with_fixed_mean (const float data[], const size_t stride, const size_t n, const double mean);
+-double gsl_stats_float_tss (const float data[], const size_t stride, const size_t n);
+-double gsl_stats_float_tss_m (const float data[], const size_t stride, const size_t n, const double mean);
+-
+-double gsl_stats_float_absdev (const float data[], const size_t stride, const size_t n);
+-double gsl_stats_float_skew (const float data[], const size_t stride, const size_t n);
+-double gsl_stats_float_kurtosis (const float data[], const size_t stride, const size_t n);
+-double gsl_stats_float_lag1_autocorrelation (const float data[], const size_t stride, const size_t n);
+-
+-double gsl_stats_float_covariance (const float data1[], const size_t stride1,const float data2[], const size_t stride2, const size_t n);
+-double gsl_stats_float_correlation (const float data1[], const size_t stride1,const float data2[], const size_t stride2, const size_t n);
+-
+-double gsl_stats_float_variance_m (const float data[], const size_t stride, const size_t n, const double mean);
+-double gsl_stats_float_sd_m (const float data[], const size_t stride, const size_t n, const double mean);
+-double gsl_stats_float_absdev_m (const float data[], const size_t stride, const size_t n, const double mean);
+-double gsl_stats_float_skew_m_sd (const float data[], const size_t stride, const size_t n, const double mean, const double sd);
+-double gsl_stats_float_kurtosis_m_sd (const float data[], const size_t stride, const size_t n, const double mean, const double sd);
+-double gsl_stats_float_lag1_autocorrelation_m (const float data[], const size_t stride, const size_t n, const double mean);
+-
+-double gsl_stats_float_covariance_m (const float data1[], const size_t stride1,const float data2[], const size_t stride2, const size_t n, const double mean1, const double mean2);
+-
+-/* DEFINED FOR FLOATING POINT TYPES ONLY */
+-
+-double gsl_stats_float_wmean (const float w[], const size_t wstride, const float data[], const size_t stride, const size_t n);
+-double gsl_stats_float_wvariance (const float w[], const size_t wstride, const float data[], const size_t stride, const size_t n);
+-double gsl_stats_float_wsd (const float w[], const size_t wstride, const float data[], const size_t stride, const size_t n);
+-double gsl_stats_float_wvariance_with_fixed_mean (const float w[], const size_t wstride, const float data[], const size_t stride, const size_t n, const double mean);
+-double gsl_stats_float_wsd_with_fixed_mean (const float w[], const size_t wstride, const float data[], const size_t stride, const size_t n, const double mean);
+-double gsl_stats_float_wtss (const float w[], const size_t wstride, const float data[], const size_t stride, const size_t n);
+-double gsl_stats_float_wtss_m (const float w[], const size_t wstride, const float data[], const size_t stride, const size_t n, const double wmean);
+-double gsl_stats_float_wabsdev (const float w[], const size_t wstride, const float data[], const size_t stride, const size_t n);
+-double gsl_stats_float_wskew (const float w[], const size_t wstride, const float data[], const size_t stride, const size_t n);
+-double gsl_stats_float_wkurtosis (const float w[], const size_t wstride, const float data[], const size_t stride, const size_t n);
+-
+-double gsl_stats_float_wvariance_m (const float w[], const size_t wstride, const float data[], const size_t stride, const size_t n, const double wmean);
+-double gsl_stats_float_wsd_m (const float w[], const size_t wstride, const float data[], const size_t stride, const size_t n, const double wmean);
+-double gsl_stats_float_wabsdev_m (const float w[], const size_t wstride, const float data[], const size_t stride, const size_t n, const double wmean);
+-double gsl_stats_float_wskew_m_sd (const float w[], const size_t wstride, const float data[], const size_t stride, const size_t n, const double wmean, const double wsd);
+-double gsl_stats_float_wkurtosis_m_sd (const float w[], const size_t wstride, const float data[], const size_t stride, const size_t n, const double wmean, const double wsd);
+-
+-/* END OF FLOATING POINT TYPES */
+-
+-double gsl_stats_float_pvariance (const float data1[], const size_t stride1, const size_t n1, const float data2[], const size_t stride2, const size_t n2);
+-double gsl_stats_float_ttest (const float data1[], const size_t stride1, const size_t n1, const float data2[], const size_t stride2, const size_t n2);
+-
+-float gsl_stats_float_max (const float data[], const size_t stride, const size_t n);
+-float gsl_stats_float_min (const float data[], const size_t stride, const size_t n);
+-void gsl_stats_float_minmax (float * min, float * max, const float data[], const size_t stride, const size_t n);
+-
+-size_t gsl_stats_float_max_index (const float data[], const size_t stride, const size_t n);
+-size_t gsl_stats_float_min_index (const float data[], const size_t stride, const size_t n);
+-void gsl_stats_float_minmax_index (size_t * min_index, size_t * max_index, const float data[], const size_t stride, const size_t n);
+-
+-double gsl_stats_float_median_from_sorted_data (const float sorted_data[], const size_t stride, const size_t n) ;
+-double gsl_stats_float_quantile_from_sorted_data (const float sorted_data[], const size_t stride, const size_t n, const double f) ;
+-
+-__END_DECLS
+-
+-#endif /* __GSL_STATISTICS_FLOAT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_uint.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_uint.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_uint.h	(revision 14079)
+@@ -1,44 +0,0 @@
+-/* permutation/gsl_permute_uint.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_PERMUTE_UINT_H__
+-#define __GSL_PERMUTE_UINT_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_permutation.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-int gsl_permute_uint (const size_t * p, unsigned int * data, const size_t stride, const size_t n);
+-int gsl_permute_uint_inverse (const size_t * p, unsigned int * data, const size_t stride, const size_t n);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_PERMUTE_UINT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_double.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_double.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_double.h	(revision 14079)
+@@ -1,50 +0,0 @@
+-/* sort/gsl_sort_double.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_SORT_DOUBLE_H__
+-#define __GSL_SORT_DOUBLE_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_permutation.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-void gsl_sort (double * data, const size_t stride, const size_t n);
+-void gsl_sort_index (size_t * p, const double * data, const size_t stride, const size_t n);
+-
+-int gsl_sort_smallest (double * dest, const size_t k, const double * src, const size_t stride, const size_t n);
+-int gsl_sort_smallest_index (size_t * p, const size_t k, const double * src, const size_t stride, const size_t n);
+-
+-int gsl_sort_largest (double * dest, const size_t k, const double * src, const size_t stride, const size_t n);
+-int gsl_sort_largest_index (size_t * p, const size_t k, const double * src, const size_t stride, const size_t n);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_SORT_DOUBLE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_double.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_double.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_double.h	(revision 14079)
+@@ -1,99 +0,0 @@
+-/* statistics/gsl_statistics_double.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_STATISTICS_DOUBLE_H__
+-#define __GSL_STATISTICS_DOUBLE_H__
+-
+-#include <stddef.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-double gsl_stats_mean (const double data[], const size_t stride, const size_t n);
+-double gsl_stats_variance (const double data[], const size_t stride, const size_t n);
+-double gsl_stats_sd (const double data[], const size_t stride, const size_t n);
+-double gsl_stats_variance_with_fixed_mean (const double data[], const size_t stride, const size_t n, const double mean);
+-double gsl_stats_sd_with_fixed_mean (const double data[], const size_t stride, const size_t n, const double mean);
+-double gsl_stats_tss (const double data[], const size_t stride, const size_t n);
+-double gsl_stats_tss_m (const double data[], const size_t stride, const size_t n, const double mean);
+-
+-double gsl_stats_absdev (const double data[], const size_t stride, const size_t n);
+-double gsl_stats_skew (const double data[], const size_t stride, const size_t n);
+-double gsl_stats_kurtosis (const double data[], const size_t stride, const size_t n);
+-double gsl_stats_lag1_autocorrelation (const double data[], const size_t stride, const size_t n);
+-
+-double gsl_stats_covariance (const double data1[], const size_t stride1,const double data2[], const size_t stride2, const size_t n);
+-double gsl_stats_correlation (const double data1[], const size_t stride1,const double data2[], const size_t stride2, const size_t n);
+-
+-double gsl_stats_variance_m (const double data[], const size_t stride, const size_t n, const double mean);
+-double gsl_stats_sd_m (const double data[], const size_t stride, const size_t n, const double mean);
+-double gsl_stats_absdev_m (const double data[], const size_t stride, const size_t n, const double mean);
+-double gsl_stats_skew_m_sd (const double data[], const size_t stride, const size_t n, const double mean, const double sd);
+-double gsl_stats_kurtosis_m_sd (const double data[], const size_t stride, const size_t n, const double mean, const double sd);
+-double gsl_stats_lag1_autocorrelation_m (const double data[], const size_t stride, const size_t n, const double mean);
+-
+-double gsl_stats_covariance_m (const double data1[], const size_t stride1,const double data2[], const size_t stride2, const size_t n, const double mean1, const double mean2);
+-
+-/* DEFINED FOR FLOATING POINT TYPES ONLY */
+-
+-double gsl_stats_wmean (const double w[], const size_t wstride, const double data[], const size_t stride, const size_t n);
+-double gsl_stats_wvariance (const double w[], const size_t wstride, const double data[], const size_t stride, const size_t n);
+-double gsl_stats_wsd (const double w[], const size_t wstride, const double data[], const size_t stride, const size_t n);
+-double gsl_stats_wvariance_with_fixed_mean (const double w[], const size_t wstride, const double data[], const size_t stride, const size_t n, const double mean);
+-double gsl_stats_wsd_with_fixed_mean (const double w[], const size_t wstride, const double data[], const size_t stride, const size_t n, const double mean);
+-double gsl_stats_wtss (const double w[], const size_t wstride, const double data[], const size_t stride, const size_t n);
+-double gsl_stats_wtss_m (const double w[], const size_t wstride, const double data[], const size_t stride, const size_t n, const double wmean);
+-double gsl_stats_wabsdev (const double w[], const size_t wstride, const double data[], const size_t stride, const size_t n);
+-double gsl_stats_wskew (const double w[], const size_t wstride, const double data[], const size_t stride, const size_t n);
+-double gsl_stats_wkurtosis (const double w[], const size_t wstride, const double data[], const size_t stride, const size_t n);
+-
+-double gsl_stats_wvariance_m (const double w[], const size_t wstride, const double data[], const size_t stride, const size_t n, const double wmean);
+-double gsl_stats_wsd_m (const double w[], const size_t wstride, const double data[], const size_t stride, const size_t n, const double wmean);
+-double gsl_stats_wabsdev_m (const double w[], const size_t wstride, const double data[], const size_t stride, const size_t n, const double wmean);
+-double gsl_stats_wskew_m_sd (const double w[], const size_t wstride, const double data[], const size_t stride, const size_t n, const double wmean, const double wsd);
+-double gsl_stats_wkurtosis_m_sd (const double w[], const size_t wstride, const double data[], const size_t stride, const size_t n, const double wmean, const double wsd);
+-
+-/* END OF FLOATING POINT TYPES */
+-
+-double gsl_stats_pvariance (const double data1[], const size_t stride1, const size_t n1, const double data2[], const size_t stride2, const size_t n2);
+-double gsl_stats_ttest (const double data1[], const size_t stride1, const size_t n1, const double data2[], const size_t stride2, const size_t n2);
+-
+-double gsl_stats_max (const double data[], const size_t stride, const size_t n);
+-double gsl_stats_min (const double data[], const size_t stride, const size_t n);
+-void gsl_stats_minmax (double * min, double * max, const double data[], const size_t stride, const size_t n);
+-
+-size_t gsl_stats_max_index (const double data[], const size_t stride, const size_t n);
+-size_t gsl_stats_min_index (const double data[], const size_t stride, const size_t n);
+-void gsl_stats_minmax_index (size_t * min_index, size_t * max_index, const double data[], const size_t stride, const size_t n);
+-
+-double gsl_stats_median_from_sorted_data (const double sorted_data[], const size_t stride, const size_t n) ;
+-double gsl_stats_quantile_from_sorted_data (const double sorted_data[], const size_t stride, const size_t n, const double f) ;
+-
+-__END_DECLS
+-
+-#endif /* __GSL_STATISTICS_DOUBLE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_exp.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_exp.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_exp.h	(revision 14079)
+@@ -1,134 +0,0 @@
+-/* specfunc/gsl_sf_exp.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004 Gerard Jungman
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-/* Author:  G. Jungman */
+-
+-#ifndef __GSL_SF_EXP_H__
+-#define __GSL_SF_EXP_H__
+-
+-#include <gsl/gsl_sf_result.h>
+-#include <gsl/gsl_precision.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-/* Provide an exp() function with GSL semantics,
+- * i.e. with proper error checking, etc.
+- *
+- * exceptions: GSL_EOVRFLW, GSL_EUNDRFLW
+- */
+-int gsl_sf_exp_e(const double x, gsl_sf_result * result);
+-double gsl_sf_exp(const double x);
+-
+-
+-/* Exp(x)
+- *
+- * exceptions: GSL_EOVRFLW, GSL_EUNDRFLW
+- */
+-int gsl_sf_exp_e10_e(const double x, gsl_sf_result_e10 * result);
+-
+-
+-/* Exponentiate and multiply by a given factor:  y * Exp(x)
+- *
+- * exceptions: GSL_EOVRFLW, GSL_EUNDRFLW
+- */
+-int gsl_sf_exp_mult_e(const double x, const double y, gsl_sf_result * result);
+-double gsl_sf_exp_mult(const double x, const double y);
+-
+-
+-/* Exponentiate and multiply by a given factor:  y * Exp(x)
+- *
+- * exceptions: GSL_EOVRFLW, GSL_EUNDRFLW
+- */
+-int gsl_sf_exp_mult_e10_e(const double x, const double y, gsl_sf_result_e10 * result);
+-
+-
+-/* exp(x)-1
+- *
+- * exceptions: GSL_EOVRFLW
+- */
+-int gsl_sf_expm1_e(const double x, gsl_sf_result * result);
+-double gsl_sf_expm1(const double x);
+-
+-
+-/* (exp(x)-1)/x = 1 + x/2 + x^2/(2*3) + x^3/(2*3*4) + ...
+- *
+- * exceptions: GSL_EOVRFLW
+- */
+-int gsl_sf_exprel_e(const double x, gsl_sf_result * result);
+-double gsl_sf_exprel(const double x);
+-
+-
+-/* 2(exp(x)-1-x)/x^2 = 1 + x/3 + x^2/(3*4) + x^3/(3*4*5) + ...
+- *
+- * exceptions: GSL_EOVRFLW
+- */
+-int gsl_sf_exprel_2_e(double x, gsl_sf_result * result);
+-double gsl_sf_exprel_2(const double x);
+-
+-
+-/* Similarly for the N-th generalization of
+- * the above. The so-called N-relative exponential
+- *
+- * exprel_N(x) = N!/x^N (exp(x) - Sum[x^k/k!, {k,0,N-1}])
+- *             = 1 + x/(N+1) + x^2/((N+1)(N+2)) + ...
+- *             = 1F1(1,1+N,x)
+- */
+-int gsl_sf_exprel_n_e(const int n, const double x, gsl_sf_result * result);
+-double gsl_sf_exprel_n(const int n, const double x);
+-
+-int gsl_sf_exprel_n_CF_e(const double n, const double x, gsl_sf_result * result);
+-
+-
+-/* Exponentiate a quantity with an associated error.
+- */
+-int gsl_sf_exp_err_e(const double x, const double dx, gsl_sf_result * result);
+-
+-/* Exponentiate a quantity with an associated error.
+- */
+-int gsl_sf_exp_err_e10_e(const double x, const double dx, gsl_sf_result_e10 * result);
+-
+-
+-/* Exponentiate and multiply by a given factor:  y * Exp(x),
+- * for quantities with associated errors.
+- *
+- * exceptions: GSL_EOVRFLW, GSL_EUNDRFLW
+- */
+-int gsl_sf_exp_mult_err_e(const double x, const double dx, const double y, const double dy, gsl_sf_result * result);
+-
+-
+-/* Exponentiate and multiply by a given factor:  y * Exp(x),
+- * for quantities with associated errors.
+- *
+- * exceptions: GSL_EOVRFLW, GSL_EUNDRFLW
+- */
+-int gsl_sf_exp_mult_err_e10_e(const double x, const double dx, const double y, const double dy, gsl_sf_result_e10 * result);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_SF_EXP_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_errno.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_errno.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_errno.h	(revision 14079)
+@@ -1,154 +0,0 @@
+-/* err/gsl_errno.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_ERRNO_H__
+-#define __GSL_ERRNO_H__
+-
+-#include <stdio.h>
+-#include <errno.h>
+-#include <gsl/gsl_types.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-enum { 
+-  GSL_SUCCESS  = 0, 
+-  GSL_FAILURE  = -1,
+-  GSL_CONTINUE = -2,  /* iteration has not converged */
+-  GSL_EDOM     = 1,   /* input domain error, e.g sqrt(-1) */
+-  GSL_ERANGE   = 2,   /* output range error, e.g. exp(1e100) */
+-  GSL_EFAULT   = 3,   /* invalid pointer */
+-  GSL_EINVAL   = 4,   /* invalid argument supplied by user */
+-  GSL_EFAILED  = 5,   /* generic failure */
+-  GSL_EFACTOR  = 6,   /* factorization failed */
+-  GSL_ESANITY  = 7,   /* sanity check failed - shouldn't happen */
+-  GSL_ENOMEM   = 8,   /* malloc failed */
+-  GSL_EBADFUNC = 9,   /* problem with user-supplied function */
+-  GSL_ERUNAWAY = 10,  /* iterative process is out of control */
+-  GSL_EMAXITER = 11,  /* exceeded max number of iterations */
+-  GSL_EZERODIV = 12,  /* tried to divide by zero */
+-  GSL_EBADTOL  = 13,  /* user specified an invalid tolerance */
+-  GSL_ETOL     = 14,  /* failed to reach the specified tolerance */
+-  GSL_EUNDRFLW = 15,  /* underflow */
+-  GSL_EOVRFLW  = 16,  /* overflow  */
+-  GSL_ELOSS    = 17,  /* loss of accuracy */
+-  GSL_EROUND   = 18,  /* failed because of roundoff error */
+-  GSL_EBADLEN  = 19,  /* matrix, vector lengths are not conformant */
+-  GSL_ENOTSQR  = 20,  /* matrix not square */
+-  GSL_ESING    = 21,  /* apparent singularity detected */
+-  GSL_EDIVERGE = 22,  /* integral or series is divergent */
+-  GSL_EUNSUP   = 23,  /* requested feature is not supported by the hardware */
+-  GSL_EUNIMPL  = 24,  /* requested feature not (yet) implemented */
+-  GSL_ECACHE   = 25,  /* cache limit exceeded */
+-  GSL_ETABLE   = 26,  /* table limit exceeded */
+-  GSL_ENOPROG  = 27,  /* iteration is not making progress towards solution */
+-  GSL_ENOPROGJ = 28,  /* jacobian evaluations are not improving the solution */
+-  GSL_ETOLF    = 29,  /* cannot reach the specified tolerance in F */
+-  GSL_ETOLX    = 30,  /* cannot reach the specified tolerance in X */
+-  GSL_ETOLG    = 31,  /* cannot reach the specified tolerance in gradient */
+-  GSL_EOF      = 32   /* end of file */
+-} ;
+-
+-void gsl_error (const char * reason, const char * file, int line,
+-                int gsl_errno);
+-
+-void gsl_stream_printf (const char *label, const char *file,
+-                        int line, const char *reason);
+-
+-const char * gsl_strerror (const int gsl_errno);
+-
+-typedef void gsl_error_handler_t (const char * reason, const char * file,
+-                                  int line, int gsl_errno);
+-
+-typedef void gsl_stream_handler_t (const char * label, const char * file,
+-                                   int line, const char * reason);
+-
+-gsl_error_handler_t * 
+-gsl_set_error_handler (gsl_error_handler_t * new_handler);
+-
+-gsl_error_handler_t *
+-gsl_set_error_handler_off (void);
+-
+-gsl_stream_handler_t * 
+-gsl_set_stream_handler (gsl_stream_handler_t * new_handler);
+-
+-FILE * gsl_set_stream (FILE * new_stream);
+-
+-/* GSL_ERROR: call the error handler, and return the error code */
+-
+-#define GSL_ERROR(reason, gsl_errno) \
+-       do { \
+-       gsl_error (reason, __FILE__, __LINE__, gsl_errno) ; \
+-       return gsl_errno ; \
+-       } while (0)
+-
+-/* GSL_ERROR_VAL: call the error handler, and return the given value */
+-
+-#define GSL_ERROR_VAL(reason, gsl_errno, value) \
+-       do { \
+-       gsl_error (reason, __FILE__, __LINE__, gsl_errno) ; \
+-       return value ; \
+-       } while (0)
+-
+-/* GSL_ERROR_VOID: call the error handler, and then return
+-   (for void functions which still need to generate an error) */
+-
+-#define GSL_ERROR_VOID(reason, gsl_errno) \
+-       do { \
+-       gsl_error (reason, __FILE__, __LINE__, gsl_errno) ; \
+-       return ; \
+-       } while (0)
+-
+-/* GSL_ERROR_NULL suitable for out-of-memory conditions */
+-
+-#define GSL_ERROR_NULL(reason, gsl_errno) GSL_ERROR_VAL(reason, gsl_errno, 0)
+-
+-/* Sometimes you have several status results returned from
+- * function calls and you want to combine them in some sensible
+- * way. You cannot produce a "total" status condition, but you can
+- * pick one from a set of conditions based on an implied hierarchy.
+- *
+- * In other words:
+- *    you have: status_a, status_b, ...
+- *    you want: status = (status_a if it is bad, or status_b if it is bad,...)
+- *
+- * In this example you consider status_a to be more important and
+- * it is checked first, followed by the others in the order specified.
+- *
+- * Here are some dumb macros to do this.
+- */
+-#define GSL_ERROR_SELECT_2(a,b)       ((a) != GSL_SUCCESS ? (a) : ((b) != GSL_SUCCESS ? (b) : GSL_SUCCESS))
+-#define GSL_ERROR_SELECT_3(a,b,c)     ((a) != GSL_SUCCESS ? (a) : GSL_ERROR_SELECT_2(b,c))
+-#define GSL_ERROR_SELECT_4(a,b,c,d)   ((a) != GSL_SUCCESS ? (a) : GSL_ERROR_SELECT_3(b,c,d))
+-#define GSL_ERROR_SELECT_5(a,b,c,d,e) ((a) != GSL_SUCCESS ? (a) : GSL_ERROR_SELECT_4(b,c,d,e))
+-
+-#define GSL_STATUS_UPDATE(sp, s) do { if ((s) != GSL_SUCCESS) *(sp) = (s);} while(0)
+-
+-__END_DECLS
+-
+-#endif /* __GSL_ERRNO_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_ulong.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_ulong.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_ulong.h	(revision 14079)
+@@ -1,44 +0,0 @@
+-/* permutation/gsl_permute_ulong.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_PERMUTE_ULONG_H__
+-#define __GSL_PERMUTE_ULONG_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_permutation.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-int gsl_permute_ulong (const size_t * p, unsigned long * data, const size_t stride, const size_t n);
+-int gsl_permute_ulong_inverse (const size_t * p, unsigned long * data, const size_t stride, const size_t n);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_PERMUTE_ULONG_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_dft_complex_float.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_dft_complex_float.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_dft_complex_float.h	(revision 14079)
+@@ -1,55 +0,0 @@
+-/* fft/gsl_dft_complex_float.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_DFT_COMPLEX_FLOAT_H__
+-#define __GSL_DFT_COMPLEX_FLOAT_H__
+-
+-#include <stddef.h>
+-
+-#include <gsl/gsl_math.h>
+-#include <gsl/gsl_complex.h>
+-#include <gsl/gsl_fft.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-int gsl_dft_complex_float_forward (const float data[], const size_t stride, const size_t n,
+-                             float result[]);
+-
+-int gsl_dft_complex_float_backward (const float data[], const size_t stride, const size_t n,
+-                              float result[]);
+-
+-int gsl_dft_complex_float_inverse (const float data[], const size_t stride, const size_t n,
+-                             float result[]);
+-
+-int gsl_dft_complex_float_transform (const float data[], const size_t stride, const size_t n,
+-                     float result[], const gsl_fft_direction sign);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_DFT_COMPLEX_FLOAT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_float.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_float.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_float.h	(revision 14079)
+@@ -1,350 +0,0 @@
+-/* matrix/gsl_matrix_float.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_MATRIX_FLOAT_H__
+-#define __GSL_MATRIX_FLOAT_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_types.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_inline.h>
+-#include <gsl/gsl_check_range.h>
+-#include <gsl/gsl_vector_float.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-typedef struct 
+-{
+-  size_t size1;
+-  size_t size2;
+-  size_t tda;
+-  float * data;
+-  gsl_block_float * block;
+-  int owner;
+-} gsl_matrix_float;
+-
+-typedef struct
+-{
+-  gsl_matrix_float matrix;
+-} _gsl_matrix_float_view;
+-
+-typedef _gsl_matrix_float_view gsl_matrix_float_view;
+-
+-typedef struct
+-{
+-  gsl_matrix_float matrix;
+-} _gsl_matrix_float_const_view;
+-
+-typedef const _gsl_matrix_float_const_view gsl_matrix_float_const_view;
+-
+-/* Allocation */
+-
+-gsl_matrix_float * 
+-gsl_matrix_float_alloc (const size_t n1, const size_t n2);
+-
+-gsl_matrix_float * 
+-gsl_matrix_float_calloc (const size_t n1, const size_t n2);
+-
+-gsl_matrix_float * 
+-gsl_matrix_float_alloc_from_block (gsl_block_float * b, 
+-                                   const size_t offset, 
+-                                   const size_t n1, 
+-                                   const size_t n2, 
+-                                   const size_t d2);
+-
+-gsl_matrix_float * 
+-gsl_matrix_float_alloc_from_matrix (gsl_matrix_float * m,
+-                                    const size_t k1, 
+-                                    const size_t k2,
+-                                    const size_t n1, 
+-                                    const size_t n2);
+-
+-gsl_vector_float * 
+-gsl_vector_float_alloc_row_from_matrix (gsl_matrix_float * m,
+-                                        const size_t i);
+-
+-gsl_vector_float * 
+-gsl_vector_float_alloc_col_from_matrix (gsl_matrix_float * m,
+-                                        const size_t j);
+-
+-void gsl_matrix_float_free (gsl_matrix_float * m);
+-
+-/* Views */
+-
+-_gsl_matrix_float_view 
+-gsl_matrix_float_submatrix (gsl_matrix_float * m, 
+-                            const size_t i, const size_t j, 
+-                            const size_t n1, const size_t n2);
+-
+-_gsl_vector_float_view 
+-gsl_matrix_float_row (gsl_matrix_float * m, const size_t i);
+-
+-_gsl_vector_float_view 
+-gsl_matrix_float_column (gsl_matrix_float * m, const size_t j);
+-
+-_gsl_vector_float_view 
+-gsl_matrix_float_diagonal (gsl_matrix_float * m);
+-
+-_gsl_vector_float_view 
+-gsl_matrix_float_subdiagonal (gsl_matrix_float * m, const size_t k);
+-
+-_gsl_vector_float_view 
+-gsl_matrix_float_superdiagonal (gsl_matrix_float * m, const size_t k);
+-
+-_gsl_vector_float_view
+-gsl_matrix_float_subrow (gsl_matrix_float * m, const size_t i,
+-                         const size_t offset, const size_t n);
+-
+-_gsl_vector_float_view
+-gsl_matrix_float_subcolumn (gsl_matrix_float * m, const size_t j,
+-                            const size_t offset, const size_t n);
+-
+-_gsl_matrix_float_view
+-gsl_matrix_float_view_array (float * base,
+-                             const size_t n1, 
+-                             const size_t n2);
+-
+-_gsl_matrix_float_view
+-gsl_matrix_float_view_array_with_tda (float * base, 
+-                                      const size_t n1, 
+-                                      const size_t n2,
+-                                      const size_t tda);
+-
+-
+-_gsl_matrix_float_view
+-gsl_matrix_float_view_vector (gsl_vector_float * v,
+-                              const size_t n1, 
+-                              const size_t n2);
+-
+-_gsl_matrix_float_view
+-gsl_matrix_float_view_vector_with_tda (gsl_vector_float * v,
+-                                       const size_t n1, 
+-                                       const size_t n2,
+-                                       const size_t tda);
+-
+-
+-_gsl_matrix_float_const_view 
+-gsl_matrix_float_const_submatrix (const gsl_matrix_float * m, 
+-                                  const size_t i, const size_t j, 
+-                                  const size_t n1, const size_t n2);
+-
+-_gsl_vector_float_const_view 
+-gsl_matrix_float_const_row (const gsl_matrix_float * m, 
+-                            const size_t i);
+-
+-_gsl_vector_float_const_view 
+-gsl_matrix_float_const_column (const gsl_matrix_float * m, 
+-                               const size_t j);
+-
+-_gsl_vector_float_const_view
+-gsl_matrix_float_const_diagonal (const gsl_matrix_float * m);
+-
+-_gsl_vector_float_const_view 
+-gsl_matrix_float_const_subdiagonal (const gsl_matrix_float * m, 
+-                                    const size_t k);
+-
+-_gsl_vector_float_const_view 
+-gsl_matrix_float_const_superdiagonal (const gsl_matrix_float * m, 
+-                                      const size_t k);
+-
+-_gsl_vector_float_const_view
+-gsl_matrix_float_const_subrow (const gsl_matrix_float * m, const size_t i,
+-                               const size_t offset, const size_t n);
+-
+-_gsl_vector_float_const_view
+-gsl_matrix_float_const_subcolumn (const gsl_matrix_float * m, const size_t j,
+-                                  const size_t offset, const size_t n);
+-
+-_gsl_matrix_float_const_view
+-gsl_matrix_float_const_view_array (const float * base,
+-                                   const size_t n1, 
+-                                   const size_t n2);
+-
+-_gsl_matrix_float_const_view
+-gsl_matrix_float_const_view_array_with_tda (const float * base, 
+-                                            const size_t n1, 
+-                                            const size_t n2,
+-                                            const size_t tda);
+-
+-_gsl_matrix_float_const_view
+-gsl_matrix_float_const_view_vector (const gsl_vector_float * v,
+-                                    const size_t n1, 
+-                                    const size_t n2);
+-
+-_gsl_matrix_float_const_view
+-gsl_matrix_float_const_view_vector_with_tda (const gsl_vector_float * v,
+-                                             const size_t n1, 
+-                                             const size_t n2,
+-                                             const size_t tda);
+-
+-/* Operations */
+-
+-void gsl_matrix_float_set_zero (gsl_matrix_float * m);
+-void gsl_matrix_float_set_identity (gsl_matrix_float * m);
+-void gsl_matrix_float_set_all (gsl_matrix_float * m, float x);
+-
+-int gsl_matrix_float_fread (FILE * stream, gsl_matrix_float * m) ;
+-int gsl_matrix_float_fwrite (FILE * stream, const gsl_matrix_float * m) ;
+-int gsl_matrix_float_fscanf (FILE * stream, gsl_matrix_float * m);
+-int gsl_matrix_float_fprintf (FILE * stream, const gsl_matrix_float * m, const char * format);
+- 
+-int gsl_matrix_float_memcpy(gsl_matrix_float * dest, const gsl_matrix_float * src);
+-int gsl_matrix_float_swap(gsl_matrix_float * m1, gsl_matrix_float * m2);
+-
+-int gsl_matrix_float_swap_rows(gsl_matrix_float * m, const size_t i, const size_t j);
+-int gsl_matrix_float_swap_columns(gsl_matrix_float * m, const size_t i, const size_t j);
+-int gsl_matrix_float_swap_rowcol(gsl_matrix_float * m, const size_t i, const size_t j);
+-int gsl_matrix_float_transpose (gsl_matrix_float * m);
+-int gsl_matrix_float_transpose_memcpy (gsl_matrix_float * dest, const gsl_matrix_float * src);
+-
+-float gsl_matrix_float_max (const gsl_matrix_float * m);
+-float gsl_matrix_float_min (const gsl_matrix_float * m);
+-void gsl_matrix_float_minmax (const gsl_matrix_float * m, float * min_out, float * max_out);
+-
+-void gsl_matrix_float_max_index (const gsl_matrix_float * m, size_t * imax, size_t *jmax);
+-void gsl_matrix_float_min_index (const gsl_matrix_float * m, size_t * imin, size_t *jmin);
+-void gsl_matrix_float_minmax_index (const gsl_matrix_float * m, size_t * imin, size_t * jmin, size_t * imax, size_t * jmax);
+-
+-int gsl_matrix_float_equal (const gsl_matrix_float * a, const gsl_matrix_float * b);
+-
+-int gsl_matrix_float_isnull (const gsl_matrix_float * m);
+-int gsl_matrix_float_ispos (const gsl_matrix_float * m);
+-int gsl_matrix_float_isneg (const gsl_matrix_float * m);
+-int gsl_matrix_float_isnonneg (const gsl_matrix_float * m);
+-
+-int gsl_matrix_float_add (gsl_matrix_float * a, const gsl_matrix_float * b);
+-int gsl_matrix_float_sub (gsl_matrix_float * a, const gsl_matrix_float * b);
+-int gsl_matrix_float_mul_elements (gsl_matrix_float * a, const gsl_matrix_float * b);
+-int gsl_matrix_float_div_elements (gsl_matrix_float * a, const gsl_matrix_float * b);
+-int gsl_matrix_float_scale (gsl_matrix_float * a, const double x);
+-int gsl_matrix_float_add_constant (gsl_matrix_float * a, const double x);
+-int gsl_matrix_float_add_diagonal (gsl_matrix_float * a, const double x);
+-
+-/***********************************************************************/
+-/* The functions below are obsolete                                    */
+-/***********************************************************************/
+-int gsl_matrix_float_get_row(gsl_vector_float * v, const gsl_matrix_float * m, const size_t i);
+-int gsl_matrix_float_get_col(gsl_vector_float * v, const gsl_matrix_float * m, const size_t j);
+-int gsl_matrix_float_set_row(gsl_matrix_float * m, const size_t i, const gsl_vector_float * v);
+-int gsl_matrix_float_set_col(gsl_matrix_float * m, const size_t j, const gsl_vector_float * v);
+-/***********************************************************************/
+-
+-/* inline functions if you are using GCC */
+-
+-INLINE_DECL float   gsl_matrix_float_get(const gsl_matrix_float * m, const size_t i, const size_t j);
+-INLINE_DECL void    gsl_matrix_float_set(gsl_matrix_float * m, const size_t i, const size_t j, const float x);
+-INLINE_DECL float * gsl_matrix_float_ptr(gsl_matrix_float * m, const size_t i, const size_t j);
+-INLINE_DECL const float * gsl_matrix_float_const_ptr(const gsl_matrix_float * m, const size_t i, const size_t j);
+-
+-#ifdef HAVE_INLINE
+-INLINE_FUN 
+-float
+-gsl_matrix_float_get(const gsl_matrix_float * m, const size_t i, const size_t j)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(1)) 
+-    {
+-      if (i >= m->size1)
+-        {
+-          GSL_ERROR_VAL("first index out of range", GSL_EINVAL, 0) ;
+-        }
+-      else if (j >= m->size2)
+-        {
+-          GSL_ERROR_VAL("second index out of range", GSL_EINVAL, 0) ;
+-        }
+-    }
+-#endif
+-  return m->data[i * m->tda + j] ;
+-} 
+-
+-INLINE_FUN 
+-void
+-gsl_matrix_float_set(gsl_matrix_float * m, const size_t i, const size_t j, const float x)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(1)) 
+-    {
+-      if (i >= m->size1)
+-        {
+-          GSL_ERROR_VOID("first index out of range", GSL_EINVAL) ;
+-        }
+-      else if (j >= m->size2)
+-        {
+-          GSL_ERROR_VOID("second index out of range", GSL_EINVAL) ;
+-        }
+-    }
+-#endif
+-  m->data[i * m->tda + j] = x ;
+-}
+-
+-INLINE_FUN 
+-float *
+-gsl_matrix_float_ptr(gsl_matrix_float * m, const size_t i, const size_t j)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(1)) 
+-    {
+-      if (i >= m->size1)
+-        {
+-          GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
+-        }
+-      else if (j >= m->size2)
+-        {
+-          GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
+-        }
+-    }
+-#endif
+-  return (float *) (m->data + (i * m->tda + j)) ;
+-} 
+-
+-INLINE_FUN 
+-const float *
+-gsl_matrix_float_const_ptr(const gsl_matrix_float * m, const size_t i, const size_t j)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(1)) 
+-    {
+-      if (i >= m->size1)
+-        {
+-          GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
+-        }
+-      else if (j >= m->size2)
+-        {
+-          GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
+-        }
+-    }
+-#endif
+-  return (const float *) (m->data + (i * m->tda + j)) ;
+-} 
+-
+-#endif
+-
+-__END_DECLS
+-
+-#endif /* __GSL_MATRIX_FLOAT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_math.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_math.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_math.h	(revision 14079)
+@@ -1,164 +0,0 @@
+-/* gsl_math.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004, 2007 Gerard Jungman, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_MATH_H__
+-#define __GSL_MATH_H__
+-#include <math.h>
+-#include <gsl/gsl_sys.h>
+-#include <gsl/gsl_inline.h>
+-#include <gsl/gsl_machine.h>
+-#include <gsl/gsl_precision.h>
+-#include <gsl/gsl_nan.h>
+-#include <gsl/gsl_pow_int.h>
+-#include <gsl/gsl_minmax.h>
+-
+-#ifndef M_E
+-#define M_E        2.71828182845904523536028747135      /* e */
+-#endif
+-
+-#ifndef M_LOG2E
+-#define M_LOG2E    1.44269504088896340735992468100      /* log_2 (e) */
+-#endif
+-
+-#ifndef M_LOG10E
+-#define M_LOG10E   0.43429448190325182765112891892      /* log_10 (e) */
+-#endif
+-
+-#ifndef M_SQRT2
+-#define M_SQRT2    1.41421356237309504880168872421      /* sqrt(2) */
+-#endif
+-
+-#ifndef M_SQRT1_2
+-#define M_SQRT1_2  0.70710678118654752440084436210      /* sqrt(1/2) */
+-#endif
+-
+-
+-#ifndef M_SQRT3
+-#define M_SQRT3    1.73205080756887729352744634151      /* sqrt(3) */
+-#endif
+-
+-#ifndef M_PI
+-#define M_PI       3.14159265358979323846264338328      /* pi */
+-#endif
+-
+-#ifndef M_PI_2
+-#define M_PI_2     1.57079632679489661923132169164      /* pi/2 */
+-#endif
+-
+-#ifndef M_PI_4
+-#define M_PI_4     0.78539816339744830961566084582     /* pi/4 */
+-#endif
+-
+-#ifndef M_SQRTPI
+-#define M_SQRTPI   1.77245385090551602729816748334      /* sqrt(pi) */
+-#endif
+-
+-#ifndef M_2_SQRTPI
+-#define M_2_SQRTPI 1.12837916709551257389615890312      /* 2/sqrt(pi) */
+-#endif
+-
+-#ifndef M_1_PI
+-#define M_1_PI     0.31830988618379067153776752675      /* 1/pi */
+-#endif
+-
+-#ifndef M_2_PI
+-#define M_2_PI     0.63661977236758134307553505349      /* 2/pi */
+-#endif
+-
+-#ifndef M_LN10
+-#define M_LN10     2.30258509299404568401799145468      /* ln(10) */
+-#endif
+-
+-#ifndef M_LN2
+-#define M_LN2      0.69314718055994530941723212146      /* ln(2) */
+-#endif
+-
+-#ifndef M_LNPI
+-#define M_LNPI     1.14472988584940017414342735135      /* ln(pi) */
+-#endif
+-
+-#ifndef M_EULER
+-#define M_EULER    0.57721566490153286060651209008      /* Euler constant */
+-#endif
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-/* other needlessly compulsive abstractions */
+-
+-#define GSL_IS_ODD(n)  ((n) & 1)
+-#define GSL_IS_EVEN(n) (!(GSL_IS_ODD(n)))
+-#define GSL_SIGN(x)    ((x) >= 0.0 ? 1 : -1)
+-
+-/* Return nonzero if x is a real number, i.e. non NaN or infinite. */
+-#define GSL_IS_REAL(x) (gsl_finite(x))
+-
+-/* Definition of an arbitrary function with parameters */
+-
+-struct gsl_function_struct 
+-{
+-  double (* function) (double x, void * params);
+-  void * params;
+-};
+-
+-typedef struct gsl_function_struct gsl_function ;
+-
+-#define GSL_FN_EVAL(F,x) (*((F)->function))(x,(F)->params)
+-
+-/* Definition of an arbitrary function returning two values, r1, r2 */
+-
+-struct gsl_function_fdf_struct 
+-{
+-  double (* f) (double x, void * params);
+-  double (* df) (double x, void * params);
+-  void (* fdf) (double x, void * params, double * f, double * df);
+-  void * params;
+-};
+-
+-typedef struct gsl_function_fdf_struct gsl_function_fdf ;
+-
+-#define GSL_FN_FDF_EVAL_F(FDF,x) (*((FDF)->f))(x,(FDF)->params)
+-#define GSL_FN_FDF_EVAL_DF(FDF,x) (*((FDF)->df))(x,(FDF)->params)
+-#define GSL_FN_FDF_EVAL_F_DF(FDF,x,y,dy) (*((FDF)->fdf))(x,(FDF)->params,(y),(dy))
+-
+-
+-/* Definition of an arbitrary vector-valued function with parameters */
+-
+-struct gsl_function_vec_struct 
+-{
+-  int (* function) (double x, double y[], void * params);
+-  void * params;
+-};
+-
+-typedef struct gsl_function_vec_struct gsl_function_vec ;
+-
+-#define GSL_FN_VEC_EVAL(F,x,y) (*((F)->function))(x,y,(F)->params)
+-
+-__END_DECLS
+-
+-#endif /* __GSL_MATH_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_complex.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_complex.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_complex.h	(revision 14079)
+@@ -1,17 +0,0 @@
+-#ifndef __GSL_VECTOR_COMPLEX_H__
+-#define __GSL_VECTOR_COMPLEX_H__
+-
+-#define  GSL_VECTOR_REAL(z, i)  ((z)->data[2*(i)*(z)->stride])
+-#define  GSL_VECTOR_IMAG(z, i)  ((z)->data[2*(i)*(z)->stride + 1])
+-
+-#if GSL_RANGE_CHECK
+-#define GSL_VECTOR_COMPLEX(zv, i) (((i) >= (zv)->size ? (gsl_error ("index out of range", __FILE__, __LINE__, GSL_EINVAL), 0):0 , *GSL_COMPLEX_AT((zv),(i))))
+-#else
+-#define GSL_VECTOR_COMPLEX(zv, i) (*GSL_COMPLEX_AT((zv),(i)))
+-#endif
+-
+-#define GSL_COMPLEX_AT(zv,i) ((gsl_complex*)&((zv)->data[2*(i)*(zv)->stride]))
+-#define GSL_COMPLEX_FLOAT_AT(zv,i) ((gsl_complex_float*)&((zv)->data[2*(i)*(zv)->stride]))
+-#define GSL_COMPLEX_LONG_DOUBLE_AT(zv,i) ((gsl_complex_long_double*)&((zv)->data[2*(i)*(zv)->stride]))
+-
+-#endif /* __GSL_VECTOR_COMPLEX_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_zeta.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_zeta.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_zeta.h	(revision 14079)
+@@ -1,112 +0,0 @@
+-/* specfunc/gsl_sf_zeta.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004 Gerard Jungman
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-/* Author:  G. Jungman */
+-
+-#ifndef __GSL_SF_ZETA_H__
+-#define __GSL_SF_ZETA_H__
+-
+-#include <gsl/gsl_sf_result.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-
+-/* Riemann Zeta Function
+- * zeta(n) = Sum[ k^(-n), {k,1,Infinity} ]
+- *
+- * n=integer, n != 1
+- * exceptions: GSL_EDOM, GSL_EOVRFLW
+- */
+-int gsl_sf_zeta_int_e(const int n, gsl_sf_result * result);
+-double gsl_sf_zeta_int(const int n);
+-
+-
+-/* Riemann Zeta Function
+- * zeta(x) = Sum[ k^(-s), {k,1,Infinity} ], s != 1.0
+- *
+- * s != 1.0
+- * exceptions: GSL_EDOM, GSL_EOVRFLW
+- */
+-int gsl_sf_zeta_e(const double s, gsl_sf_result * result);
+-double gsl_sf_zeta(const double s);
+-
+-
+-/* Riemann Zeta Function minus 1
+- *   useful for evaluating the fractional part
+- *   of Riemann zeta for large argument
+- *
+- * s != 1.0
+- * exceptions: GSL_EDOM, GSL_EOVRFLW
+- */
+-int gsl_sf_zetam1_e(const double s, gsl_sf_result * result);
+-double gsl_sf_zetam1(const double s);
+-
+-
+-/* Riemann Zeta Function minus 1 for integer arg
+- *   useful for evaluating the fractional part
+- *   of Riemann zeta for large argument
+- *
+- * s != 1.0
+- * exceptions: GSL_EDOM, GSL_EOVRFLW
+- */
+-int gsl_sf_zetam1_int_e(const int s, gsl_sf_result * result);
+-double gsl_sf_zetam1_int(const int s);
+-
+-
+-/* Hurwitz Zeta Function
+- * zeta(s,q) = Sum[ (k+q)^(-s), {k,0,Infinity} ]
+- *
+- * s > 1.0, q > 0.0
+- * exceptions: GSL_EDOM, GSL_EUNDRFLW, GSL_EOVRFLW
+- */
+-int gsl_sf_hzeta_e(const double s, const double q, gsl_sf_result * result);
+-double gsl_sf_hzeta(const double s, const double q);
+-
+-
+-/* Eta Function
+- * eta(n) = (1-2^(1-n)) zeta(n)
+- *
+- * exceptions: GSL_EUNDRFLW, GSL_EOVRFLW
+- */
+-int gsl_sf_eta_int_e(int n, gsl_sf_result * result);
+-double gsl_sf_eta_int(const int n);
+-
+-
+-/* Eta Function
+- * eta(s) = (1-2^(1-s)) zeta(s)
+- *
+- * exceptions: GSL_EUNDRFLW, GSL_EOVRFLW
+- */
+-int gsl_sf_eta_e(const double s, gsl_sf_result * result);
+-double gsl_sf_eta(const double s);
+-
+-
+-__END_DECLS
+-
+-#endif /* __GSL_SF_ZETA_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_histogram.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_histogram.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_histogram.h	(revision 14079)
+@@ -1,134 +0,0 @@
+-/* histogram/gsl_histogram.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_HISTOGRAM_H__
+-#define __GSL_HISTOGRAM_H__
+-
+-#include <stdlib.h>
+-#include <stdio.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-typedef struct {
+-  size_t n ;
+-  double * range ;
+-  double * bin ;
+-} gsl_histogram ;
+-
+-typedef struct {
+-  size_t n ;
+-  double * range ;
+-  double * sum ;
+-} gsl_histogram_pdf ;
+-
+-gsl_histogram * gsl_histogram_alloc (size_t n);
+-
+-gsl_histogram * gsl_histogram_calloc (size_t n);
+-gsl_histogram * gsl_histogram_calloc_uniform (const size_t n, const double xmin, const double xmax);
+-void gsl_histogram_free (gsl_histogram * h);
+-int gsl_histogram_increment (gsl_histogram * h, double x);
+-int gsl_histogram_accumulate (gsl_histogram * h, double x, double weight);
+-int gsl_histogram_find (const gsl_histogram * h, 
+-                        const double x, size_t * i);
+-
+-double gsl_histogram_get (const gsl_histogram * h, size_t i);
+-int gsl_histogram_get_range (const gsl_histogram * h, size_t i, 
+-                             double * lower, double * upper);
+-                                     
+-double gsl_histogram_max (const gsl_histogram * h);
+-double gsl_histogram_min (const gsl_histogram * h);
+-size_t gsl_histogram_bins (const gsl_histogram * h);
+-
+-void gsl_histogram_reset (gsl_histogram * h);
+-
+-gsl_histogram * gsl_histogram_calloc_range(size_t n, double * range);
+-
+-int 
+-gsl_histogram_set_ranges (gsl_histogram * h, const double range[], size_t size);
+-int 
+-gsl_histogram_set_ranges_uniform (gsl_histogram * h, double xmin, double xmax);
+-
+-
+-
+-int
+-gsl_histogram_memcpy(gsl_histogram * dest, const gsl_histogram * source);
+-
+-gsl_histogram *
+-gsl_histogram_clone(const gsl_histogram * source);
+-
+-double gsl_histogram_max_val (const gsl_histogram * h);
+-
+-size_t gsl_histogram_max_bin (const gsl_histogram * h);
+-
+-double gsl_histogram_min_val (const gsl_histogram * h);
+-
+-size_t gsl_histogram_min_bin (const gsl_histogram * h);
+-
+-int 
+-gsl_histogram_equal_bins_p(const gsl_histogram *h1, const gsl_histogram *h2);
+-
+-int 
+-gsl_histogram_add(gsl_histogram *h1, const gsl_histogram *h2);
+-
+-int 
+-gsl_histogram_sub(gsl_histogram *h1, const gsl_histogram *h2);
+-
+-int 
+-gsl_histogram_mul(gsl_histogram *h1, const gsl_histogram *h2);
+- 
+-int 
+-gsl_histogram_div(gsl_histogram *h1, const gsl_histogram *h2);
+-
+-int 
+-gsl_histogram_scale(gsl_histogram *h, double scale);
+-
+-int 
+-gsl_histogram_shift (gsl_histogram * h, double shift);
+-
+-
+-double gsl_histogram_sigma (const gsl_histogram * h);
+-
+-double gsl_histogram_mean (const gsl_histogram * h);
+-
+-double gsl_histogram_sum (const gsl_histogram * h);
+-
+-int gsl_histogram_fwrite (FILE * stream, const gsl_histogram * h) ;
+-int gsl_histogram_fread (FILE * stream, gsl_histogram * h);
+-int gsl_histogram_fprintf (FILE * stream, const gsl_histogram * h, 
+-                           const char * range_format, const char * bin_format);
+-int gsl_histogram_fscanf (FILE * stream, gsl_histogram * h);
+-
+-gsl_histogram_pdf * gsl_histogram_pdf_alloc (const size_t n);
+-int gsl_histogram_pdf_init (gsl_histogram_pdf * p, const gsl_histogram * h);
+-void gsl_histogram_pdf_free (gsl_histogram_pdf * p);
+-double gsl_histogram_pdf_sample (const gsl_histogram_pdf * p, double r);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_HISTOGRAM_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_wavelet2d.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_wavelet2d.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_wavelet2d.h	(revision 14079)
+@@ -1,107 +0,0 @@
+-/* wavelet/gsl_wavelet.h
+- * 
+- * Copyright (C) 2004 Ivo Alxneit
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_WAVELET2D_H__
+-#define __GSL_WAVELET2D_H__
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_vector_double.h>
+-#include <gsl/gsl_matrix_double.h>
+-#include <gsl/gsl_wavelet.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS          /* empty */
+-# define __END_DECLS            /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-int gsl_wavelet2d_transform (const gsl_wavelet * w, 
+-                             double *data, 
+-                             size_t tda, size_t size1, size_t size2,
+-                             gsl_wavelet_direction dir, 
+-                             gsl_wavelet_workspace * work);
+-
+-int gsl_wavelet2d_transform_forward (const gsl_wavelet * w, 
+-                                     double *data,
+-                                     size_t tda, size_t size1, size_t size2, 
+-                                     gsl_wavelet_workspace * work);
+-
+-int gsl_wavelet2d_transform_inverse (const gsl_wavelet * w, 
+-                                     double *data, 
+-                                     size_t tda, size_t size1, size_t size2, 
+-                                     gsl_wavelet_workspace * work);
+-
+-int gsl_wavelet2d_nstransform (const gsl_wavelet * w, 
+-                               double *data, 
+-                               size_t tda, size_t size1, size_t size2, 
+-                               gsl_wavelet_direction dir,
+-                               gsl_wavelet_workspace * work);
+-
+-int gsl_wavelet2d_nstransform_forward (const gsl_wavelet * w, 
+-                                       double *data, 
+-                                       size_t tda, size_t size1, size_t size2,
+-                                       gsl_wavelet_workspace * work);
+-
+-int gsl_wavelet2d_nstransform_inverse (const gsl_wavelet * w, 
+-                                       double *data, 
+-                                       size_t tda, size_t size1, size_t size2, 
+-                                       gsl_wavelet_workspace * work);
+-
+-int
+-gsl_wavelet2d_transform_matrix (const gsl_wavelet * w, 
+-                                gsl_matrix * a, 
+-                                gsl_wavelet_direction dir, 
+-                                gsl_wavelet_workspace * work);
+-
+-int
+-gsl_wavelet2d_transform_matrix_forward (const gsl_wavelet * w, 
+-                                        gsl_matrix * a, 
+-                                        gsl_wavelet_workspace * work);
+-
+-int
+-gsl_wavelet2d_transform_matrix_inverse (const gsl_wavelet * w, 
+-                                        gsl_matrix * a, 
+-                                        gsl_wavelet_workspace * work);
+-
+-
+-int
+-gsl_wavelet2d_nstransform_matrix (const gsl_wavelet * w, 
+-                                  gsl_matrix * a, 
+-                                  gsl_wavelet_direction dir, 
+-                                  gsl_wavelet_workspace * work);
+-
+-int
+-gsl_wavelet2d_nstransform_matrix_forward (const gsl_wavelet * w, 
+-                                          gsl_matrix * a, 
+-                                          gsl_wavelet_workspace * work);
+-
+-int
+-gsl_wavelet2d_nstransform_matrix_inverse (const gsl_wavelet * w, 
+-                                          gsl_matrix * a, 
+-                                          gsl_wavelet_workspace * work);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_WAVELET2D_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_char.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_char.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_char.h	(revision 14079)
+@@ -1,230 +0,0 @@
+-/* vector/gsl_vector_char.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_VECTOR_CHAR_H__
+-#define __GSL_VECTOR_CHAR_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_types.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_inline.h>
+-#include <gsl/gsl_check_range.h>
+-#include <gsl/gsl_block_char.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-typedef struct 
+-{
+-  size_t size;
+-  size_t stride;
+-  char *data;
+-  gsl_block_char *block;
+-  int owner;
+-} 
+-gsl_vector_char;
+-
+-typedef struct
+-{
+-  gsl_vector_char vector;
+-} _gsl_vector_char_view;
+-
+-typedef _gsl_vector_char_view gsl_vector_char_view;
+-
+-typedef struct
+-{
+-  gsl_vector_char vector;
+-} _gsl_vector_char_const_view;
+-
+-typedef const _gsl_vector_char_const_view gsl_vector_char_const_view;
+-
+-
+-/* Allocation */
+-
+-gsl_vector_char *gsl_vector_char_alloc (const size_t n);
+-gsl_vector_char *gsl_vector_char_calloc (const size_t n);
+-
+-gsl_vector_char *gsl_vector_char_alloc_from_block (gsl_block_char * b,
+-                                                     const size_t offset, 
+-                                                     const size_t n, 
+-                                                     const size_t stride);
+-
+-gsl_vector_char *gsl_vector_char_alloc_from_vector (gsl_vector_char * v,
+-                                                      const size_t offset, 
+-                                                      const size_t n, 
+-                                                      const size_t stride);
+-
+-void gsl_vector_char_free (gsl_vector_char * v);
+-
+-/* Views */
+-
+-_gsl_vector_char_view 
+-gsl_vector_char_view_array (char *v, size_t n);
+-
+-_gsl_vector_char_view 
+-gsl_vector_char_view_array_with_stride (char *base,
+-                                         size_t stride,
+-                                         size_t n);
+-
+-_gsl_vector_char_const_view 
+-gsl_vector_char_const_view_array (const char *v, size_t n);
+-
+-_gsl_vector_char_const_view 
+-gsl_vector_char_const_view_array_with_stride (const char *base,
+-                                               size_t stride,
+-                                               size_t n);
+-
+-_gsl_vector_char_view 
+-gsl_vector_char_subvector (gsl_vector_char *v, 
+-                            size_t i, 
+-                            size_t n);
+-
+-_gsl_vector_char_view 
+-gsl_vector_char_subvector_with_stride (gsl_vector_char *v, 
+-                                        size_t i,
+-                                        size_t stride,
+-                                        size_t n);
+-
+-_gsl_vector_char_const_view 
+-gsl_vector_char_const_subvector (const gsl_vector_char *v, 
+-                                  size_t i, 
+-                                  size_t n);
+-
+-_gsl_vector_char_const_view 
+-gsl_vector_char_const_subvector_with_stride (const gsl_vector_char *v, 
+-                                              size_t i, 
+-                                              size_t stride,
+-                                              size_t n);
+-
+-/* Operations */
+-
+-void gsl_vector_char_set_zero (gsl_vector_char * v);
+-void gsl_vector_char_set_all (gsl_vector_char * v, char x);
+-int gsl_vector_char_set_basis (gsl_vector_char * v, size_t i);
+-
+-int gsl_vector_char_fread (FILE * stream, gsl_vector_char * v);
+-int gsl_vector_char_fwrite (FILE * stream, const gsl_vector_char * v);
+-int gsl_vector_char_fscanf (FILE * stream, gsl_vector_char * v);
+-int gsl_vector_char_fprintf (FILE * stream, const gsl_vector_char * v,
+-                              const char *format);
+-
+-int gsl_vector_char_memcpy (gsl_vector_char * dest, const gsl_vector_char * src);
+-
+-int gsl_vector_char_reverse (gsl_vector_char * v);
+-
+-int gsl_vector_char_swap (gsl_vector_char * v, gsl_vector_char * w);
+-int gsl_vector_char_swap_elements (gsl_vector_char * v, const size_t i, const size_t j);
+-
+-char gsl_vector_char_max (const gsl_vector_char * v);
+-char gsl_vector_char_min (const gsl_vector_char * v);
+-void gsl_vector_char_minmax (const gsl_vector_char * v, char * min_out, char * max_out);
+-
+-size_t gsl_vector_char_max_index (const gsl_vector_char * v);
+-size_t gsl_vector_char_min_index (const gsl_vector_char * v);
+-void gsl_vector_char_minmax_index (const gsl_vector_char * v, size_t * imin, size_t * imax);
+-
+-int gsl_vector_char_add (gsl_vector_char * a, const gsl_vector_char * b);
+-int gsl_vector_char_sub (gsl_vector_char * a, const gsl_vector_char * b);
+-int gsl_vector_char_mul (gsl_vector_char * a, const gsl_vector_char * b);
+-int gsl_vector_char_div (gsl_vector_char * a, const gsl_vector_char * b);
+-int gsl_vector_char_scale (gsl_vector_char * a, const double x);
+-int gsl_vector_char_add_constant (gsl_vector_char * a, const double x);
+-
+-int gsl_vector_char_equal (const gsl_vector_char * u, 
+-                            const gsl_vector_char * v);
+-
+-int gsl_vector_char_isnull (const gsl_vector_char * v);
+-int gsl_vector_char_ispos (const gsl_vector_char * v);
+-int gsl_vector_char_isneg (const gsl_vector_char * v);
+-int gsl_vector_char_isnonneg (const gsl_vector_char * v);
+-
+-INLINE_DECL char gsl_vector_char_get (const gsl_vector_char * v, const size_t i);
+-INLINE_DECL void gsl_vector_char_set (gsl_vector_char * v, const size_t i, char x);
+-INLINE_DECL char * gsl_vector_char_ptr (gsl_vector_char * v, const size_t i);
+-INLINE_DECL const char * gsl_vector_char_const_ptr (const gsl_vector_char * v, const size_t i);
+-
+-#ifdef HAVE_INLINE
+-
+-INLINE_FUN
+-char
+-gsl_vector_char_get (const gsl_vector_char * v, const size_t i)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(i >= v->size))
+-    {
+-      GSL_ERROR_VAL ("index out of range", GSL_EINVAL, 0);
+-    }
+-#endif
+-  return v->data[i * v->stride];
+-}
+-
+-INLINE_FUN
+-void
+-gsl_vector_char_set (gsl_vector_char * v, const size_t i, char x)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(i >= v->size))
+-    {
+-      GSL_ERROR_VOID ("index out of range", GSL_EINVAL);
+-    }
+-#endif
+-  v->data[i * v->stride] = x;
+-}
+-
+-INLINE_FUN
+-char *
+-gsl_vector_char_ptr (gsl_vector_char * v, const size_t i)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(i >= v->size))
+-    {
+-      GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
+-    }
+-#endif
+-  return (char *) (v->data + i * v->stride);
+-}
+-
+-INLINE_FUN
+-const char *
+-gsl_vector_char_const_ptr (const gsl_vector_char * v, const size_t i)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(i >= v->size))
+-    {
+-      GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
+-    }
+-#endif
+-  return (const char *) (v->data + i * v->stride);
+-}
+-#endif /* HAVE_INLINE */
+-
+-__END_DECLS
+-
+-#endif /* __GSL_VECTOR_CHAR_H__ */
+-
+-
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_long.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_long.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_long.h	(revision 14079)
+@@ -1,44 +0,0 @@
+-/* permutation/gsl_permute_long.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_PERMUTE_LONG_H__
+-#define __GSL_PERMUTE_LONG_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_permutation.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-int gsl_permute_long (const size_t * p, long * data, const size_t stride, const size_t n);
+-int gsl_permute_long_inverse (const size_t * p, long * data, const size_t stride, const size_t n);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_PERMUTE_LONG_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_char.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_char.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_char.h	(revision 14079)
+@@ -1,45 +0,0 @@
+-/* permutation/gsl_permute_vector_char.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_PERMUTE_VECTOR_CHAR_H__
+-#define __GSL_PERMUTE_VECTOR_CHAR_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_permutation.h>
+-#include <gsl/gsl_vector_char.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-int gsl_permute_vector_char (const gsl_permutation * p, gsl_vector_char * v);
+-int gsl_permute_vector_char_inverse (const gsl_permutation * p, gsl_vector_char * v);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_PERMUTE_VECTOR_CHAR_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_complex_double.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_complex_double.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_complex_double.h	(revision 14079)
+@@ -1,45 +0,0 @@
+-/* permutation/gsl_permute_complex_double.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_PERMUTE_COMPLEX_DOUBLE_H__
+-#define __GSL_PERMUTE_COMPLEX_DOUBLE_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_complex.h>
+-#include <gsl/gsl_permutation.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-int gsl_permute_complex (const size_t * p, double * data, const size_t stride, const size_t n);
+-int gsl_permute_complex_inverse (const size_t * p, double * data, const size_t stride, const size_t n);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_PERMUTE_COMPLEX_DOUBLE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector.h	(revision 14079)
+@@ -1,25 +0,0 @@
+-#ifndef __GSL_VECTOR_H__
+-#define __GSL_VECTOR_H__
+-
+-#include <gsl/gsl_vector_complex_long_double.h>
+-#include <gsl/gsl_vector_complex_double.h>
+-#include <gsl/gsl_vector_complex_float.h>
+-
+-#include <gsl/gsl_vector_long_double.h>
+-#include <gsl/gsl_vector_double.h>
+-#include <gsl/gsl_vector_float.h>
+-
+-#include <gsl/gsl_vector_ulong.h>
+-#include <gsl/gsl_vector_long.h>
+-
+-#include <gsl/gsl_vector_uint.h>
+-#include <gsl/gsl_vector_int.h>
+-
+-#include <gsl/gsl_vector_ushort.h>
+-#include <gsl/gsl_vector_short.h>
+-
+-#include <gsl/gsl_vector_uchar.h>
+-#include <gsl/gsl_vector_char.h>
+-
+-
+-#endif /* __GSL_VECTOR_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_double.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_double.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_double.h	(revision 14079)
+@@ -1,51 +0,0 @@
+-/* sort/gsl_sort_vector_double.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_SORT_VECTOR_DOUBLE_H__
+-#define __GSL_SORT_VECTOR_DOUBLE_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_permutation.h>
+-#include <gsl/gsl_vector_double.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-void gsl_sort_vector (gsl_vector * v);
+-int gsl_sort_vector_index (gsl_permutation * p, const gsl_vector * v);
+-
+-int gsl_sort_vector_smallest (double * dest, const size_t k, const gsl_vector * v);
+-int gsl_sort_vector_largest (double * dest, const size_t k, const gsl_vector * v);
+-
+-int gsl_sort_vector_smallest_index (size_t * p, const size_t k, const gsl_vector * v);
+-int gsl_sort_vector_largest_index (size_t * p, const size_t k, const gsl_vector * v);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_SORT_VECTOR_DOUBLE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_machine.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_machine.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_machine.h	(revision 14079)
+@@ -1,104 +0,0 @@
+-/* Author:  B. Gough and G. Jungman */
+-#ifndef __GSL_MACHINE_H__
+-#define __GSL_MACHINE_H__
+-
+-#include <limits.h>
+-#include <float.h>
+-
+-/* magic constants; mostly for the benefit of the implementation */
+-
+-/* -*-MACHINE CONSTANTS-*-
+- *
+- * PLATFORM: Whiz-O-Matic 9000
+- * FP_PLATFORM: IEEE-Virtual
+- * HOSTNAME: nnn.lanl.gov
+- * DATE: Fri Nov 20 17:53:26 MST 1998
+- */
+-#define GSL_DBL_EPSILON        2.2204460492503131e-16
+-#define GSL_SQRT_DBL_EPSILON   1.4901161193847656e-08
+-#define GSL_ROOT3_DBL_EPSILON  6.0554544523933429e-06
+-#define GSL_ROOT4_DBL_EPSILON  1.2207031250000000e-04
+-#define GSL_ROOT5_DBL_EPSILON  7.4009597974140505e-04
+-#define GSL_ROOT6_DBL_EPSILON  2.4607833005759251e-03
+-#define GSL_LOG_DBL_EPSILON   (-3.6043653389117154e+01)
+-
+-#define GSL_DBL_MIN        2.2250738585072014e-308
+-#define GSL_SQRT_DBL_MIN   1.4916681462400413e-154
+-#define GSL_ROOT3_DBL_MIN  2.8126442852362996e-103
+-#define GSL_ROOT4_DBL_MIN  1.2213386697554620e-77
+-#define GSL_ROOT5_DBL_MIN  2.9476022969691763e-62
+-#define GSL_ROOT6_DBL_MIN  5.3034368905798218e-52
+-#define GSL_LOG_DBL_MIN   (-7.0839641853226408e+02)
+-
+-#define GSL_DBL_MAX        1.7976931348623157e+308
+-#define GSL_SQRT_DBL_MAX   1.3407807929942596e+154
+-#define GSL_ROOT3_DBL_MAX  5.6438030941222897e+102
+-#define GSL_ROOT4_DBL_MAX  1.1579208923731620e+77
+-#define GSL_ROOT5_DBL_MAX  4.4765466227572707e+61
+-#define GSL_ROOT6_DBL_MAX  2.3756689782295612e+51
+-#define GSL_LOG_DBL_MAX    7.0978271289338397e+02
+-
+-#define GSL_FLT_EPSILON        1.1920928955078125e-07
+-#define GSL_SQRT_FLT_EPSILON   3.4526698300124393e-04
+-#define GSL_ROOT3_FLT_EPSILON  4.9215666011518501e-03
+-#define GSL_ROOT4_FLT_EPSILON  1.8581361171917516e-02
+-#define GSL_ROOT5_FLT_EPSILON  4.1234622211652937e-02
+-#define GSL_ROOT6_FLT_EPSILON  7.0153878019335827e-02
+-#define GSL_LOG_FLT_EPSILON   (-1.5942385152878742e+01)
+-
+-#define GSL_FLT_MIN        1.1754943508222875e-38
+-#define GSL_SQRT_FLT_MIN   1.0842021724855044e-19
+-#define GSL_ROOT3_FLT_MIN  2.2737367544323241e-13
+-#define GSL_ROOT4_FLT_MIN  3.2927225399135965e-10
+-#define GSL_ROOT5_FLT_MIN  2.5944428542140822e-08
+-#define GSL_ROOT6_FLT_MIN  4.7683715820312542e-07
+-#define GSL_LOG_FLT_MIN   (-8.7336544750553102e+01)
+-
+-#define GSL_FLT_MAX        3.4028234663852886e+38
+-#define GSL_SQRT_FLT_MAX   1.8446743523953730e+19
+-#define GSL_ROOT3_FLT_MAX  6.9814635196223242e+12
+-#define GSL_ROOT4_FLT_MAX  4.2949672319999986e+09
+-#define GSL_ROOT5_FLT_MAX  5.0859007855960041e+07
+-#define GSL_ROOT6_FLT_MAX  2.6422459233807749e+06
+-#define GSL_LOG_FLT_MAX    8.8722839052068352e+01
+-
+-#define GSL_SFLT_EPSILON        4.8828125000000000e-04
+-#define GSL_SQRT_SFLT_EPSILON   2.2097086912079612e-02
+-#define GSL_ROOT3_SFLT_EPSILON  7.8745065618429588e-02
+-#define GSL_ROOT4_SFLT_EPSILON  1.4865088937534013e-01
+-#define GSL_ROOT5_SFLT_EPSILON  2.1763764082403100e-01
+-#define GSL_ROOT6_SFLT_EPSILON  2.8061551207734325e-01
+-#define GSL_LOG_SFLT_EPSILON   (-7.6246189861593985e+00)
+-
+-/* !MACHINE CONSTANTS! */
+-
+-
+-/* a little internal backwards compatibility */
+-#define GSL_MACH_EPS  GSL_DBL_EPSILON
+-
+-
+-
+-/* Here are the constants related to or derived from
+- * machine constants. These are not to be confused with
+- * the constants that define various precision levels
+- * for the precision/error system.
+- *
+- * This information is determined at configure time
+- * and is platform dependent. Edit at your own risk.
+- *
+- * PLATFORM: WHIZ-O-MATIC
+- * CONFIG-DATE: Thu Nov 19 19:27:18 MST 1998
+- * CONFIG-HOST: nnn.lanl.gov
+- */
+-
+-/* machine precision constants */
+-/* #define GSL_MACH_EPS         1.0e-15 */
+-#define GSL_SQRT_MACH_EPS       3.2e-08
+-#define GSL_ROOT3_MACH_EPS      1.0e-05
+-#define GSL_ROOT4_MACH_EPS      0.000178
+-#define GSL_ROOT5_MACH_EPS      0.00100
+-#define GSL_ROOT6_MACH_EPS      0.00316
+-#define GSL_LOG_MACH_EPS       (-34.54)
+-
+-
+-#endif /* __GSL_MACHINE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_dft_complex.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_dft_complex.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_dft_complex.h	(revision 14079)
+@@ -1,55 +0,0 @@
+-/* fft/gsl_dft_complex.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_DFT_COMPLEX_H__
+-#define __GSL_DFT_COMPLEX_H__
+-
+-#include <stddef.h>
+-
+-#include <gsl/gsl_math.h>
+-#include <gsl/gsl_complex.h>
+-#include <gsl/gsl_fft.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-int gsl_dft_complex_forward (const double data[], const size_t stride, const size_t n,
+-                             double result[]);
+-
+-int gsl_dft_complex_backward (const double data[], const size_t stride, const size_t n,
+-                              double result[]);
+-
+-int gsl_dft_complex_inverse (const double data[], const size_t stride, const size_t n,
+-                             double result[]);
+-
+-int gsl_dft_complex_transform (const double data[], const size_t stride, const size_t n,
+-                     double result[], const gsl_fft_direction sign);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_DFT_COMPLEX_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_int.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_int.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_int.h	(revision 14079)
+@@ -1,65 +0,0 @@
+-/* block/gsl_block_int.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_BLOCK_INT_H__
+-#define __GSL_BLOCK_INT_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-struct gsl_block_int_struct
+-{
+-  size_t size;
+-  int *data;
+-};
+-
+-typedef struct gsl_block_int_struct gsl_block_int;
+-
+-gsl_block_int *gsl_block_int_alloc (const size_t n);
+-gsl_block_int *gsl_block_int_calloc (const size_t n);
+-void gsl_block_int_free (gsl_block_int * b);
+-
+-int gsl_block_int_fread (FILE * stream, gsl_block_int * b);
+-int gsl_block_int_fwrite (FILE * stream, const gsl_block_int * b);
+-int gsl_block_int_fscanf (FILE * stream, gsl_block_int * b);
+-int gsl_block_int_fprintf (FILE * stream, const gsl_block_int * b, const char *format);
+-
+-int gsl_block_int_raw_fread (FILE * stream, int * b, const size_t n, const size_t stride);
+-int gsl_block_int_raw_fwrite (FILE * stream, const int * b, const size_t n, const size_t stride);
+-int gsl_block_int_raw_fscanf (FILE * stream, int * b, const size_t n, const size_t stride);
+-int gsl_block_int_raw_fprintf (FILE * stream, const int * b, const size_t n, const size_t stride, const char *format);
+-
+-size_t gsl_block_int_size (const gsl_block_int * b);
+-int * gsl_block_int_data (const gsl_block_int * b);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_BLOCK_INT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix.h	(revision 14079)
+@@ -1,25 +0,0 @@
+-#ifndef __GSL_MATRIX_H__
+-#define __GSL_MATRIX_H__
+-
+-#include <gsl/gsl_matrix_complex_long_double.h>
+-#include <gsl/gsl_matrix_complex_double.h>
+-#include <gsl/gsl_matrix_complex_float.h>
+-
+-#include <gsl/gsl_matrix_long_double.h>
+-#include <gsl/gsl_matrix_double.h>
+-#include <gsl/gsl_matrix_float.h>
+-
+-#include <gsl/gsl_matrix_ulong.h>
+-#include <gsl/gsl_matrix_long.h>
+-
+-#include <gsl/gsl_matrix_uint.h>
+-#include <gsl/gsl_matrix_int.h>
+-
+-#include <gsl/gsl_matrix_ushort.h>
+-#include <gsl/gsl_matrix_short.h>
+-
+-#include <gsl/gsl_matrix_uchar.h>
+-#include <gsl/gsl_matrix_char.h>
+-
+-
+-#endif /* __GSL_MATRIX_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_fft_complex.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_fft_complex.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_fft_complex.h	(revision 14079)
+@@ -1,136 +0,0 @@
+-/* fft/gsl_fft_complex.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_FFT_COMPLEX_H__
+-#define __GSL_FFT_COMPLEX_H__
+-
+-#include <stddef.h>
+-
+-#include <gsl/gsl_math.h>
+-#include <gsl/gsl_complex.h>
+-#include <gsl/gsl_fft.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-/*  Power of 2 routines  */
+-
+-
+-int gsl_fft_complex_radix2_forward (gsl_complex_packed_array data,
+-                                    const size_t stride,
+-                                    const size_t n);
+-
+-int gsl_fft_complex_radix2_backward (gsl_complex_packed_array data,
+-                                     const size_t stride,
+-                                     const size_t n);
+-
+-int gsl_fft_complex_radix2_inverse (gsl_complex_packed_array data,
+-                                    const size_t stride,
+-                                    const size_t n);
+-
+-int gsl_fft_complex_radix2_transform (gsl_complex_packed_array data,
+-                                      const size_t stride,
+-                                      const size_t n,
+-                                      const gsl_fft_direction sign);
+-
+-int gsl_fft_complex_radix2_dif_forward (gsl_complex_packed_array data,
+-                                        const size_t stride,
+-                                        const size_t n);
+-
+-int gsl_fft_complex_radix2_dif_backward (gsl_complex_packed_array data,
+-                                         const size_t stride,
+-                                         const size_t n);
+-
+-int gsl_fft_complex_radix2_dif_inverse (gsl_complex_packed_array data,
+-                                        const size_t stride,
+-                                        const size_t n);
+-
+-int gsl_fft_complex_radix2_dif_transform (gsl_complex_packed_array data,
+-                                          const size_t stride,
+-                                          const size_t n,
+-                                          const gsl_fft_direction sign);
+-
+-/*  Mixed Radix general-N routines  */
+-
+-typedef struct
+-  {
+-    size_t n;
+-    size_t nf;
+-    size_t factor[64];
+-    gsl_complex *twiddle[64];
+-    gsl_complex *trig;
+-  }
+-gsl_fft_complex_wavetable;
+-
+-typedef struct
+-{
+-  size_t n;
+-  double *scratch;
+-}
+-gsl_fft_complex_workspace;
+-
+-
+-gsl_fft_complex_wavetable *gsl_fft_complex_wavetable_alloc (size_t n);
+-
+-void gsl_fft_complex_wavetable_free (gsl_fft_complex_wavetable * wavetable);
+-
+-gsl_fft_complex_workspace *gsl_fft_complex_workspace_alloc (size_t n);
+-
+-void gsl_fft_complex_workspace_free (gsl_fft_complex_workspace * workspace);
+-
+-int gsl_fft_complex_memcpy (gsl_fft_complex_wavetable * dest,
+-                            gsl_fft_complex_wavetable * src);
+-
+-
+-int gsl_fft_complex_forward (gsl_complex_packed_array data,
+-                             const size_t stride,
+-                             const size_t n,
+-                             const gsl_fft_complex_wavetable * wavetable,
+-                             gsl_fft_complex_workspace * work);
+-
+-int gsl_fft_complex_backward (gsl_complex_packed_array data,
+-                              const size_t stride,
+-                              const size_t n,
+-                              const gsl_fft_complex_wavetable * wavetable,
+-                              gsl_fft_complex_workspace * work);
+-
+-int gsl_fft_complex_inverse (gsl_complex_packed_array data,
+-                             const size_t stride,
+-                             const size_t n,
+-                             const gsl_fft_complex_wavetable * wavetable,
+-                             gsl_fft_complex_workspace * work);
+-
+-int gsl_fft_complex_transform (gsl_complex_packed_array data,
+-                               const size_t stride, const size_t n,
+-                               const gsl_fft_complex_wavetable * wavetable,
+-                               gsl_fft_complex_workspace * work,
+-                               const gsl_fft_direction sign);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_FFT_COMPLEX_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_float.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_float.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_float.h	(revision 14079)
+@@ -1,44 +0,0 @@
+-/* permutation/gsl_permute_float.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_PERMUTE_FLOAT_H__
+-#define __GSL_PERMUTE_FLOAT_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_permutation.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-int gsl_permute_float (const size_t * p, float * data, const size_t stride, const size_t n);
+-int gsl_permute_float_inverse (const size_t * p, float * data, const size_t stride, const size_t n);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_PERMUTE_FLOAT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_odeiv.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_odeiv.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_odeiv.h	(revision 14079)
+@@ -1,230 +0,0 @@
+-/* ode-initval/gsl_odeiv.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-/* Author:  G. Jungman
+- */
+-#ifndef __GSL_ODEIV_H__
+-#define __GSL_ODEIV_H__
+-
+-#include <stdio.h>
+-#include <stdlib.h>
+-#include <gsl/gsl_types.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-
+-/* Description of a system of ODEs.
+- *
+- * y' = f(t,y) = dydt(t, y)
+- *
+- * The system is specified by giving the right-hand-side
+- * of the equation and possibly a jacobian function.
+- *
+- * Some methods require the jacobian function, which calculates
+- * the matrix dfdy and the vector dfdt. The matrix dfdy conforms
+- * to the GSL standard, being a continuous range of floating point
+- * values, in row-order.
+- *
+- * As with GSL function objects, user-supplied parameter
+- * data is also present. 
+- */
+-
+-typedef struct  
+-{
+-  int (* function) (double t, const double y[], double dydt[], void * params);
+-  int (* jacobian) (double t, const double y[], double * dfdy, double dfdt[], void * params);
+-  size_t dimension;
+-  void * params;
+-}
+-gsl_odeiv_system;
+-
+-#define GSL_ODEIV_FN_EVAL(S,t,y,f)  (*((S)->function))(t,y,f,(S)->params)
+-#define GSL_ODEIV_JA_EVAL(S,t,y,dfdy,dfdt)  (*((S)->jacobian))(t,y,dfdy,dfdt,(S)->params)
+-
+-
+-/* General stepper object.
+- *
+- * Opaque object for stepping an ODE system from t to t+h.
+- * In general the object has some state which facilitates
+- * iterating the stepping operation.
+- */
+-
+-typedef struct 
+-{
+-  const char * name;
+-  int can_use_dydt_in;
+-  int gives_exact_dydt_out;
+-  void * (*alloc) (size_t dim);
+-  int  (*apply)  (void * state, size_t dim, double t, double h, double y[], double yerr[], const double dydt_in[], double dydt_out[], const gsl_odeiv_system * dydt);
+-  int  (*reset) (void * state, size_t dim);
+-  unsigned int  (*order) (void * state);
+-  void (*free)  (void * state);
+-}
+-gsl_odeiv_step_type;
+-
+-typedef struct {
+-  const gsl_odeiv_step_type * type;
+-  size_t dimension;
+-  void * state;
+-}
+-gsl_odeiv_step;
+-
+-
+-/* Available stepper types.
+- *
+- * rk2    : embedded 2nd(3rd) Runge-Kutta
+- * rk4    : 4th order (classical) Runge-Kutta
+- * rkck   : embedded 4th(5th) Runge-Kutta, Cash-Karp
+- * rk8pd  : embedded 8th(9th) Runge-Kutta, Prince-Dormand
+- * rk2imp : implicit 2nd order Runge-Kutta at Gaussian points
+- * rk4imp : implicit 4th order Runge-Kutta at Gaussian points
+- * gear1  : M=1 implicit Gear method
+- * gear2  : M=2 implicit Gear method
+- */
+-
+-GSL_VAR const gsl_odeiv_step_type *gsl_odeiv_step_rk2;
+-GSL_VAR const gsl_odeiv_step_type *gsl_odeiv_step_rk4;
+-GSL_VAR const gsl_odeiv_step_type *gsl_odeiv_step_rkf45;
+-GSL_VAR const gsl_odeiv_step_type *gsl_odeiv_step_rkck;
+-GSL_VAR const gsl_odeiv_step_type *gsl_odeiv_step_rk8pd;
+-GSL_VAR const gsl_odeiv_step_type *gsl_odeiv_step_rk2imp;
+-GSL_VAR const gsl_odeiv_step_type *gsl_odeiv_step_rk2simp;
+-GSL_VAR const gsl_odeiv_step_type *gsl_odeiv_step_rk4imp;
+-GSL_VAR const gsl_odeiv_step_type *gsl_odeiv_step_bsimp;
+-GSL_VAR const gsl_odeiv_step_type *gsl_odeiv_step_gear1;
+-GSL_VAR const gsl_odeiv_step_type *gsl_odeiv_step_gear2;
+-
+-
+-/* Constructor for specialized stepper objects.
+- */
+-gsl_odeiv_step * gsl_odeiv_step_alloc(const gsl_odeiv_step_type * T, size_t dim);
+-int  gsl_odeiv_step_reset(gsl_odeiv_step * s);
+-void gsl_odeiv_step_free(gsl_odeiv_step * s);
+-
+-/* General stepper object methods.
+- */
+-const char * gsl_odeiv_step_name(const gsl_odeiv_step * s);
+-unsigned int gsl_odeiv_step_order(const gsl_odeiv_step * s);
+-
+-int  gsl_odeiv_step_apply(gsl_odeiv_step * s, double t, double h, double y[], double yerr[], const double dydt_in[], double dydt_out[], const gsl_odeiv_system * dydt);
+-
+-/* General step size control object.
+- *
+- * The hadjust() method controls the adjustment of
+- * step size given the result of a step and the error.
+- * Valid hadjust() methods must return one of the codes below.
+- *
+- * The general data can be used by specializations
+- * to store state and control their heuristics.
+- */
+-
+-typedef struct 
+-{
+-  const char * name;
+-  void * (*alloc) (void);
+-  int  (*init) (void * state, double eps_abs, double eps_rel, double a_y, double a_dydt);
+-  int  (*hadjust) (void * state, size_t dim, unsigned int ord, const double y[], const double yerr[], const double yp[], double * h);
+-  void (*free) (void * state);
+-}
+-gsl_odeiv_control_type;
+-
+-typedef struct 
+-{
+-  const gsl_odeiv_control_type * type;
+-  void * state;
+-}
+-gsl_odeiv_control;
+-
+-/* Possible return values for an hadjust() evolution method.
+- */
+-#define GSL_ODEIV_HADJ_INC   1  /* step was increased */
+-#define GSL_ODEIV_HADJ_NIL   0  /* step unchanged     */
+-#define GSL_ODEIV_HADJ_DEC (-1) /* step decreased     */
+-
+-gsl_odeiv_control * gsl_odeiv_control_alloc(const gsl_odeiv_control_type * T);
+-int gsl_odeiv_control_init(gsl_odeiv_control * c, double eps_abs, double eps_rel, double a_y, double a_dydt);
+-void gsl_odeiv_control_free(gsl_odeiv_control * c);
+-int gsl_odeiv_control_hadjust (gsl_odeiv_control * c, gsl_odeiv_step * s, const double y[], const double yerr[], const double dydt[], double * h);
+-const char * gsl_odeiv_control_name(const gsl_odeiv_control * c);
+-
+-/* Available control object constructors.
+- *
+- * The standard control object is a four parameter heuristic
+- * defined as follows:
+- *    D0 = eps_abs + eps_rel * (a_y |y| + a_dydt h |y'|)
+- *    D1 = |yerr|
+- *    q  = consistency order of method (q=4 for 4(5) embedded RK)
+- *    S  = safety factor (0.9 say)
+- *
+- *                      /  (D0/D1)^(1/(q+1))  D0 >= D1
+- *    h_NEW = S h_OLD * |
+- *                      \  (D0/D1)^(1/q)      D0 < D1
+- *
+- * This encompasses all the standard error scaling methods.
+- *
+- * The y method is the standard method with a_y=1, a_dydt=0.
+- * The yp method is the standard method with a_y=0, a_dydt=1.
+- */
+-
+-gsl_odeiv_control * gsl_odeiv_control_standard_new(double eps_abs, double eps_rel, double a_y, double a_dydt);
+-gsl_odeiv_control * gsl_odeiv_control_y_new(double eps_abs, double eps_rel);
+-gsl_odeiv_control * gsl_odeiv_control_yp_new(double eps_abs, double eps_rel);
+-
+-/* This controller computes errors using different absolute errors for
+- * each component
+- *
+- *    D0 = eps_abs * scale_abs[i] + eps_rel * (a_y |y| + a_dydt h |y'|)
+- */
+-gsl_odeiv_control * gsl_odeiv_control_scaled_new(double eps_abs, double eps_rel, double a_y, double a_dydt, const double scale_abs[], size_t dim);
+-
+-/* General evolution object.
+- */
+-typedef struct {
+-  size_t dimension;
+-  double * y0;
+-  double * yerr;
+-  double * dydt_in;
+-  double * dydt_out;
+-  double last_step;
+-  unsigned long int count;
+-  unsigned long int failed_steps;
+-}
+-gsl_odeiv_evolve;
+-
+-/* Evolution object methods.
+- */
+-gsl_odeiv_evolve * gsl_odeiv_evolve_alloc(size_t dim);
+-int gsl_odeiv_evolve_apply(gsl_odeiv_evolve * e, gsl_odeiv_control * con, gsl_odeiv_step * step, const gsl_odeiv_system * dydt, double * t, double t1, double * h, double y[]);
+-int gsl_odeiv_evolve_reset(gsl_odeiv_evolve * e);
+-void gsl_odeiv_evolve_free(gsl_odeiv_evolve * e);
+-
+-
+-__END_DECLS
+-
+-#endif /* __GSL_ODEIV_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_result.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_result.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_result.h	(revision 14079)
+@@ -1,59 +0,0 @@
+-/* specfunc/gsl_sf_result.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-/* Author:  G. Jungman */
+-
+-#ifndef __GSL_SF_RESULT_H__
+-#define __GSL_SF_RESULT_H__
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-struct gsl_sf_result_struct {
+-  double val;
+-  double err;
+-};
+-typedef struct gsl_sf_result_struct gsl_sf_result;
+-
+-#define GSL_SF_RESULT_SET(r,v,e) do { (r)->val=(v); (r)->err=(e); } while(0)
+-
+-
+-struct gsl_sf_result_e10_struct {
+-  double val;
+-  double err;
+-  int    e10;
+-};
+-typedef struct gsl_sf_result_e10_struct gsl_sf_result_e10;
+-
+-
+-int gsl_sf_result_smash_e(const gsl_sf_result_e10 * re, gsl_sf_result * r);
+-
+-
+-__END_DECLS
+-
+-#endif /* __GSL_SF_RESULT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_short.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_short.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_short.h	(revision 14079)
+@@ -1,50 +0,0 @@
+-/* sort/gsl_sort_short.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_SORT_SHORT_H__
+-#define __GSL_SORT_SHORT_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_permutation.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-void gsl_sort_short (short * data, const size_t stride, const size_t n);
+-void gsl_sort_short_index (size_t * p, const short * data, const size_t stride, const size_t n);
+-
+-int gsl_sort_short_smallest (short * dest, const size_t k, const short * src, const size_t stride, const size_t n);
+-int gsl_sort_short_smallest_index (size_t * p, const size_t k, const short * src, const size_t stride, const size_t n);
+-
+-int gsl_sort_short_largest (short * dest, const size_t k, const short * src, const size_t stride, const size_t n);
+-int gsl_sort_short_largest_index (size_t * p, const size_t k, const short * src, const size_t stride, const size_t n);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_SORT_SHORT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_fft_real_float.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_fft_real_float.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_fft_real_float.h	(revision 14079)
+@@ -1,79 +0,0 @@
+-/* fft/gsl_fft_real_float.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_FFT_REAL_FLOAT_H__
+-#define __GSL_FFT_REAL_FLOAT_H__
+-
+-#include <stddef.h>
+-
+-#include <gsl/gsl_math.h>
+-#include <gsl/gsl_complex.h>
+-#include <gsl/gsl_fft.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-int gsl_fft_real_float_radix2_transform (float data[], const size_t stride, const size_t n) ;
+-
+-typedef struct
+-  {
+-    size_t n;
+-    size_t nf;
+-    size_t factor[64];
+-    gsl_complex_float *twiddle[64];
+-    gsl_complex_float *trig;
+-  }
+-gsl_fft_real_wavetable_float;
+-
+-typedef struct
+-  {
+-    size_t n;
+-    float *scratch;
+-  }
+-gsl_fft_real_workspace_float;
+-
+-gsl_fft_real_wavetable_float * gsl_fft_real_wavetable_float_alloc (size_t n);
+-
+-void  gsl_fft_real_wavetable_float_free (gsl_fft_real_wavetable_float * wavetable);
+-
+-gsl_fft_real_workspace_float * gsl_fft_real_workspace_float_alloc (size_t n);
+-
+-void  gsl_fft_real_workspace_float_free (gsl_fft_real_workspace_float * workspace);
+-
+-int gsl_fft_real_float_transform (float data[], const size_t stride, const size_t n,
+-                                  const gsl_fft_real_wavetable_float * wavetable,
+-                                  gsl_fft_real_workspace_float * work);
+-
+-
+-int gsl_fft_real_float_unpack (const float real_float_coefficient[],
+-                               float complex_coefficient[],
+-                               const size_t stride, const size_t n);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_FFT_REAL_FLOAT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_uint.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_uint.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_uint.h	(revision 14079)
+@@ -1,51 +0,0 @@
+-/* sort/gsl_sort_vector_uint.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_SORT_VECTOR_UINT_H__
+-#define __GSL_SORT_VECTOR_UINT_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_permutation.h>
+-#include <gsl/gsl_vector_uint.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-void gsl_sort_vector_uint (gsl_vector_uint * v);
+-int gsl_sort_vector_uint_index (gsl_permutation * p, const gsl_vector_uint * v);
+-
+-int gsl_sort_vector_uint_smallest (unsigned int * dest, const size_t k, const gsl_vector_uint * v);
+-int gsl_sort_vector_uint_largest (unsigned int * dest, const size_t k, const gsl_vector_uint * v);
+-
+-int gsl_sort_vector_uint_smallest_index (size_t * p, const size_t k, const gsl_vector_uint * v);
+-int gsl_sort_vector_uint_largest_index (size_t * p, const size_t k, const gsl_vector_uint * v);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_SORT_VECTOR_UINT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_multifit_nlin.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_multifit_nlin.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_multifit_nlin.h	(revision 14079)
+@@ -1,172 +0,0 @@
+-/* multifit_nlin/gsl_multifit_nlin.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_MULTIFIT_NLIN_H__
+-#define __GSL_MULTIFIT_NLIN_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_types.h>
+-#include <gsl/gsl_math.h>
+-#include <gsl/gsl_vector.h>
+-#include <gsl/gsl_matrix.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-int gsl_multifit_gradient (const gsl_matrix * J, const gsl_vector * f,
+-                           gsl_vector * g);
+-
+-int gsl_multifit_covar (const gsl_matrix * J, double epsrel, gsl_matrix * covar);
+-
+-
+-/* Definition of vector-valued functions with parameters based on gsl_vector */
+-
+-struct gsl_multifit_function_struct
+-{
+-  int (* f) (const gsl_vector * x, void * params, gsl_vector * f);
+-  size_t n;   /* number of functions */
+-  size_t p;   /* number of independent variables */
+-  void * params;
+-};
+-
+-typedef struct gsl_multifit_function_struct gsl_multifit_function ;
+-
+-#define GSL_MULTIFIT_FN_EVAL(F,x,y) (*((F)->f))(x,(F)->params,(y))
+-
+-typedef struct
+-  {
+-    const char *name;
+-    size_t size;
+-    int (*alloc) (void *state, size_t n, size_t p);
+-    int (*set) (void *state, gsl_multifit_function * function, gsl_vector * x, gsl_vector * f, gsl_vector * dx);
+-    int (*iterate) (void *state, gsl_multifit_function * function, gsl_vector * x, gsl_vector * f, gsl_vector * dx);
+-    void (*free) (void *state);
+-  }
+-gsl_multifit_fsolver_type;
+-
+-typedef struct
+-  {
+-    const gsl_multifit_fsolver_type * type;
+-    gsl_multifit_function * function ;
+-    gsl_vector * x ;
+-    gsl_vector * f ;
+-    gsl_vector * dx ;
+-    void *state;
+-  }
+-gsl_multifit_fsolver;
+-
+-gsl_multifit_fsolver *
+-gsl_multifit_fsolver_alloc (const gsl_multifit_fsolver_type * T, 
+-                            size_t n, size_t p);
+-
+-void gsl_multifit_fsolver_free (gsl_multifit_fsolver * s);
+-
+-int gsl_multifit_fsolver_set (gsl_multifit_fsolver * s, 
+-                                   gsl_multifit_function * f, 
+-                                   const gsl_vector * x);
+-
+-int gsl_multifit_fsolver_iterate (gsl_multifit_fsolver * s);
+-
+-const char * gsl_multifit_fsolver_name (const gsl_multifit_fsolver * s);
+-gsl_vector * gsl_multifit_fsolver_position (const gsl_multifit_fsolver * s);
+-
+-/* Definition of vector-valued functions and gradient with parameters
+-   based on gsl_vector */
+-
+-struct gsl_multifit_function_fdf_struct
+-{
+-  int (* f) (const gsl_vector * x, void * params, gsl_vector * f);
+-  int (* df) (const gsl_vector * x, void * params, gsl_matrix * df);
+-  int (* fdf) (const gsl_vector * x, void * params, gsl_vector * f, gsl_matrix *df);
+-  size_t n;   /* number of functions */
+-  size_t p;   /* number of independent variables */
+-  void * params;
+-};
+-
+-typedef struct gsl_multifit_function_fdf_struct gsl_multifit_function_fdf ;
+-
+-#define GSL_MULTIFIT_FN_EVAL_F(F,x,y) ((*((F)->f))(x,(F)->params,(y)))
+-#define GSL_MULTIFIT_FN_EVAL_DF(F,x,dy) ((*((F)->df))(x,(F)->params,(dy)))
+-#define GSL_MULTIFIT_FN_EVAL_F_DF(F,x,y,dy) ((*((F)->fdf))(x,(F)->params,(y),(dy)))
+-
+-typedef struct
+-  {
+-    const char *name;
+-    size_t size;
+-    int (*alloc) (void *state, size_t n, size_t p);
+-    int (*set) (void *state, gsl_multifit_function_fdf * fdf, gsl_vector * x, gsl_vector * f, gsl_matrix * J, gsl_vector * dx);
+-    int (*iterate) (void *state, gsl_multifit_function_fdf * fdf, gsl_vector * x, gsl_vector * f, gsl_matrix * J, gsl_vector * dx);
+-    void (*free) (void *state);
+-  }
+-gsl_multifit_fdfsolver_type;
+-
+-typedef struct
+-  {
+-    const gsl_multifit_fdfsolver_type * type;
+-    gsl_multifit_function_fdf * fdf ;
+-    gsl_vector * x;
+-    gsl_vector * f;
+-    gsl_matrix * J;
+-    gsl_vector * dx;
+-    void *state;
+-  }
+-gsl_multifit_fdfsolver;
+-
+-
+-gsl_multifit_fdfsolver *
+-gsl_multifit_fdfsolver_alloc (const gsl_multifit_fdfsolver_type * T, 
+-                              size_t n, size_t p);
+-
+-int
+-gsl_multifit_fdfsolver_set (gsl_multifit_fdfsolver * s, 
+-                                 gsl_multifit_function_fdf * fdf,
+-                                 const gsl_vector * x);
+-
+-int
+-gsl_multifit_fdfsolver_iterate (gsl_multifit_fdfsolver * s);
+-
+-void
+-gsl_multifit_fdfsolver_free (gsl_multifit_fdfsolver * s);
+-
+-const char * gsl_multifit_fdfsolver_name (const gsl_multifit_fdfsolver * s);
+-gsl_vector * gsl_multifit_fdfsolver_position (const gsl_multifit_fdfsolver * s);
+-
+-int gsl_multifit_test_delta (const gsl_vector * dx, const gsl_vector * x, 
+-                             double epsabs, double epsrel);
+-
+-int gsl_multifit_test_gradient (const gsl_vector * g, double epsabs);
+-
+-/* extern const gsl_multifit_fsolver_type * gsl_multifit_fsolver_gradient; */
+-
+-GSL_VAR const gsl_multifit_fdfsolver_type * gsl_multifit_fdfsolver_lmder;
+-GSL_VAR const gsl_multifit_fdfsolver_type * gsl_multifit_fdfsolver_lmsder;
+-
+-
+-__END_DECLS
+-
+-#endif /* __GSL_MULTIFIT_NLIN_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_ulong.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_ulong.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_ulong.h	(revision 14079)
+@@ -1,51 +0,0 @@
+-/* sort/gsl_sort_vector_ulong.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_SORT_VECTOR_ULONG_H__
+-#define __GSL_SORT_VECTOR_ULONG_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_permutation.h>
+-#include <gsl/gsl_vector_ulong.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-void gsl_sort_vector_ulong (gsl_vector_ulong * v);
+-int gsl_sort_vector_ulong_index (gsl_permutation * p, const gsl_vector_ulong * v);
+-
+-int gsl_sort_vector_ulong_smallest (unsigned long * dest, const size_t k, const gsl_vector_ulong * v);
+-int gsl_sort_vector_ulong_largest (unsigned long * dest, const size_t k, const gsl_vector_ulong * v);
+-
+-int gsl_sort_vector_ulong_smallest_index (size_t * p, const size_t k, const gsl_vector_ulong * v);
+-int gsl_sort_vector_ulong_largest_index (size_t * p, const size_t k, const gsl_vector_ulong * v);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_SORT_VECTOR_ULONG_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_test.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_test.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_test.h	(revision 14079)
+@@ -1,66 +0,0 @@
+-/* err/gsl_test.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_TEST_H__
+-#define __GSL_TEST_H__
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-void
+-  gsl_test (int status, const char *test_description, ...);
+-
+-void
+-gsl_test_rel (double result, double expected, double relative_error,
+-              const char *test_description, ...) ;
+-
+-void
+-gsl_test_abs (double result, double expected, double absolute_error,
+-              const char *test_description, ...) ;
+-
+-void
+-gsl_test_factor (double result, double expected, double factor,
+-                 const char *test_description, ...) ;
+-
+-void
+-gsl_test_int (int result, int expected, const char *test_description, ...) ;
+-
+-void
+-gsl_test_str (const char * result, const char * expected, 
+-              const char *test_description, ...) ;
+-
+-void
+-  gsl_test_verbose (int verbose) ;
+-
+-int
+-  gsl_test_summary (void) ;
+-
+-
+-__END_DECLS
+-
+-#endif /* __GSL_TEST_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_fft.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_fft.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_fft.h	(revision 14079)
+@@ -1,60 +0,0 @@
+-/* fft/gsl_fft.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_FFT_H__
+-#define __GSL_FFT_H__
+-
+-#include <gsl/gsl_complex.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-#ifndef GSL_DISABLE_DEPRECATED
+-typedef enum
+-  {
+-    forward = -1, backward = +1,
+-    gsl_fft_forward = -1, gsl_fft_backward = +1      
+-  }
+-gsl_fft_direction;
+-#else
+-typedef enum
+-  {
+-    gsl_fft_forward = -1, gsl_fft_backward = +1   
+-  }
+-gsl_fft_direction;
+-#endif
+-
+-/* this gives the sign in the formula
+-
+-   h(f) = \sum x(t) exp(+/- 2 pi i f t) 
+-       
+-   where - is the forward transform direction and + the inverse direction */
+-
+-__END_DECLS
+-
+-#endif /* __GSL_FFT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_histogram2d.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_histogram2d.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_histogram2d.h	(revision 14079)
+@@ -1,172 +0,0 @@
+-/* histogram/gsl_histogram2d.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_HISTOGRAM2D_H__
+-#define __GSL_HISTOGRAM2D_H__
+-
+-#include <stdlib.h>
+-#include <stdio.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-typedef struct {
+-  size_t nx, ny ;
+-  double * xrange ;
+-  double * yrange ;
+-  double * bin ;
+-} gsl_histogram2d ;
+-
+-typedef struct {
+-  size_t nx, ny ;
+-  double * xrange ;
+-  double * yrange ;
+-  double * sum ;
+-} gsl_histogram2d_pdf ;
+-
+-gsl_histogram2d * gsl_histogram2d_alloc (const size_t nx, const size_t ny);
+-gsl_histogram2d * gsl_histogram2d_calloc (const size_t nx, const size_t ny);
+-gsl_histogram2d * gsl_histogram2d_calloc_uniform (const size_t nx, const size_t ny,
+-                                             const double xmin, const double xmax,
+-                                             const double ymin, const double ymax);
+-
+-void gsl_histogram2d_free (gsl_histogram2d * h);
+-
+-int gsl_histogram2d_increment (gsl_histogram2d * h, double x, double y);
+-int gsl_histogram2d_accumulate (gsl_histogram2d * h, 
+-                                double x, double y, double weight);
+-int gsl_histogram2d_find (const gsl_histogram2d * h, 
+-                          const double x, const double y, size_t * i, size_t * j);
+-
+-double gsl_histogram2d_get (const gsl_histogram2d * h, const size_t i, const size_t j);
+-int gsl_histogram2d_get_xrange (const gsl_histogram2d * h, const size_t i,
+-                                double * xlower, double * xupper);
+-int gsl_histogram2d_get_yrange (const gsl_histogram2d * h, const size_t j,
+-                                double * ylower, double * yupper);
+-
+-                                     
+-double gsl_histogram2d_xmax (const gsl_histogram2d * h);
+-double gsl_histogram2d_xmin (const gsl_histogram2d * h);
+-size_t gsl_histogram2d_nx (const gsl_histogram2d * h);
+-
+-double gsl_histogram2d_ymax (const gsl_histogram2d * h);
+-double gsl_histogram2d_ymin (const gsl_histogram2d * h);
+-size_t gsl_histogram2d_ny (const gsl_histogram2d * h);
+-
+-void gsl_histogram2d_reset (gsl_histogram2d * h);
+-
+-gsl_histogram2d * 
+-gsl_histogram2d_calloc_range(size_t nx, size_t ny, 
+-                             double *xrange, double *yrange);
+-
+-int 
+-gsl_histogram2d_set_ranges_uniform (gsl_histogram2d * h, 
+-                                    double xmin, double xmax,
+-                                    double ymin, double ymax);
+-
+-int 
+-gsl_histogram2d_set_ranges (gsl_histogram2d * h, 
+-                            const double xrange[], size_t xsize,
+-                            const double yrange[], size_t ysize);
+-
+-int 
+-gsl_histogram2d_memcpy(gsl_histogram2d *dest, const gsl_histogram2d *source);
+-
+-gsl_histogram2d *
+-gsl_histogram2d_clone(const gsl_histogram2d * source);
+-
+-double
+-gsl_histogram2d_max_val(const gsl_histogram2d *h);
+-
+-void
+-gsl_histogram2d_max_bin (const gsl_histogram2d *h, size_t *i, size_t *j);
+-
+-double
+-gsl_histogram2d_min_val(const gsl_histogram2d *h);
+-
+-void
+-gsl_histogram2d_min_bin (const gsl_histogram2d *h, size_t *i, size_t *j);
+-
+-double
+-gsl_histogram2d_xmean (const gsl_histogram2d * h);
+-
+-double
+-gsl_histogram2d_ymean (const gsl_histogram2d * h);
+-
+-double
+-gsl_histogram2d_xsigma (const gsl_histogram2d * h);
+-
+-double
+-gsl_histogram2d_ysigma (const gsl_histogram2d * h);
+-
+-double
+-gsl_histogram2d_cov (const gsl_histogram2d * h);
+-
+-double
+-gsl_histogram2d_sum (const gsl_histogram2d *h);
+-
+-int 
+-gsl_histogram2d_equal_bins_p(const gsl_histogram2d *h1,
+-                             const gsl_histogram2d *h2) ;
+-
+-int
+-gsl_histogram2d_add(gsl_histogram2d *h1, const gsl_histogram2d *h2);
+-
+-int
+-gsl_histogram2d_sub(gsl_histogram2d *h1, const gsl_histogram2d *h2);
+-
+-int
+-gsl_histogram2d_mul(gsl_histogram2d *h1, const gsl_histogram2d *h2);
+-
+-int
+-gsl_histogram2d_div(gsl_histogram2d *h1, const gsl_histogram2d *h2);
+-
+-int
+-gsl_histogram2d_scale(gsl_histogram2d *h, double scale);
+-
+-int
+-gsl_histogram2d_shift(gsl_histogram2d *h, double shift);
+-
+-int gsl_histogram2d_fwrite (FILE * stream, const gsl_histogram2d * h) ;
+-int gsl_histogram2d_fread (FILE * stream, gsl_histogram2d * h);
+-int gsl_histogram2d_fprintf (FILE * stream, const gsl_histogram2d * h, 
+-                             const char * range_format,
+-                             const char * bin_format);
+-int gsl_histogram2d_fscanf (FILE * stream, gsl_histogram2d * h);
+-
+-gsl_histogram2d_pdf * gsl_histogram2d_pdf_alloc (const size_t nx, const size_t ny);
+-int gsl_histogram2d_pdf_init (gsl_histogram2d_pdf * p, const gsl_histogram2d * h);
+-void gsl_histogram2d_pdf_free (gsl_histogram2d_pdf * p);
+-int gsl_histogram2d_pdf_sample (const gsl_histogram2d_pdf * p, 
+-                                   double r1, double r2, 
+-                                   double * x, double * y);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_HISTOGRAM2D_H__ */
+-
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_uchar.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_uchar.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_uchar.h	(revision 14079)
+@@ -1,230 +0,0 @@
+-/* vector/gsl_vector_uchar.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_VECTOR_UCHAR_H__
+-#define __GSL_VECTOR_UCHAR_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_types.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_inline.h>
+-#include <gsl/gsl_check_range.h>
+-#include <gsl/gsl_block_uchar.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-typedef struct 
+-{
+-  size_t size;
+-  size_t stride;
+-  unsigned char *data;
+-  gsl_block_uchar *block;
+-  int owner;
+-} 
+-gsl_vector_uchar;
+-
+-typedef struct
+-{
+-  gsl_vector_uchar vector;
+-} _gsl_vector_uchar_view;
+-
+-typedef _gsl_vector_uchar_view gsl_vector_uchar_view;
+-
+-typedef struct
+-{
+-  gsl_vector_uchar vector;
+-} _gsl_vector_uchar_const_view;
+-
+-typedef const _gsl_vector_uchar_const_view gsl_vector_uchar_const_view;
+-
+-
+-/* Allocation */
+-
+-gsl_vector_uchar *gsl_vector_uchar_alloc (const size_t n);
+-gsl_vector_uchar *gsl_vector_uchar_calloc (const size_t n);
+-
+-gsl_vector_uchar *gsl_vector_uchar_alloc_from_block (gsl_block_uchar * b,
+-                                                     const size_t offset, 
+-                                                     const size_t n, 
+-                                                     const size_t stride);
+-
+-gsl_vector_uchar *gsl_vector_uchar_alloc_from_vector (gsl_vector_uchar * v,
+-                                                      const size_t offset, 
+-                                                      const size_t n, 
+-                                                      const size_t stride);
+-
+-void gsl_vector_uchar_free (gsl_vector_uchar * v);
+-
+-/* Views */
+-
+-_gsl_vector_uchar_view 
+-gsl_vector_uchar_view_array (unsigned char *v, size_t n);
+-
+-_gsl_vector_uchar_view 
+-gsl_vector_uchar_view_array_with_stride (unsigned char *base,
+-                                         size_t stride,
+-                                         size_t n);
+-
+-_gsl_vector_uchar_const_view 
+-gsl_vector_uchar_const_view_array (const unsigned char *v, size_t n);
+-
+-_gsl_vector_uchar_const_view 
+-gsl_vector_uchar_const_view_array_with_stride (const unsigned char *base,
+-                                               size_t stride,
+-                                               size_t n);
+-
+-_gsl_vector_uchar_view 
+-gsl_vector_uchar_subvector (gsl_vector_uchar *v, 
+-                            size_t i, 
+-                            size_t n);
+-
+-_gsl_vector_uchar_view 
+-gsl_vector_uchar_subvector_with_stride (gsl_vector_uchar *v, 
+-                                        size_t i,
+-                                        size_t stride,
+-                                        size_t n);
+-
+-_gsl_vector_uchar_const_view 
+-gsl_vector_uchar_const_subvector (const gsl_vector_uchar *v, 
+-                                  size_t i, 
+-                                  size_t n);
+-
+-_gsl_vector_uchar_const_view 
+-gsl_vector_uchar_const_subvector_with_stride (const gsl_vector_uchar *v, 
+-                                              size_t i, 
+-                                              size_t stride,
+-                                              size_t n);
+-
+-/* Operations */
+-
+-void gsl_vector_uchar_set_zero (gsl_vector_uchar * v);
+-void gsl_vector_uchar_set_all (gsl_vector_uchar * v, unsigned char x);
+-int gsl_vector_uchar_set_basis (gsl_vector_uchar * v, size_t i);
+-
+-int gsl_vector_uchar_fread (FILE * stream, gsl_vector_uchar * v);
+-int gsl_vector_uchar_fwrite (FILE * stream, const gsl_vector_uchar * v);
+-int gsl_vector_uchar_fscanf (FILE * stream, gsl_vector_uchar * v);
+-int gsl_vector_uchar_fprintf (FILE * stream, const gsl_vector_uchar * v,
+-                              const char *format);
+-
+-int gsl_vector_uchar_memcpy (gsl_vector_uchar * dest, const gsl_vector_uchar * src);
+-
+-int gsl_vector_uchar_reverse (gsl_vector_uchar * v);
+-
+-int gsl_vector_uchar_swap (gsl_vector_uchar * v, gsl_vector_uchar * w);
+-int gsl_vector_uchar_swap_elements (gsl_vector_uchar * v, const size_t i, const size_t j);
+-
+-unsigned char gsl_vector_uchar_max (const gsl_vector_uchar * v);
+-unsigned char gsl_vector_uchar_min (const gsl_vector_uchar * v);
+-void gsl_vector_uchar_minmax (const gsl_vector_uchar * v, unsigned char * min_out, unsigned char * max_out);
+-
+-size_t gsl_vector_uchar_max_index (const gsl_vector_uchar * v);
+-size_t gsl_vector_uchar_min_index (const gsl_vector_uchar * v);
+-void gsl_vector_uchar_minmax_index (const gsl_vector_uchar * v, size_t * imin, size_t * imax);
+-
+-int gsl_vector_uchar_add (gsl_vector_uchar * a, const gsl_vector_uchar * b);
+-int gsl_vector_uchar_sub (gsl_vector_uchar * a, const gsl_vector_uchar * b);
+-int gsl_vector_uchar_mul (gsl_vector_uchar * a, const gsl_vector_uchar * b);
+-int gsl_vector_uchar_div (gsl_vector_uchar * a, const gsl_vector_uchar * b);
+-int gsl_vector_uchar_scale (gsl_vector_uchar * a, const double x);
+-int gsl_vector_uchar_add_constant (gsl_vector_uchar * a, const double x);
+-
+-int gsl_vector_uchar_equal (const gsl_vector_uchar * u, 
+-                            const gsl_vector_uchar * v);
+-
+-int gsl_vector_uchar_isnull (const gsl_vector_uchar * v);
+-int gsl_vector_uchar_ispos (const gsl_vector_uchar * v);
+-int gsl_vector_uchar_isneg (const gsl_vector_uchar * v);
+-int gsl_vector_uchar_isnonneg (const gsl_vector_uchar * v);
+-
+-INLINE_DECL unsigned char gsl_vector_uchar_get (const gsl_vector_uchar * v, const size_t i);
+-INLINE_DECL void gsl_vector_uchar_set (gsl_vector_uchar * v, const size_t i, unsigned char x);
+-INLINE_DECL unsigned char * gsl_vector_uchar_ptr (gsl_vector_uchar * v, const size_t i);
+-INLINE_DECL const unsigned char * gsl_vector_uchar_const_ptr (const gsl_vector_uchar * v, const size_t i);
+-
+-#ifdef HAVE_INLINE
+-
+-INLINE_FUN
+-unsigned char
+-gsl_vector_uchar_get (const gsl_vector_uchar * v, const size_t i)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(i >= v->size))
+-    {
+-      GSL_ERROR_VAL ("index out of range", GSL_EINVAL, 0);
+-    }
+-#endif
+-  return v->data[i * v->stride];
+-}
+-
+-INLINE_FUN
+-void
+-gsl_vector_uchar_set (gsl_vector_uchar * v, const size_t i, unsigned char x)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(i >= v->size))
+-    {
+-      GSL_ERROR_VOID ("index out of range", GSL_EINVAL);
+-    }
+-#endif
+-  v->data[i * v->stride] = x;
+-}
+-
+-INLINE_FUN
+-unsigned char *
+-gsl_vector_uchar_ptr (gsl_vector_uchar * v, const size_t i)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(i >= v->size))
+-    {
+-      GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
+-    }
+-#endif
+-  return (unsigned char *) (v->data + i * v->stride);
+-}
+-
+-INLINE_FUN
+-const unsigned char *
+-gsl_vector_uchar_const_ptr (const gsl_vector_uchar * v, const size_t i)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(i >= v->size))
+-    {
+-      GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
+-    }
+-#endif
+-  return (const unsigned char *) (v->data + i * v->stride);
+-}
+-#endif /* HAVE_INLINE */
+-
+-__END_DECLS
+-
+-#endif /* __GSL_VECTOR_UCHAR_H__ */
+-
+-
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_mathieu.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_mathieu.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_mathieu.h	(revision 14079)
+@@ -1,107 +0,0 @@
+-/* specfunc/gsl_sf_mathieu.h
+- * 
+- * Copyright (C) 2002 Lowell Johnson
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+- */
+-
+-/* Author:  L. Johnson */
+-
+-#ifndef __GSL_SF_MATHIEU_H__
+-#define __GSL_SF_MATHIEU_H__
+-
+-#include <gsl/gsl_sf_result.h>
+-#include <gsl/gsl_eigen.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-#define GSL_SF_MATHIEU_COEFF 100
+-
+-typedef struct 
+-{
+-  size_t size;
+-  size_t even_order;
+-  size_t odd_order;
+-  int extra_values;
+-  double qa;   /* allow for caching of results: not implemented yet */
+-  double qb;   /* allow for caching of results: not implemented yet */
+-  double *aa;
+-  double *bb;
+-  double *dd;
+-  double *ee;
+-  double *tt;
+-  double *e2;
+-  double *zz;
+-  gsl_vector *eval;
+-  gsl_matrix *evec;
+-  gsl_eigen_symmv_workspace *wmat;
+-} gsl_sf_mathieu_workspace;
+-
+-
+-/* Compute an array of characteristic (eigen) values from the recurrence
+-   matrices for the Mathieu equations. */
+-int gsl_sf_mathieu_a_array(int order_min, int order_max, double qq, gsl_sf_mathieu_workspace *work, double result_array[]);
+-int gsl_sf_mathieu_b_array(int order_min, int order_max, double qq,  gsl_sf_mathieu_workspace *work, double result_array[]);
+-
+-/* Compute the characteristic value for a Mathieu function of order n and
+-   type ntype. */
+-int gsl_sf_mathieu_a(int order, double qq, gsl_sf_result *result);
+-int gsl_sf_mathieu_b(int order, double qq, gsl_sf_result *result);
+-
+-/* Compute the Fourier coefficients for a Mathieu function. */
+-int gsl_sf_mathieu_a_coeff(int order, double qq, double aa, double coeff[]);
+-int gsl_sf_mathieu_b_coeff(int order, double qq, double aa, double coeff[]);
+-
+-/* Allocate computational storage space for eigenvalue solution. */
+-gsl_sf_mathieu_workspace *gsl_sf_mathieu_alloc(const size_t nn,
+-                                               const double qq);
+-void gsl_sf_mathieu_free(gsl_sf_mathieu_workspace *workspace);
+-
+-/* Compute an angular Mathieu function. */
+-int gsl_sf_mathieu_ce(int order, double qq, double zz, gsl_sf_result *result);
+-int gsl_sf_mathieu_se(int order, double qq, double zz, gsl_sf_result *result);
+-int gsl_sf_mathieu_ce_array(int nmin, int nmax, double qq, double zz,
+-                            gsl_sf_mathieu_workspace *work,
+-                            double result_array[]);
+-int gsl_sf_mathieu_se_array(int nmin, int nmax, double qq, double zz,
+-                            gsl_sf_mathieu_workspace *work,
+-                            double result_array[]);
+-
+-/* Compute a radial Mathieu function. */
+-int gsl_sf_mathieu_Mc(int kind, int order, double qq, double zz,
+-                      gsl_sf_result *result);
+-int gsl_sf_mathieu_Ms(int kind, int order, double qq, double zz,
+-                      gsl_sf_result *result);
+-int gsl_sf_mathieu_Mc_array(int kind, int nmin, int nmax, double qq,
+-                            double zz, gsl_sf_mathieu_workspace *work,
+-                            double result_array[]);
+-int gsl_sf_mathieu_Ms_array(int kind, int nmin, int nmax, double qq,
+-                            double zz, gsl_sf_mathieu_workspace *work,
+-                            double result_array[]);
+-
+-
+-__END_DECLS
+-
+-#endif /* !__GSL_SF_MATHIEU_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_heapsort.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_heapsort.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_heapsort.h	(revision 14079)
+@@ -1,44 +0,0 @@
+-/* sort/gsl_heapsort.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_HEAPSORT_H__
+-#define __GSL_HEAPSORT_H__
+-
+-#include <gsl/gsl_permutation.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-typedef int (*gsl_comparison_fn_t) (const void *, const void *);
+-
+-void gsl_heapsort (void * array, size_t count, size_t size, gsl_comparison_fn_t compare);
+-int gsl_heapsort_index (size_t * p, const void * array, size_t count, size_t size, gsl_comparison_fn_t compare);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_HEAPSORT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort.h	(revision 14079)
+@@ -1,20 +0,0 @@
+-#ifndef __GSL_SORT_H__
+-#define __GSL_SORT_H__
+-
+-#include <gsl/gsl_sort_long_double.h>
+-#include <gsl/gsl_sort_double.h>
+-#include <gsl/gsl_sort_float.h>
+-
+-#include <gsl/gsl_sort_ulong.h>
+-#include <gsl/gsl_sort_long.h>
+-
+-#include <gsl/gsl_sort_uint.h>
+-#include <gsl/gsl_sort_int.h>
+-
+-#include <gsl/gsl_sort_ushort.h>
+-#include <gsl/gsl_sort_short.h>
+-
+-#include <gsl/gsl_sort_uchar.h>
+-#include <gsl/gsl_sort_char.h>
+-
+-#endif /* __GSL_SORT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_eigen.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_eigen.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_eigen.h	(revision 14079)
+@@ -1,347 +0,0 @@
+-/* eigen/gsl_eigen.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2006, 2007 Gerard Jungman, Brian Gough, Patrick Alken
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_EIGEN_H__
+-#define __GSL_EIGEN_H__
+-
+-#include <gsl/gsl_vector.h>
+-#include <gsl/gsl_matrix.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-typedef struct {
+-  size_t size;
+-  double * d;
+-  double * sd;
+-} gsl_eigen_symm_workspace;
+-
+-gsl_eigen_symm_workspace * gsl_eigen_symm_alloc (const size_t n);
+-void gsl_eigen_symm_free (gsl_eigen_symm_workspace * w);
+-int gsl_eigen_symm (gsl_matrix * A, gsl_vector * eval, gsl_eigen_symm_workspace * w);
+-
+-typedef struct {
+-  size_t size;
+-  double * d;
+-  double * sd;
+-  double * gc;
+-  double * gs;
+-} gsl_eigen_symmv_workspace;
+-
+-gsl_eigen_symmv_workspace * gsl_eigen_symmv_alloc (const size_t n);
+-void gsl_eigen_symmv_free (gsl_eigen_symmv_workspace * w);
+-int gsl_eigen_symmv (gsl_matrix * A, gsl_vector * eval, gsl_matrix * evec, gsl_eigen_symmv_workspace * w);
+-
+-typedef struct {
+-  size_t size;
+-  double * d;
+-  double * sd;
+-  double * tau;
+-} gsl_eigen_herm_workspace;
+-
+-gsl_eigen_herm_workspace * gsl_eigen_herm_alloc (const size_t n);
+-void gsl_eigen_herm_free (gsl_eigen_herm_workspace * w);
+-int gsl_eigen_herm (gsl_matrix_complex * A, gsl_vector * eval,
+-                         gsl_eigen_herm_workspace * w);
+-
+-typedef struct {
+-  size_t size;
+-  double * d;
+-  double * sd;
+-  double * tau;
+-  double * gc;
+-  double * gs;
+-} gsl_eigen_hermv_workspace;
+-
+-gsl_eigen_hermv_workspace * gsl_eigen_hermv_alloc (const size_t n);
+-void gsl_eigen_hermv_free (gsl_eigen_hermv_workspace * w);
+-int gsl_eigen_hermv (gsl_matrix_complex * A, gsl_vector * eval, 
+-                           gsl_matrix_complex * evec,
+-                           gsl_eigen_hermv_workspace * w);
+-
+-typedef struct {
+-  size_t size;           /* matrix size */
+-  size_t max_iterations; /* max iterations since last eigenvalue found */
+-  size_t n_iter;         /* number of iterations since last eigenvalue found */
+-  size_t n_evals;        /* number of eigenvalues found so far */
+-
+-  int compute_t;         /* compute Schur form T = Z^t A Z */
+-
+-  gsl_matrix *H;         /* pointer to Hessenberg matrix */
+-  gsl_matrix *Z;         /* pointer to Schur vector matrix */
+-} gsl_eigen_francis_workspace;
+-
+-gsl_eigen_francis_workspace * gsl_eigen_francis_alloc (void);
+-void gsl_eigen_francis_free (gsl_eigen_francis_workspace * w);
+-void gsl_eigen_francis_T (const int compute_t,
+-                          gsl_eigen_francis_workspace * w);
+-int gsl_eigen_francis (gsl_matrix * H, gsl_vector_complex * eval,
+-                       gsl_eigen_francis_workspace * w);
+-int gsl_eigen_francis_Z (gsl_matrix * H, gsl_vector_complex * eval,
+-                         gsl_matrix * Z,
+-                         gsl_eigen_francis_workspace * w);
+-
+-typedef struct {
+-  size_t size;                 /* size of matrices */
+-  gsl_vector *diag;            /* diagonal matrix elements from balancing */
+-  gsl_vector *tau;             /* Householder coefficients */
+-  gsl_matrix *Z;               /* pointer to Z matrix */
+-  int do_balance;              /* perform balancing transformation? */
+-  size_t n_evals;              /* number of eigenvalues found */
+-
+-  gsl_eigen_francis_workspace *francis_workspace_p;
+-} gsl_eigen_nonsymm_workspace;
+-
+-gsl_eigen_nonsymm_workspace * gsl_eigen_nonsymm_alloc (const size_t n);
+-void gsl_eigen_nonsymm_free (gsl_eigen_nonsymm_workspace * w);
+-void gsl_eigen_nonsymm_params (const int compute_t, const int balance,
+-                               gsl_eigen_nonsymm_workspace *w);
+-int gsl_eigen_nonsymm (gsl_matrix * A, gsl_vector_complex * eval,
+-                       gsl_eigen_nonsymm_workspace * w);
+-int gsl_eigen_nonsymm_Z (gsl_matrix * A, gsl_vector_complex * eval,
+-                         gsl_matrix * Z, gsl_eigen_nonsymm_workspace * w);
+-
+-typedef struct {
+-  size_t size;                 /* size of matrices */
+-  gsl_vector *work;            /* scratch workspace */
+-  gsl_vector *work2;           /* scratch workspace */
+-  gsl_vector *work3;           /* scratch workspace */
+-
+-  gsl_matrix *Z;               /* pointer to Schur vectors */
+-
+-  gsl_eigen_nonsymm_workspace *nonsymm_workspace_p;
+-} gsl_eigen_nonsymmv_workspace;
+-
+-gsl_eigen_nonsymmv_workspace * gsl_eigen_nonsymmv_alloc (const size_t n);
+-void gsl_eigen_nonsymmv_free (gsl_eigen_nonsymmv_workspace * w);
+-void gsl_eigen_nonsymmv_params (const int balance,
+-                                gsl_eigen_nonsymmv_workspace *w);
+-int gsl_eigen_nonsymmv (gsl_matrix * A, gsl_vector_complex * eval,
+-                        gsl_matrix_complex * evec,
+-                        gsl_eigen_nonsymmv_workspace * w);
+-int gsl_eigen_nonsymmv_Z (gsl_matrix * A, gsl_vector_complex * eval,
+-                          gsl_matrix_complex * evec, gsl_matrix * Z,
+-                          gsl_eigen_nonsymmv_workspace * w);
+-
+-typedef struct {
+-  size_t size;            /* size of matrices */
+-  gsl_eigen_symm_workspace *symm_workspace_p;
+-} gsl_eigen_gensymm_workspace;
+-
+-gsl_eigen_gensymm_workspace * gsl_eigen_gensymm_alloc (const size_t n);
+-void gsl_eigen_gensymm_free (gsl_eigen_gensymm_workspace * w);
+-int gsl_eigen_gensymm (gsl_matrix * A, gsl_matrix * B,
+-                       gsl_vector * eval, gsl_eigen_gensymm_workspace * w);
+-int gsl_eigen_gensymm_standardize (gsl_matrix * A, const gsl_matrix * B);
+-
+-typedef struct {
+-  size_t size;            /* size of matrices */
+-  gsl_eigen_symmv_workspace *symmv_workspace_p;
+-} gsl_eigen_gensymmv_workspace;
+-
+-gsl_eigen_gensymmv_workspace * gsl_eigen_gensymmv_alloc (const size_t n);
+-void gsl_eigen_gensymmv_free (gsl_eigen_gensymmv_workspace * w);
+-int gsl_eigen_gensymmv (gsl_matrix * A, gsl_matrix * B,
+-                        gsl_vector * eval, gsl_matrix * evec,
+-                        gsl_eigen_gensymmv_workspace * w);
+-
+-typedef struct {
+-  size_t size;            /* size of matrices */
+-  gsl_eigen_herm_workspace *herm_workspace_p;
+-} gsl_eigen_genherm_workspace;
+-
+-gsl_eigen_genherm_workspace * gsl_eigen_genherm_alloc (const size_t n);
+-void gsl_eigen_genherm_free (gsl_eigen_genherm_workspace * w);
+-int gsl_eigen_genherm (gsl_matrix_complex * A, gsl_matrix_complex * B,
+-                       gsl_vector * eval, gsl_eigen_genherm_workspace * w);
+-int gsl_eigen_genherm_standardize (gsl_matrix_complex * A,
+-                                   const gsl_matrix_complex * B);
+-
+-typedef struct {
+-  size_t size;            /* size of matrices */
+-  gsl_eigen_hermv_workspace *hermv_workspace_p;
+-} gsl_eigen_genhermv_workspace;
+-
+-gsl_eigen_genhermv_workspace * gsl_eigen_genhermv_alloc (const size_t n);
+-void gsl_eigen_genhermv_free (gsl_eigen_genhermv_workspace * w);
+-int gsl_eigen_genhermv (gsl_matrix_complex * A, gsl_matrix_complex * B,
+-                        gsl_vector * eval, gsl_matrix_complex * evec,
+-                        gsl_eigen_genhermv_workspace * w);
+-
+-typedef struct {
+-  size_t size;            /* size of matrices */
+-  gsl_vector *work;       /* scratch workspace */
+-
+-  size_t n_evals;         /* number of eigenvalues found */
+-  size_t max_iterations;  /* maximum QZ iterations allowed */
+-  size_t n_iter;          /* number of iterations since last eigenvalue found */
+-  double eshift;          /* exceptional shift counter */
+-
+-  int needtop;            /* need to compute top index? */
+-
+-  double atol;            /* tolerance for splitting A matrix */
+-  double btol;            /* tolerance for splitting B matrix */
+-
+-  double ascale;          /* scaling factor for shifts */
+-  double bscale;          /* scaling factor for shifts */
+-
+-  gsl_matrix *H;          /* pointer to hessenberg matrix */
+-  gsl_matrix *R;          /* pointer to upper triangular matrix */
+-
+-  int compute_s;          /* compute generalized Schur form S */
+-  int compute_t;          /* compute generalized Schur form T */
+-
+-  gsl_matrix *Q;          /* pointer to left Schur vectors */
+-  gsl_matrix *Z;          /* pointer to right Schur vectors */
+-} gsl_eigen_gen_workspace;
+-
+-gsl_eigen_gen_workspace * gsl_eigen_gen_alloc (const size_t n);
+-void gsl_eigen_gen_free (gsl_eigen_gen_workspace * w);
+-void gsl_eigen_gen_params (const int compute_s, const int compute_t,
+-                           const int balance, gsl_eigen_gen_workspace * w);
+-int gsl_eigen_gen (gsl_matrix * A, gsl_matrix * B,
+-                   gsl_vector_complex * alpha, gsl_vector * beta,
+-                   gsl_eigen_gen_workspace * w);
+-int gsl_eigen_gen_QZ (gsl_matrix * A, gsl_matrix * B,
+-                      gsl_vector_complex * alpha, gsl_vector * beta,
+-                      gsl_matrix * Q, gsl_matrix * Z,
+-                      gsl_eigen_gen_workspace * w);
+-
+-typedef struct {
+-  size_t size;            /* size of matrices */
+-
+-  gsl_vector *work1;      /* 1-norm of columns of A */
+-  gsl_vector *work2;      /* 1-norm of columns of B */
+-  gsl_vector *work3;      /* real part of eigenvector */
+-  gsl_vector *work4;      /* imag part of eigenvector */
+-  gsl_vector *work5;      /* real part of back-transformed eigenvector */
+-  gsl_vector *work6;      /* imag part of back-transformed eigenvector */
+-
+-  gsl_matrix *Q;          /* pointer to left Schur vectors */
+-  gsl_matrix *Z;          /* pointer to right Schur vectors */
+-
+-  gsl_eigen_gen_workspace *gen_workspace_p;
+-} gsl_eigen_genv_workspace;
+-
+-gsl_eigen_genv_workspace * gsl_eigen_genv_alloc (const size_t n);
+-void gsl_eigen_genv_free (gsl_eigen_genv_workspace * w);
+-int gsl_eigen_genv (gsl_matrix * A, gsl_matrix * B,
+-                    gsl_vector_complex * alpha, gsl_vector * beta,
+-                    gsl_matrix_complex * evec,
+-                    gsl_eigen_genv_workspace * w);
+-int gsl_eigen_genv_QZ (gsl_matrix * A, gsl_matrix * B,
+-                       gsl_vector_complex * alpha, gsl_vector * beta,
+-                       gsl_matrix_complex * evec,
+-                       gsl_matrix * Q, gsl_matrix * Z,
+-                       gsl_eigen_genv_workspace * w);
+-
+-
+-
+-typedef enum {
+-  GSL_EIGEN_SORT_VAL_ASC,
+-  GSL_EIGEN_SORT_VAL_DESC,
+-  GSL_EIGEN_SORT_ABS_ASC,
+-  GSL_EIGEN_SORT_ABS_DESC
+-}
+-gsl_eigen_sort_t;
+-
+-/* Sort eigensystem results based on eigenvalues.
+- * Sorts in order of increasing value or increasing
+- * absolute value.
+- *
+- * exceptions: GSL_EBADLEN
+- */
+-
+-int gsl_eigen_symmv_sort(gsl_vector * eval, gsl_matrix * evec,
+-                         gsl_eigen_sort_t sort_type);
+-
+-int gsl_eigen_hermv_sort(gsl_vector * eval, gsl_matrix_complex * evec,
+-                         gsl_eigen_sort_t sort_type);
+-
+-int gsl_eigen_nonsymmv_sort(gsl_vector_complex * eval,
+-                            gsl_matrix_complex * evec,
+-                            gsl_eigen_sort_t sort_type);
+-
+-int gsl_eigen_gensymmv_sort (gsl_vector * eval, gsl_matrix * evec, 
+-                             gsl_eigen_sort_t sort_type);
+-
+-int gsl_eigen_genhermv_sort (gsl_vector * eval, gsl_matrix_complex * evec, 
+-                             gsl_eigen_sort_t sort_type);
+-
+-int gsl_eigen_genv_sort (gsl_vector_complex * alpha, gsl_vector * beta,
+-                         gsl_matrix_complex * evec,
+-                         gsl_eigen_sort_t sort_type);
+-
+-/* Prototypes for the schur module */
+-
+-int gsl_schur_gen_eigvals(const gsl_matrix *A, const gsl_matrix *B,
+-                          double *wr1, double *wr2, double *wi,
+-                          double *scale1, double *scale2);
+-
+-int gsl_schur_solve_equation(double ca, const gsl_matrix *A, double z,
+-                             double d1, double d2, const gsl_vector *b,
+-                             gsl_vector *x, double *s, double *xnorm,
+-                             double smin);
+-
+-int gsl_schur_solve_equation_z(double ca, const gsl_matrix *A,
+-                               gsl_complex *z, double d1, double d2,
+-                               const gsl_vector_complex *b,
+-                               gsl_vector_complex *x, double *s,
+-                               double *xnorm, double smin);
+-
+-
+-/* The following functions are obsolete: */
+-
+-/* Eigensolve by Jacobi Method
+- *
+- * The data in the matrix input is destroyed.
+- *
+- * exceptions: 
+- */
+-int
+-gsl_eigen_jacobi(gsl_matrix * matrix,
+-                      gsl_vector * eval,
+-                      gsl_matrix * evec,
+-                      unsigned int max_rot, 
+-                      unsigned int * nrot);
+-
+-
+-/* Invert by Jacobi Method
+- *
+- * exceptions: 
+- */
+-int
+-gsl_eigen_invert_jacobi(const gsl_matrix * matrix,
+-                             gsl_matrix * ainv,
+-                             unsigned int max_rot);
+-
+-
+-
+-__END_DECLS
+-
+-#endif /* __GSL_EIGEN_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_long.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_long.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_long.h	(revision 14079)
+@@ -1,51 +0,0 @@
+-/* sort/gsl_sort_vector_long.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_SORT_VECTOR_LONG_H__
+-#define __GSL_SORT_VECTOR_LONG_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_permutation.h>
+-#include <gsl/gsl_vector_long.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-void gsl_sort_vector_long (gsl_vector_long * v);
+-int gsl_sort_vector_long_index (gsl_permutation * p, const gsl_vector_long * v);
+-
+-int gsl_sort_vector_long_smallest (long * dest, const size_t k, const gsl_vector_long * v);
+-int gsl_sort_vector_long_largest (long * dest, const size_t k, const gsl_vector_long * v);
+-
+-int gsl_sort_vector_long_smallest_index (size_t * p, const size_t k, const gsl_vector_long * v);
+-int gsl_sort_vector_long_largest_index (size_t * p, const size_t k, const gsl_vector_long * v);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_SORT_VECTOR_LONG_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_spline.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_spline.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_spline.h	(revision 14079)
+@@ -1,101 +0,0 @@
+-/* interpolation/gsl_spline.h
+- * 
+- * Copyright (C) 2001, 2007 Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_SPLINE_H__
+-#define __GSL_SPLINE_H__
+-#include <stdlib.h>
+-#include <gsl/gsl_interp.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-
+-/* general interpolation object */
+-typedef struct {
+-  gsl_interp * interp;
+-  double  * x;
+-  double  * y;
+-  size_t  size;
+-} gsl_spline;
+-
+-gsl_spline *
+-gsl_spline_alloc(const gsl_interp_type * T, size_t size);
+-     
+-int
+-gsl_spline_init(gsl_spline * spline, const double xa[], const double ya[], size_t size);
+-
+-const char * gsl_spline_name(const gsl_spline * spline);
+-unsigned int gsl_spline_min_size(const gsl_spline * spline);
+-
+-
+-int
+-gsl_spline_eval_e(const gsl_spline * spline, double x,
+-                  gsl_interp_accel * a, double * y);
+-
+-double
+-gsl_spline_eval(const gsl_spline * spline, double x, gsl_interp_accel * a);
+-
+-int
+-gsl_spline_eval_deriv_e(const gsl_spline * spline,
+-                        double x,
+-                        gsl_interp_accel * a,
+-                        double * y);
+-
+-double
+-gsl_spline_eval_deriv(const gsl_spline * spline,
+-                      double x,
+-                      gsl_interp_accel * a);
+-
+-int
+-gsl_spline_eval_deriv2_e(const gsl_spline * spline,
+-                         double x,
+-                         gsl_interp_accel * a,
+-                         double * y);
+-
+-double
+-gsl_spline_eval_deriv2(const gsl_spline * spline,
+-                       double x,
+-                       gsl_interp_accel * a);
+-
+-int
+-gsl_spline_eval_integ_e(const gsl_spline * spline,
+-                        double a, double b,
+-                        gsl_interp_accel * acc,
+-                        double * y);
+-
+-double
+-gsl_spline_eval_integ(const gsl_spline * spline,
+-                      double a, double b,
+-                      gsl_interp_accel * acc);
+-
+-void
+-gsl_spline_free(gsl_spline * spline);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_INTERP_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_bspline.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_bspline.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_bspline.h	(revision 14079)
+@@ -1,114 +0,0 @@
+-/* bspline/gsl_bspline.h
+- *
+- * Copyright (C) 2006 Patrick Alken
+- * Copyright (C) 2008 Rhys Ulerich
+- *
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- *
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- *
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_BSPLINE_H__
+-#define __GSL_BSPLINE_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_math.h>
+-#include <gsl/gsl_vector.h>
+-#include <gsl/gsl_matrix.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-typedef struct
+-{
+-    size_t k; /* spline order */
+-    size_t km1; /* k - 1 (polynomial order) */
+-    size_t l; /* number of polynomial pieces on interval */
+-    size_t nbreak; /* number of breakpoints (l + 1) */
+-    size_t n; /* number of bspline basis functions (l + k - 1) */
+-
+-    gsl_vector *knots; /* knots vector */
+-    gsl_vector *deltal; /* left delta */
+-    gsl_vector *deltar; /* right delta */
+-    gsl_vector *B; /* temporary spline results */
+-} gsl_bspline_workspace;
+-
+-typedef struct
+-{
+-    size_t k; /* spline order */
+-    gsl_matrix *A; /* work matrix */
+-    gsl_matrix *dB; /* temporary derivative results */
+-} gsl_bspline_deriv_workspace;
+-
+-gsl_bspline_workspace *
+-gsl_bspline_alloc(const size_t k, const size_t nbreak);
+-
+-void gsl_bspline_free(gsl_bspline_workspace *w);
+-
+-size_t gsl_bspline_ncoeffs(gsl_bspline_workspace * w);
+-size_t gsl_bspline_order(gsl_bspline_workspace * w);
+-size_t gsl_bspline_nbreak(gsl_bspline_workspace * w);
+-double gsl_bspline_breakpoint(size_t i, gsl_bspline_workspace * w);
+-double gsl_bspline_greville_abscissa(size_t i, gsl_bspline_workspace *w);
+-
+-int
+-gsl_bspline_knots(const gsl_vector *breakpts, gsl_bspline_workspace *w);
+-
+-int gsl_bspline_knots_uniform(const double a, const double b,
+-                              gsl_bspline_workspace *w);
+-
+-int
+-gsl_bspline_eval(const double x, gsl_vector *B, 
+-                 gsl_bspline_workspace *w);
+-
+-int
+-gsl_bspline_eval_nonzero(const double x,
+-                         gsl_vector *Bk,
+-                         size_t *istart,
+-                         size_t *iend,
+-                         gsl_bspline_workspace *w);
+-
+-gsl_bspline_deriv_workspace *
+-gsl_bspline_deriv_alloc(const size_t k);
+-
+-void
+-gsl_bspline_deriv_free(gsl_bspline_deriv_workspace *w);
+-
+-int
+-gsl_bspline_deriv_eval(const double x,
+-                       const size_t nderiv,
+-                       gsl_matrix *dB,
+-                       gsl_bspline_workspace *w,
+-                       gsl_bspline_deriv_workspace *dw);
+-
+-int
+-gsl_bspline_deriv_eval_nonzero(const double x,
+-                               const size_t nderiv,
+-                               gsl_matrix *dB,
+-                               size_t *istart,
+-                               size_t *iend,
+-                               gsl_bspline_workspace *w,
+-                               gsl_bspline_deriv_workspace *dw);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_BSPLINE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_trig.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_trig.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_trig.h	(revision 14079)
+@@ -1,152 +0,0 @@
+-/* specfunc/gsl_sf_trig.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-/* Author:  G. Jungman */
+-
+-#ifndef __GSL_SF_TRIG_H__
+-#define __GSL_SF_TRIG_H__
+-
+-#include <gsl/gsl_sf_result.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-
+-/* Sin(x) with GSL semantics. This is actually important
+- * because we want to control the error estimate, and trying
+- * to guess the error for the standard library implementation
+- * every time it is used would be a little goofy.
+- */
+-int gsl_sf_sin_e(double x, gsl_sf_result * result);
+-double gsl_sf_sin(const double x);
+-
+-
+-/* Cos(x) with GSL semantics.
+- */
+-int gsl_sf_cos_e(double x, gsl_sf_result * result);
+-double gsl_sf_cos(const double x);
+-
+-
+-/* Hypot(x,y) with GSL semantics.
+- */
+-int gsl_sf_hypot_e(const double x, const double y, gsl_sf_result * result);
+-double gsl_sf_hypot(const double x, const double y);
+-
+-
+-/* Sin(z) for complex z
+- *
+- * exceptions: GSL_EOVRFLW
+- */
+-int gsl_sf_complex_sin_e(const double zr, const double zi, gsl_sf_result * szr, gsl_sf_result * szi);
+-
+-
+-/* Cos(z) for complex z
+- *
+- * exceptions: GSL_EOVRFLW
+- */
+-int gsl_sf_complex_cos_e(const double zr, const double zi, gsl_sf_result * czr, gsl_sf_result * czi);
+-
+-
+-/* Log(Sin(z)) for complex z
+- *
+- * exceptions: GSL_EDOM, GSL_ELOSS
+- */
+-int gsl_sf_complex_logsin_e(const double zr, const double zi, gsl_sf_result * lszr, gsl_sf_result * lszi);
+-
+-
+-/* Sinc(x) = sin(pi x) / (pi x)
+- *
+- * exceptions: none
+- */
+-int gsl_sf_sinc_e(double x, gsl_sf_result * result);
+-double gsl_sf_sinc(const double x);
+-
+-
+-/* Log(Sinh(x)), x > 0
+- *
+- * exceptions: GSL_EDOM
+- */
+-int gsl_sf_lnsinh_e(const double x, gsl_sf_result * result);
+-double gsl_sf_lnsinh(const double x);
+-
+-
+-/* Log(Cosh(x))
+- *
+- * exceptions: none
+- */
+-int gsl_sf_lncosh_e(const double x, gsl_sf_result * result);
+-double gsl_sf_lncosh(const double x);
+-
+-
+-/* Convert polar to rectlinear coordinates.
+- *
+- * exceptions: GSL_ELOSS
+- */
+-int gsl_sf_polar_to_rect(const double r, const double theta, gsl_sf_result * x, gsl_sf_result * y);
+-
+-/* Convert rectilinear to polar coordinates.
+- * return argument in range [-pi, pi]
+- *
+- * exceptions: GSL_EDOM
+- */
+-int gsl_sf_rect_to_polar(const double x, const double y, gsl_sf_result * r, gsl_sf_result * theta);
+-
+-/* Sin(x) for quantity with an associated error.
+- */
+-int gsl_sf_sin_err_e(const double x, const double dx, gsl_sf_result * result);
+-
+-
+-/* Cos(x) for quantity with an associated error.
+- */
+-int gsl_sf_cos_err_e(const double x, const double dx, gsl_sf_result * result);
+-
+-
+-/* Force an angle to lie in the range (-pi,pi].
+- *
+- * exceptions: GSL_ELOSS
+- */
+-int gsl_sf_angle_restrict_symm_e(double * theta);
+-double gsl_sf_angle_restrict_symm(const double theta);
+-
+-
+-/* Force an angle to lie in the range [0, 2pi)
+- *
+- * exceptions: GSL_ELOSS
+- */
+-int gsl_sf_angle_restrict_pos_e(double * theta);
+-double gsl_sf_angle_restrict_pos(const double theta);
+-
+-
+-int gsl_sf_angle_restrict_symm_err_e(const double theta, gsl_sf_result * result);
+-
+-int gsl_sf_angle_restrict_pos_err_e(const double theta, gsl_sf_result * result);
+-
+-
+-__END_DECLS
+-
+-#endif /* __GSL_SF_TRIG_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_elementary.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_elementary.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_elementary.h	(revision 14079)
+@@ -1,57 +0,0 @@
+-/* specfunc/gsl_sf_elementary.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-/* Author:  G. Jungman */
+-
+-/* Miscellaneous elementary functions and operations.
+- */
+-#ifndef __GSL_SF_ELEMENTARY_H__
+-#define __GSL_SF_ELEMENTARY_H__
+-
+-#include <gsl/gsl_sf_result.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-
+-/* Multiplication.
+- *
+- * exceptions: GSL_EOVRFLW, GSL_EUNDRFLW
+- */
+-int gsl_sf_multiply_e(const double x, const double y, gsl_sf_result * result);
+-double gsl_sf_multiply(const double x, const double y);
+-
+-
+-/* Multiplication of quantities with associated errors.
+- */
+-int gsl_sf_multiply_err_e(const double x, const double dx, const double y, const double dy, gsl_sf_result * result);
+-
+-
+-__END_DECLS
+-
+-#endif /* __GSL_SF_ELEMENTARY_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_ushort.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_ushort.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_ushort.h	(revision 14079)
+@@ -1,65 +0,0 @@
+-/* block/gsl_block_ushort.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_BLOCK_USHORT_H__
+-#define __GSL_BLOCK_USHORT_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-struct gsl_block_ushort_struct
+-{
+-  size_t size;
+-  unsigned short *data;
+-};
+-
+-typedef struct gsl_block_ushort_struct gsl_block_ushort;
+-
+-gsl_block_ushort *gsl_block_ushort_alloc (const size_t n);
+-gsl_block_ushort *gsl_block_ushort_calloc (const size_t n);
+-void gsl_block_ushort_free (gsl_block_ushort * b);
+-
+-int gsl_block_ushort_fread (FILE * stream, gsl_block_ushort * b);
+-int gsl_block_ushort_fwrite (FILE * stream, const gsl_block_ushort * b);
+-int gsl_block_ushort_fscanf (FILE * stream, gsl_block_ushort * b);
+-int gsl_block_ushort_fprintf (FILE * stream, const gsl_block_ushort * b, const char *format);
+-
+-int gsl_block_ushort_raw_fread (FILE * stream, unsigned short * b, const size_t n, const size_t stride);
+-int gsl_block_ushort_raw_fwrite (FILE * stream, const unsigned short * b, const size_t n, const size_t stride);
+-int gsl_block_ushort_raw_fscanf (FILE * stream, unsigned short * b, const size_t n, const size_t stride);
+-int gsl_block_ushort_raw_fprintf (FILE * stream, const unsigned short * b, const size_t n, const size_t stride, const char *format);
+-
+-size_t gsl_block_ushort_size (const gsl_block_ushort * b);
+-unsigned short * gsl_block_ushort_data (const gsl_block_ushort * b);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_BLOCK_USHORT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_laguerre.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_laguerre.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_laguerre.h	(revision 14079)
+@@ -1,68 +0,0 @@
+-/* specfunc/gsl_sf_laguerre.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-/* Author:  G. Jungman */
+-
+-#ifndef __GSL_SF_LAGUERRE_H__
+-#define __GSL_SF_LAGUERRE_H__
+-
+-#include <gsl/gsl_sf_result.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-
+-/* L^a_n(x) = (a+1)_n / n! 1F1(-n,a+1,x) */
+-
+-
+-/* Evaluate generalized Laguerre polynomials
+- * using explicit representations.
+- *
+- * exceptions: none
+- */
+-int gsl_sf_laguerre_1_e(const double a, const double x, gsl_sf_result * result);
+-int gsl_sf_laguerre_2_e(const double a, const double x, gsl_sf_result * result);
+-int gsl_sf_laguerre_3_e(const double a, const double x, gsl_sf_result * result);
+-double gsl_sf_laguerre_1(double a, double x);
+-double gsl_sf_laguerre_2(double a, double x);
+-double gsl_sf_laguerre_3(double a, double x);
+-
+-
+-/* Evaluate generalized Laguerre polynomials.
+- *
+- * a > -1.0
+- * n >= 0
+- * exceptions: GSL_EDOM
+- */
+-int     gsl_sf_laguerre_n_e(const int n, const double a, const double x, gsl_sf_result * result);
+-double     gsl_sf_laguerre_n(int n, double a, double x);
+-
+-
+-__END_DECLS
+-
+-#endif /* __GSL_SF_LAGUERRE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_float.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_float.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_float.h	(revision 14079)
+@@ -1,51 +0,0 @@
+-/* sort/gsl_sort_vector_float.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_SORT_VECTOR_FLOAT_H__
+-#define __GSL_SORT_VECTOR_FLOAT_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_permutation.h>
+-#include <gsl/gsl_vector_float.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-void gsl_sort_vector_float (gsl_vector_float * v);
+-int gsl_sort_vector_float_index (gsl_permutation * p, const gsl_vector_float * v);
+-
+-int gsl_sort_vector_float_smallest (float * dest, const size_t k, const gsl_vector_float * v);
+-int gsl_sort_vector_float_largest (float * dest, const size_t k, const gsl_vector_float * v);
+-
+-int gsl_sort_vector_float_smallest_index (size_t * p, const size_t k, const gsl_vector_float * v);
+-int gsl_sort_vector_float_largest_index (size_t * p, const size_t k, const gsl_vector_float * v);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_SORT_VECTOR_FLOAT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_const_mks.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_const_mks.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_const_mks.h	(revision 14079)
+@@ -1,126 +0,0 @@
+-/* const/gsl_const_mks.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+- * 2006, 2007, 2008, 2009 Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_CONST_MKS__
+-#define __GSL_CONST_MKS__
+-
+-#define GSL_CONST_MKS_SPEED_OF_LIGHT (2.99792458e8) /* m / s */
+-#define GSL_CONST_MKS_GRAVITATIONAL_CONSTANT (6.673e-11) /* m^3 / kg s^2 */
+-#define GSL_CONST_MKS_PLANCKS_CONSTANT_H (6.62606896e-34) /* kg m^2 / s */
+-#define GSL_CONST_MKS_PLANCKS_CONSTANT_HBAR (1.05457162825e-34) /* kg m^2 / s */
+-#define GSL_CONST_MKS_ASTRONOMICAL_UNIT (1.49597870691e11) /* m */
+-#define GSL_CONST_MKS_LIGHT_YEAR (9.46053620707e15) /* m */
+-#define GSL_CONST_MKS_PARSEC (3.08567758135e16) /* m */
+-#define GSL_CONST_MKS_GRAV_ACCEL (9.80665e0) /* m / s^2 */
+-#define GSL_CONST_MKS_ELECTRON_VOLT (1.602176487e-19) /* kg m^2 / s^2 */
+-#define GSL_CONST_MKS_MASS_ELECTRON (9.10938188e-31) /* kg */
+-#define GSL_CONST_MKS_MASS_MUON (1.88353109e-28) /* kg */
+-#define GSL_CONST_MKS_MASS_PROTON (1.67262158e-27) /* kg */
+-#define GSL_CONST_MKS_MASS_NEUTRON (1.67492716e-27) /* kg */
+-#define GSL_CONST_MKS_RYDBERG (2.17987196968e-18) /* kg m^2 / s^2 */
+-#define GSL_CONST_MKS_BOLTZMANN (1.3806504e-23) /* kg m^2 / K s^2 */
+-#define GSL_CONST_MKS_MOLAR_GAS (8.314472e0) /* kg m^2 / K mol s^2 */
+-#define GSL_CONST_MKS_STANDARD_GAS_VOLUME (2.2710981e-2) /* m^3 / mol */
+-#define GSL_CONST_MKS_MINUTE (6e1) /* s */
+-#define GSL_CONST_MKS_HOUR (3.6e3) /* s */
+-#define GSL_CONST_MKS_DAY (8.64e4) /* s */
+-#define GSL_CONST_MKS_WEEK (6.048e5) /* s */
+-#define GSL_CONST_MKS_INCH (2.54e-2) /* m */
+-#define GSL_CONST_MKS_FOOT (3.048e-1) /* m */
+-#define GSL_CONST_MKS_YARD (9.144e-1) /* m */
+-#define GSL_CONST_MKS_MILE (1.609344e3) /* m */
+-#define GSL_CONST_MKS_NAUTICAL_MILE (1.852e3) /* m */
+-#define GSL_CONST_MKS_FATHOM (1.8288e0) /* m */
+-#define GSL_CONST_MKS_MIL (2.54e-5) /* m */
+-#define GSL_CONST_MKS_POINT (3.52777777778e-4) /* m */
+-#define GSL_CONST_MKS_TEXPOINT (3.51459803515e-4) /* m */
+-#define GSL_CONST_MKS_MICRON (1e-6) /* m */
+-#define GSL_CONST_MKS_ANGSTROM (1e-10) /* m */
+-#define GSL_CONST_MKS_HECTARE (1e4) /* m^2 */
+-#define GSL_CONST_MKS_ACRE (4.04685642241e3) /* m^2 */
+-#define GSL_CONST_MKS_BARN (1e-28) /* m^2 */
+-#define GSL_CONST_MKS_LITER (1e-3) /* m^3 */
+-#define GSL_CONST_MKS_US_GALLON (3.78541178402e-3) /* m^3 */
+-#define GSL_CONST_MKS_QUART (9.46352946004e-4) /* m^3 */
+-#define GSL_CONST_MKS_PINT (4.73176473002e-4) /* m^3 */
+-#define GSL_CONST_MKS_CUP (2.36588236501e-4) /* m^3 */
+-#define GSL_CONST_MKS_FLUID_OUNCE (2.95735295626e-5) /* m^3 */
+-#define GSL_CONST_MKS_TABLESPOON (1.47867647813e-5) /* m^3 */
+-#define GSL_CONST_MKS_TEASPOON (4.92892159375e-6) /* m^3 */
+-#define GSL_CONST_MKS_CANADIAN_GALLON (4.54609e-3) /* m^3 */
+-#define GSL_CONST_MKS_UK_GALLON (4.546092e-3) /* m^3 */
+-#define GSL_CONST_MKS_MILES_PER_HOUR (4.4704e-1) /* m / s */
+-#define GSL_CONST_MKS_KILOMETERS_PER_HOUR (2.77777777778e-1) /* m / s */
+-#define GSL_CONST_MKS_KNOT (5.14444444444e-1) /* m / s */
+-#define GSL_CONST_MKS_POUND_MASS (4.5359237e-1) /* kg */
+-#define GSL_CONST_MKS_OUNCE_MASS (2.8349523125e-2) /* kg */
+-#define GSL_CONST_MKS_TON (9.0718474e2) /* kg */
+-#define GSL_CONST_MKS_METRIC_TON (1e3) /* kg */
+-#define GSL_CONST_MKS_UK_TON (1.0160469088e3) /* kg */
+-#define GSL_CONST_MKS_TROY_OUNCE (3.1103475e-2) /* kg */
+-#define GSL_CONST_MKS_CARAT (2e-4) /* kg */
+-#define GSL_CONST_MKS_UNIFIED_ATOMIC_MASS (1.660538782e-27) /* kg */
+-#define GSL_CONST_MKS_GRAM_FORCE (9.80665e-3) /* kg m / s^2 */
+-#define GSL_CONST_MKS_POUND_FORCE (4.44822161526e0) /* kg m / s^2 */
+-#define GSL_CONST_MKS_KILOPOUND_FORCE (4.44822161526e3) /* kg m / s^2 */
+-#define GSL_CONST_MKS_POUNDAL (1.38255e-1) /* kg m / s^2 */
+-#define GSL_CONST_MKS_CALORIE (4.1868e0) /* kg m^2 / s^2 */
+-#define GSL_CONST_MKS_BTU (1.05505585262e3) /* kg m^2 / s^2 */
+-#define GSL_CONST_MKS_THERM (1.05506e8) /* kg m^2 / s^2 */
+-#define GSL_CONST_MKS_HORSEPOWER (7.457e2) /* kg m^2 / s^3 */
+-#define GSL_CONST_MKS_BAR (1e5) /* kg / m s^2 */
+-#define GSL_CONST_MKS_STD_ATMOSPHERE (1.01325e5) /* kg / m s^2 */
+-#define GSL_CONST_MKS_TORR (1.33322368421e2) /* kg / m s^2 */
+-#define GSL_CONST_MKS_METER_OF_MERCURY (1.33322368421e5) /* kg / m s^2 */
+-#define GSL_CONST_MKS_INCH_OF_MERCURY (3.38638815789e3) /* kg / m s^2 */
+-#define GSL_CONST_MKS_INCH_OF_WATER (2.490889e2) /* kg / m s^2 */
+-#define GSL_CONST_MKS_PSI (6.89475729317e3) /* kg / m s^2 */
+-#define GSL_CONST_MKS_POISE (1e-1) /* kg m^-1 s^-1 */
+-#define GSL_CONST_MKS_STOKES (1e-4) /* m^2 / s */
+-#define GSL_CONST_MKS_STILB (1e4) /* cd / m^2 */
+-#define GSL_CONST_MKS_LUMEN (1e0) /* cd sr */
+-#define GSL_CONST_MKS_LUX (1e0) /* cd sr / m^2 */
+-#define GSL_CONST_MKS_PHOT (1e4) /* cd sr / m^2 */
+-#define GSL_CONST_MKS_FOOTCANDLE (1.076e1) /* cd sr / m^2 */
+-#define GSL_CONST_MKS_LAMBERT (1e4) /* cd sr / m^2 */
+-#define GSL_CONST_MKS_FOOTLAMBERT (1.07639104e1) /* cd sr / m^2 */
+-#define GSL_CONST_MKS_CURIE (3.7e10) /* 1 / s */
+-#define GSL_CONST_MKS_ROENTGEN (2.58e-4) /* A s / kg */
+-#define GSL_CONST_MKS_RAD (1e-2) /* m^2 / s^2 */
+-#define GSL_CONST_MKS_SOLAR_MASS (1.98892e30) /* kg */
+-#define GSL_CONST_MKS_BOHR_RADIUS (5.291772083e-11) /* m */
+-#define GSL_CONST_MKS_NEWTON (1e0) /* kg m / s^2 */
+-#define GSL_CONST_MKS_DYNE (1e-5) /* kg m / s^2 */
+-#define GSL_CONST_MKS_JOULE (1e0) /* kg m^2 / s^2 */
+-#define GSL_CONST_MKS_ERG (1e-7) /* kg m^2 / s^2 */
+-#define GSL_CONST_MKS_STEFAN_BOLTZMANN_CONSTANT (5.67040047374e-8) /* kg / K^4 s^3 */
+-#define GSL_CONST_MKS_THOMSON_CROSS_SECTION (6.65245893699e-29) /* m^2 */
+-#define GSL_CONST_MKS_BOHR_MAGNETON (9.27400899e-24) /* A m^2 */
+-#define GSL_CONST_MKS_NUCLEAR_MAGNETON (5.05078317e-27) /* A m^2 */
+-#define GSL_CONST_MKS_ELECTRON_MAGNETIC_MOMENT (9.28476362e-24) /* A m^2 */
+-#define GSL_CONST_MKS_PROTON_MAGNETIC_MOMENT (1.410606633e-26) /* A m^2 */
+-#define GSL_CONST_MKS_FARADAY (9.64853429775e4) /* A s / mol */
+-#define GSL_CONST_MKS_ELECTRON_CHARGE (1.602176487e-19) /* A s */
+-#define GSL_CONST_MKS_VACUUM_PERMITTIVITY (8.854187817e-12) /* A^2 s^4 / kg m^3 */
+-#define GSL_CONST_MKS_VACUUM_PERMEABILITY (1.25663706144e-6) /* kg m / A^2 s^2 */
+-#define GSL_CONST_MKS_DEBYE (3.33564095198e-30) /* A s^2 / m^2 */
+-#define GSL_CONST_MKS_GAUSS (1e-4) /* kg / A s^2 */
+-
+-#endif /* __GSL_CONST_MKS__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_interp.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_interp.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_interp.h	(revision 14079)
+@@ -1,224 +0,0 @@
+-/* interpolation/gsl_interp.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004 Gerard Jungman
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-/* Author:  G. Jungman
+- */
+-#ifndef __GSL_INTERP_H__
+-#define __GSL_INTERP_H__
+-#include <stdlib.h>
+-#include <gsl/gsl_inline.h>
+-#include <gsl/gsl_types.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-/* evaluation accelerator */
+-typedef struct {
+-  size_t  cache;        /* cache of index   */
+-  size_t  miss_count;   /* keep statistics  */
+-  size_t  hit_count;
+-}
+-gsl_interp_accel;
+-
+-
+-/* interpolation object type */
+-typedef struct {
+-  const char * name;
+-  unsigned int min_size;
+-  void *  (*alloc) (size_t size);
+-  int     (*init)    (void *, const double xa[], const double ya[], size_t size);
+-  int     (*eval)    (const void *, const double xa[], const double ya[], size_t size, double x, gsl_interp_accel *, double * y);
+-  int     (*eval_deriv)  (const void *, const double xa[], const double ya[], size_t size, double x, gsl_interp_accel *, double * y_p);
+-  int     (*eval_deriv2) (const void *, const double xa[], const double ya[], size_t size, double x, gsl_interp_accel *, double * y_pp);
+-  int     (*eval_integ)  (const void *, const double xa[], const double ya[], size_t size, gsl_interp_accel *, double a, double b, double * result);
+-  void    (*free)         (void *);
+-
+-} gsl_interp_type;
+-
+-
+-/* general interpolation object */
+-typedef struct {
+-  const gsl_interp_type * type;
+-  double  xmin;
+-  double  xmax;
+-  size_t  size;
+-  void * state;
+-} gsl_interp;
+-
+-
+-/* available types */
+-GSL_VAR const gsl_interp_type * gsl_interp_linear;
+-GSL_VAR const gsl_interp_type * gsl_interp_polynomial;
+-GSL_VAR const gsl_interp_type * gsl_interp_cspline;
+-GSL_VAR const gsl_interp_type * gsl_interp_cspline_periodic;
+-GSL_VAR const gsl_interp_type * gsl_interp_akima;
+-GSL_VAR const gsl_interp_type * gsl_interp_akima_periodic;
+-
+-gsl_interp_accel *
+-gsl_interp_accel_alloc(void);
+-
+-int
+-gsl_interp_accel_reset (gsl_interp_accel * a);
+-
+-void
+-gsl_interp_accel_free(gsl_interp_accel * a);
+-
+-gsl_interp *
+-gsl_interp_alloc(const gsl_interp_type * T, size_t n);
+-     
+-int
+-gsl_interp_init(gsl_interp * obj, const double xa[], const double ya[], size_t size);
+-
+-const char * gsl_interp_name(const gsl_interp * interp);
+-unsigned int gsl_interp_min_size(const gsl_interp * interp);
+-unsigned int gsl_interp_type_min_size(const gsl_interp_type * T);
+-
+-
+-int
+-gsl_interp_eval_e(const gsl_interp * obj,
+-                  const double xa[], const double ya[], double x,
+-                  gsl_interp_accel * a, double * y);
+-
+-double
+-gsl_interp_eval(const gsl_interp * obj,
+-                const double xa[], const double ya[], double x,
+-                gsl_interp_accel * a);
+-
+-int
+-gsl_interp_eval_deriv_e(const gsl_interp * obj,
+-                        const double xa[], const double ya[], double x,
+-                        gsl_interp_accel * a,
+-                        double * d);
+-
+-double
+-gsl_interp_eval_deriv(const gsl_interp * obj,
+-                      const double xa[], const double ya[], double x,
+-                      gsl_interp_accel * a);
+-
+-int
+-gsl_interp_eval_deriv2_e(const gsl_interp * obj,
+-                         const double xa[], const double ya[], double x,
+-                         gsl_interp_accel * a,
+-                         double * d2);
+-
+-double
+-gsl_interp_eval_deriv2(const gsl_interp * obj,
+-                       const double xa[], const double ya[], double x,
+-                       gsl_interp_accel * a);
+-
+-int
+-gsl_interp_eval_integ_e(const gsl_interp * obj,
+-                        const double xa[], const double ya[],
+-                        double a, double b,
+-                        gsl_interp_accel * acc,
+-                        double * result);
+-
+-double
+-gsl_interp_eval_integ(const gsl_interp * obj,
+-                      const double xa[], const double ya[],
+-                      double a, double b,
+-                      gsl_interp_accel * acc);
+-
+-void
+-gsl_interp_free(gsl_interp * interp);
+-
+-INLINE_DECL size_t
+-gsl_interp_bsearch(const double x_array[], double x,
+-                   size_t index_lo, size_t index_hi);
+-
+-#ifdef HAVE_INLINE
+-
+-/* Perform a binary search of an array of values.
+- * 
+- * The parameters index_lo and index_hi provide an initial bracket,
+- * and it is assumed that index_lo < index_hi. The resulting index
+- * is guaranteed to be strictly less than index_hi and greater than
+- * or equal to index_lo, so that the implicit bracket [index, index+1]
+- * always corresponds to a region within the implicit value range of
+- * the value array.
+- *
+- * Note that this means the relationship of 'x' to x_array[index]
+- * and x_array[index+1] depends on the result region, i.e. the
+- * behaviour at the boundaries may not correspond to what you
+- * expect. We have the following complete specification of the
+- * behaviour.
+- * Suppose the input is x_array[] = { x0, x1, ..., xN }
+- *    if ( x == x0 )           then  index == 0
+- *    if ( x > x0 && x <= x1 ) then  index == 0, and sim. for other interior pts
+- *    if ( x == xN )           then  index == N-1
+- *    if ( x > xN )            then  index == N-1
+- *    if ( x < x0 )            then  index == 0 
+- */
+-
+-INLINE_FUN size_t
+-gsl_interp_bsearch(const double x_array[], double x,
+-                   size_t index_lo, size_t index_hi)
+-{
+-  size_t ilo = index_lo;
+-  size_t ihi = index_hi;
+-  while(ihi > ilo + 1) {
+-    size_t i = (ihi + ilo)/2;
+-    if(x_array[i] > x)
+-      ihi = i;
+-    else
+-      ilo = i;
+-  }
+-  
+-  return ilo;
+-}
+-#endif
+-
+-INLINE_DECL size_t 
+-gsl_interp_accel_find(gsl_interp_accel * a, const double x_array[], size_t size, double x);
+-
+-#ifdef HAVE_INLINE
+-INLINE_FUN size_t
+-gsl_interp_accel_find(gsl_interp_accel * a, const double xa[], size_t len, double x)
+-{
+-  size_t x_index = a->cache;
+- 
+-  if(x < xa[x_index]) {
+-    a->miss_count++;
+-    a->cache = gsl_interp_bsearch(xa, x, 0, x_index);
+-  }
+-  else if(x >= xa[x_index + 1]) {
+-    a->miss_count++;
+-    a->cache = gsl_interp_bsearch(xa, x, x_index, len-1);
+-  }
+-  else {
+-    a->hit_count++;
+-  }
+-  
+-  return a->cache;
+-}
+-#endif /* HAVE_INLINE */
+-
+-
+-__END_DECLS
+-
+-#endif /* __GSL_INTERP_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_long_double.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_long_double.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_long_double.h	(revision 14079)
+@@ -1,65 +0,0 @@
+-/* block/gsl_block_long_double.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_BLOCK_LONG_DOUBLE_H__
+-#define __GSL_BLOCK_LONG_DOUBLE_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-struct gsl_block_long_double_struct
+-{
+-  size_t size;
+-  long double *data;
+-};
+-
+-typedef struct gsl_block_long_double_struct gsl_block_long_double;
+-
+-gsl_block_long_double *gsl_block_long_double_alloc (const size_t n);
+-gsl_block_long_double *gsl_block_long_double_calloc (const size_t n);
+-void gsl_block_long_double_free (gsl_block_long_double * b);
+-
+-int gsl_block_long_double_fread (FILE * stream, gsl_block_long_double * b);
+-int gsl_block_long_double_fwrite (FILE * stream, const gsl_block_long_double * b);
+-int gsl_block_long_double_fscanf (FILE * stream, gsl_block_long_double * b);
+-int gsl_block_long_double_fprintf (FILE * stream, const gsl_block_long_double * b, const char *format);
+-
+-int gsl_block_long_double_raw_fread (FILE * stream, long double * b, const size_t n, const size_t stride);
+-int gsl_block_long_double_raw_fwrite (FILE * stream, const long double * b, const size_t n, const size_t stride);
+-int gsl_block_long_double_raw_fscanf (FILE * stream, long double * b, const size_t n, const size_t stride);
+-int gsl_block_long_double_raw_fprintf (FILE * stream, const long double * b, const size_t n, const size_t stride, const char *format);
+-
+-size_t gsl_block_long_double_size (const gsl_block_long_double * b);
+-long double * gsl_block_long_double_data (const gsl_block_long_double * b);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_BLOCK_LONG_DOUBLE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_erf.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_erf.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_erf.h	(revision 14079)
+@@ -1,91 +0,0 @@
+-/* specfunc/gsl_sf_erf.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-/* Author:  G. Jungman */
+-
+-#ifndef __GSL_SF_ERF_H__
+-#define __GSL_SF_ERF_H__
+-
+-#include <gsl/gsl_sf_result.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-
+-/* Complementary Error Function
+- * erfc(x) := 2/Sqrt[Pi] Integrate[Exp[-t^2], {t,x,Infinity}]
+- *
+- * exceptions: none
+- */
+-int gsl_sf_erfc_e(double x, gsl_sf_result * result);
+-double gsl_sf_erfc(double x);
+-
+-
+-/* Log Complementary Error Function
+- *
+- * exceptions: none
+- */
+-int gsl_sf_log_erfc_e(double x, gsl_sf_result * result);
+-double gsl_sf_log_erfc(double x);
+-
+-
+-/* Error Function
+- * erf(x) := 2/Sqrt[Pi] Integrate[Exp[-t^2], {t,0,x}]
+- *
+- * exceptions: none
+- */
+-int gsl_sf_erf_e(double x, gsl_sf_result * result);
+-double gsl_sf_erf(double x);
+-
+-
+-/* Probability functions:
+- * Z(x) :  Abramowitz+Stegun 26.2.1
+- * Q(x) :  Abramowitz+Stegun 26.2.3
+- *
+- * exceptions: none
+- */
+-int gsl_sf_erf_Z_e(double x, gsl_sf_result * result);
+-int gsl_sf_erf_Q_e(double x, gsl_sf_result * result);
+-double gsl_sf_erf_Z(double x);
+-double gsl_sf_erf_Q(double x);
+-
+-
+-/* Hazard function, also known as the inverse Mill's ratio.
+- *
+- *   H(x) := Z(x)/Q(x)
+- *         = Sqrt[2/Pi] Exp[-x^2 / 2] / Erfc[x/Sqrt[2]]
+- *
+- * exceptions: GSL_EUNDRFLW
+- */
+-int gsl_sf_hazard_e(double x, gsl_sf_result * result);
+-double gsl_sf_hazard(double x);
+-
+-
+-__END_DECLS
+-
+-#endif /* __GSL_SF_ERF_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_ntuple.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_ntuple.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_ntuple.h	(revision 14079)
+@@ -1,82 +0,0 @@
+-/* histogram/ntuple.h
+- * 
+- * Copyright (C) 2000 Simone Piccardi
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- *
+- */
+-
+-/* Jan/2001 Modified by Brian Gough. Minor changes for GSL */
+-
+-#ifndef __GSL_NTUPLE_H__
+-#define __GSL_NTUPLE_H__
+-
+-#include <stdlib.h>
+-#include <stdio.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_histogram.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-typedef struct {
+-    FILE * file;
+-    void * ntuple_data;
+-    size_t size;
+-} gsl_ntuple;
+-
+-typedef struct {
+-  int (* function) (void * ntuple_data, void * params);
+-  void * params;
+-} gsl_ntuple_select_fn;
+-
+-typedef struct {
+-  double (* function) (void * ntuple_data, void * params);
+-  void * params;
+-} gsl_ntuple_value_fn;
+-
+-gsl_ntuple * 
+-gsl_ntuple_open (char * filename, void * ntuple_data, size_t size);
+-
+-gsl_ntuple * 
+-gsl_ntuple_create (char * filename, void * ntuple_data, size_t size);
+-
+-int gsl_ntuple_write (gsl_ntuple * ntuple);
+-int gsl_ntuple_read (gsl_ntuple * ntuple);
+-
+-int gsl_ntuple_bookdata (gsl_ntuple * ntuple);  /* synonym for write */
+-
+-int gsl_ntuple_project (gsl_histogram * h, gsl_ntuple * ntuple, 
+-                        gsl_ntuple_value_fn *value_func,
+-                        gsl_ntuple_select_fn *select_func);
+-
+-int gsl_ntuple_close (gsl_ntuple * ntuple);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_NTUPLE_H__ */
+-
+-
+-
+-
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_pow_int.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_pow_int.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_pow_int.h	(revision 14079)
+@@ -1,49 +0,0 @@
+-/* specfunc/gsl_sf_pow_int.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-/* Author:  G. Jungman */
+-
+-#ifndef __GSL_SF_POW_INT_H__
+-#define __GSL_SF_POW_INT_H__
+-
+-#include <gsl/gsl_sf_result.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-
+-/* Calculate x^n.
+- * Does not check for overflow/underflow.
+- */
+-int     gsl_sf_pow_int_e(double x, int n, gsl_sf_result * result);
+-double  gsl_sf_pow_int(const double x, const int n);
+-
+-
+-__END_DECLS
+-
+-#endif /* __GSL_SF_POW_INT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_ushort.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_ushort.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_ushort.h	(revision 14079)
+@@ -1,45 +0,0 @@
+-/* permutation/gsl_permute_vector_ushort.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_PERMUTE_VECTOR_USHORT_H__
+-#define __GSL_PERMUTE_VECTOR_USHORT_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_permutation.h>
+-#include <gsl/gsl_vector_ushort.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-int gsl_permute_vector_ushort (const gsl_permutation * p, gsl_vector_ushort * v);
+-int gsl_permute_vector_ushort_inverse (const gsl_permutation * p, gsl_vector_ushort * v);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_PERMUTE_VECTOR_USHORT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_siman.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_siman.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_siman.h	(revision 14079)
+@@ -1,82 +0,0 @@
+-/* siman/gsl_siman.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000 Mark Galassi
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_SIMAN_H__
+-#define __GSL_SIMAN_H__
+-#include <stdlib.h>
+-#include <gsl/gsl_rng.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-/* types for the function pointers passed to gsl_siman_solve */
+-
+-typedef double (*gsl_siman_Efunc_t) (void *xp);
+-typedef void (*gsl_siman_step_t) (const gsl_rng *r, void *xp, double step_size);
+-typedef double (*gsl_siman_metric_t) (void *xp, void *yp);
+-typedef void (*gsl_siman_print_t) (void *xp);
+-typedef void (*gsl_siman_copy_t) (void *source, void *dest);
+-typedef void * (*gsl_siman_copy_construct_t) (void *xp);
+-typedef void (*gsl_siman_destroy_t) (void *xp);
+-
+-/* this structure contains all the information needed to structure the
+-   search, beyond the energy function, the step function and the
+-   initial guess. */
+-
+-typedef struct {
+-  int n_tries;          /* how many points to try for each step */
+-  int iters_fixed_T;    /* how many iterations at each temperature? */
+-  double step_size;     /* max step size in the random walk */
+-  /* the following parameters are for the Boltzmann distribution */
+-  double k, t_initial, mu_t, t_min;
+-} gsl_siman_params_t;
+-
+-/* prototype for the workhorse function */
+-
+-void gsl_siman_solve(const gsl_rng * r, 
+-                     void *x0_p, gsl_siman_Efunc_t Ef,
+-                     gsl_siman_step_t take_step,
+-                     gsl_siman_metric_t distance,
+-                     gsl_siman_print_t print_position,
+-                     gsl_siman_copy_t copyfunc,
+-                     gsl_siman_copy_construct_t copy_constructor,
+-                     gsl_siman_destroy_t destructor,
+-                     size_t element_size,
+-                     gsl_siman_params_t params);
+-
+-void 
+-gsl_siman_solve_many (const gsl_rng * r, void *x0_p, gsl_siman_Efunc_t Ef,
+-                      gsl_siman_step_t take_step,
+-                      gsl_siman_metric_t distance,
+-                      gsl_siman_print_t print_position,
+-                      size_t element_size,
+-                      gsl_siman_params_t params);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_SIMAN_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_ellint.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_ellint.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_ellint.h	(revision 14079)
+@@ -1,112 +0,0 @@
+-/* specfunc/gsl_sf_ellint.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-/* Author: G. Jungman */
+-
+-#ifndef __GSL_SF_ELLINT_H__
+-#define __GSL_SF_ELLINT_H__
+-
+-#include <gsl/gsl_mode.h>
+-#include <gsl/gsl_sf_result.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-
+-/* Legendre form of complete elliptic integrals
+- *
+- * K(k) = Integral[1/Sqrt[1 - k^2 Sin[t]^2], {t, 0, Pi/2}]
+- * E(k) = Integral[  Sqrt[1 - k^2 Sin[t]^2], {t, 0, Pi/2}]
+- *
+- * exceptions: GSL_EDOM
+- */
+-int gsl_sf_ellint_Kcomp_e(double k, gsl_mode_t mode, gsl_sf_result * result);
+-double gsl_sf_ellint_Kcomp(double k, gsl_mode_t mode);
+-
+-int gsl_sf_ellint_Ecomp_e(double k, gsl_mode_t mode, gsl_sf_result * result);
+-double gsl_sf_ellint_Ecomp(double k, gsl_mode_t mode);
+-
+-int gsl_sf_ellint_Pcomp_e(double k, double n, gsl_mode_t mode, gsl_sf_result * result);
+-double gsl_sf_ellint_Pcomp(double k, double n, gsl_mode_t mode);
+-
+-int gsl_sf_ellint_Dcomp_e(double k, gsl_mode_t mode, gsl_sf_result * result);
+-double gsl_sf_ellint_Dcomp(double k, gsl_mode_t mode);
+-
+-
+-/* Legendre form of incomplete elliptic integrals
+- *
+- * F(phi,k)   = Integral[1/Sqrt[1 - k^2 Sin[t]^2], {t, 0, phi}]
+- * E(phi,k)   = Integral[  Sqrt[1 - k^2 Sin[t]^2], {t, 0, phi}]
+- * P(phi,k,n) = Integral[(1 + n Sin[t]^2)^(-1)/Sqrt[1 - k^2 Sin[t]^2], {t, 0, phi}]
+- * D(phi,k,n) = R_D(1-Sin[phi]^2, 1-k^2 Sin[phi]^2, 1.0)
+- *
+- * F: [Carlson, Numerische Mathematik 33 (1979) 1, (4.1)]
+- * E: [Carlson, ", (4.2)]
+- * P: [Carlson, ", (4.3)]
+- * D: [Carlson, ", (4.4)]
+- *
+- * exceptions: GSL_EDOM
+- */
+-int gsl_sf_ellint_F_e(double phi, double k, gsl_mode_t mode, gsl_sf_result * result);
+-double gsl_sf_ellint_F(double phi, double k, gsl_mode_t mode);
+-
+-int gsl_sf_ellint_E_e(double phi, double k, gsl_mode_t mode, gsl_sf_result * result);
+-double gsl_sf_ellint_E(double phi, double k, gsl_mode_t mode);
+-
+-int gsl_sf_ellint_P_e(double phi, double k, double n, gsl_mode_t mode, gsl_sf_result * result);
+-double gsl_sf_ellint_P(double phi, double k, double n, gsl_mode_t mode);
+-
+-int gsl_sf_ellint_D_e(double phi, double k, double n, gsl_mode_t mode, gsl_sf_result * result);
+-double gsl_sf_ellint_D(double phi, double k, double n, gsl_mode_t mode);
+-
+-
+-/* Carlson's symmetric basis of functions
+- *
+- * RC(x,y)   = 1/2 Integral[(t+x)^(-1/2) (t+y)^(-1)], {t,0,Inf}]
+- * RD(x,y,z) = 3/2 Integral[(t+x)^(-1/2) (t+y)^(-1/2) (t+z)^(-3/2), {t,0,Inf}]
+- * RF(x,y,z) = 1/2 Integral[(t+x)^(-1/2) (t+y)^(-1/2) (t+z)^(-1/2), {t,0,Inf}]
+- * RJ(x,y,z,p) = 3/2 Integral[(t+x)^(-1/2) (t+y)^(-1/2) (t+z)^(-1/2) (t+p)^(-1), {t,0,Inf}]
+- *
+- * exceptions: GSL_EDOM
+- */
+-int gsl_sf_ellint_RC_e(double x, double y, gsl_mode_t mode, gsl_sf_result * result);
+-double gsl_sf_ellint_RC(double x, double y, gsl_mode_t mode);
+-
+-int gsl_sf_ellint_RD_e(double x, double y, double z, gsl_mode_t mode, gsl_sf_result * result);
+-double gsl_sf_ellint_RD(double x, double y, double z, gsl_mode_t mode);
+-
+-int gsl_sf_ellint_RF_e(double x, double y, double z, gsl_mode_t mode, gsl_sf_result * result);
+-double gsl_sf_ellint_RF(double x, double y, double z, gsl_mode_t mode);
+-
+-int gsl_sf_ellint_RJ_e(double x, double y, double z, double p, gsl_mode_t mode, gsl_sf_result * result);
+-double gsl_sf_ellint_RJ(double x, double y, double z, double p, gsl_mode_t mode);
+-
+-
+-__END_DECLS
+-
+-#endif /* __GSL_SF_ELLINT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_complex_float.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_complex_float.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_complex_float.h	(revision 14079)
+@@ -1,351 +0,0 @@
+-/* matrix/gsl_matrix_complex_float.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_MATRIX_COMPLEX_FLOAT_H__
+-#define __GSL_MATRIX_COMPLEX_FLOAT_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_types.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_complex.h>
+-#include <gsl/gsl_check_range.h>
+-#include <gsl/gsl_vector_complex_float.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-typedef struct 
+-{
+-  size_t size1;
+-  size_t size2;
+-  size_t tda;
+-  float * data;
+-  gsl_block_complex_float * block;
+-  int owner;
+-} gsl_matrix_complex_float ;
+-
+-typedef struct
+-{
+-  gsl_matrix_complex_float matrix;
+-} _gsl_matrix_complex_float_view;
+-
+-typedef _gsl_matrix_complex_float_view gsl_matrix_complex_float_view;
+-
+-typedef struct
+-{
+-  gsl_matrix_complex_float matrix;
+-} _gsl_matrix_complex_float_const_view;
+-
+-typedef const _gsl_matrix_complex_float_const_view gsl_matrix_complex_float_const_view;
+-
+-
+-/* Allocation */
+-
+-gsl_matrix_complex_float * 
+-gsl_matrix_complex_float_alloc (const size_t n1, const size_t n2);
+-
+-gsl_matrix_complex_float * 
+-gsl_matrix_complex_float_calloc (const size_t n1, const size_t n2);
+-
+-gsl_matrix_complex_float * 
+-gsl_matrix_complex_float_alloc_from_block (gsl_block_complex_float * b, 
+-                                           const size_t offset, 
+-                                           const size_t n1, const size_t n2, const size_t d2);
+-
+-gsl_matrix_complex_float * 
+-gsl_matrix_complex_float_alloc_from_matrix (gsl_matrix_complex_float * b,
+-                                            const size_t k1, const size_t k2,
+-                                            const size_t n1, const size_t n2);
+-
+-gsl_vector_complex_float * 
+-gsl_vector_complex_float_alloc_row_from_matrix (gsl_matrix_complex_float * m,
+-                                                const size_t i);
+-
+-gsl_vector_complex_float * 
+-gsl_vector_complex_float_alloc_col_from_matrix (gsl_matrix_complex_float * m,
+-                                                const size_t j);
+-
+-void gsl_matrix_complex_float_free (gsl_matrix_complex_float * m);
+-
+-/* Views */
+-
+-_gsl_matrix_complex_float_view 
+-gsl_matrix_complex_float_submatrix (gsl_matrix_complex_float * m, 
+-                            const size_t i, const size_t j, 
+-                            const size_t n1, const size_t n2);
+-
+-_gsl_vector_complex_float_view 
+-gsl_matrix_complex_float_row (gsl_matrix_complex_float * m, const size_t i);
+-
+-_gsl_vector_complex_float_view 
+-gsl_matrix_complex_float_column (gsl_matrix_complex_float * m, const size_t j);
+-
+-_gsl_vector_complex_float_view 
+-gsl_matrix_complex_float_diagonal (gsl_matrix_complex_float * m);
+-
+-_gsl_vector_complex_float_view 
+-gsl_matrix_complex_float_subdiagonal (gsl_matrix_complex_float * m, const size_t k);
+-
+-_gsl_vector_complex_float_view 
+-gsl_matrix_complex_float_superdiagonal (gsl_matrix_complex_float * m, const size_t k);
+-
+-_gsl_vector_complex_float_view
+-gsl_matrix_complex_float_subrow (gsl_matrix_complex_float * m,
+-                                 const size_t i, const size_t offset,
+-                                 const size_t n);
+-
+-_gsl_vector_complex_float_view
+-gsl_matrix_complex_float_subcolumn (gsl_matrix_complex_float * m,
+-                                    const size_t j, const size_t offset,
+-                                    const size_t n);
+-
+-_gsl_matrix_complex_float_view
+-gsl_matrix_complex_float_view_array (float * base,
+-                             const size_t n1, 
+-                             const size_t n2);
+-
+-_gsl_matrix_complex_float_view
+-gsl_matrix_complex_float_view_array_with_tda (float * base, 
+-                                      const size_t n1, 
+-                                      const size_t n2,
+-                                      const size_t tda);
+-
+-_gsl_matrix_complex_float_view
+-gsl_matrix_complex_float_view_vector (gsl_vector_complex_float * v,
+-                              const size_t n1, 
+-                              const size_t n2);
+-
+-_gsl_matrix_complex_float_view
+-gsl_matrix_complex_float_view_vector_with_tda (gsl_vector_complex_float * v,
+-                                       const size_t n1, 
+-                                       const size_t n2,
+-                                       const size_t tda);
+-
+-
+-_gsl_matrix_complex_float_const_view 
+-gsl_matrix_complex_float_const_submatrix (const gsl_matrix_complex_float * m, 
+-                                  const size_t i, const size_t j, 
+-                                  const size_t n1, const size_t n2);
+-
+-_gsl_vector_complex_float_const_view 
+-gsl_matrix_complex_float_const_row (const gsl_matrix_complex_float * m, 
+-                            const size_t i);
+-
+-_gsl_vector_complex_float_const_view 
+-gsl_matrix_complex_float_const_column (const gsl_matrix_complex_float * m, 
+-                               const size_t j);
+-
+-_gsl_vector_complex_float_const_view
+-gsl_matrix_complex_float_const_diagonal (const gsl_matrix_complex_float * m);
+-
+-_gsl_vector_complex_float_const_view 
+-gsl_matrix_complex_float_const_subdiagonal (const gsl_matrix_complex_float * m, 
+-                                    const size_t k);
+-
+-_gsl_vector_complex_float_const_view 
+-gsl_matrix_complex_float_const_superdiagonal (const gsl_matrix_complex_float * m, 
+-                                      const size_t k);
+-
+-_gsl_vector_complex_float_const_view
+-gsl_matrix_complex_float_const_subrow (const gsl_matrix_complex_float * m,
+-                                       const size_t i, const size_t offset,
+-                                       const size_t n);
+-
+-_gsl_vector_complex_float_const_view
+-gsl_matrix_complex_float_const_subcolumn (const gsl_matrix_complex_float * m,
+-                                          const size_t j, const size_t offset,
+-                                          const size_t n);
+-
+-_gsl_matrix_complex_float_const_view
+-gsl_matrix_complex_float_const_view_array (const float * base,
+-                                   const size_t n1, 
+-                                   const size_t n2);
+-
+-_gsl_matrix_complex_float_const_view
+-gsl_matrix_complex_float_const_view_array_with_tda (const float * base, 
+-                                            const size_t n1, 
+-                                            const size_t n2,
+-                                            const size_t tda);
+-
+-_gsl_matrix_complex_float_const_view
+-gsl_matrix_complex_float_const_view_vector (const gsl_vector_complex_float * v,
+-                                    const size_t n1, 
+-                                    const size_t n2);
+-
+-_gsl_matrix_complex_float_const_view
+-gsl_matrix_complex_float_const_view_vector_with_tda (const gsl_vector_complex_float * v,
+-                                             const size_t n1, 
+-                                             const size_t n2,
+-                                             const size_t tda);
+-
+-/* Operations */
+-
+-void gsl_matrix_complex_float_set_zero (gsl_matrix_complex_float * m);
+-void gsl_matrix_complex_float_set_identity (gsl_matrix_complex_float * m);
+-void gsl_matrix_complex_float_set_all (gsl_matrix_complex_float * m, gsl_complex_float x);
+-
+-int gsl_matrix_complex_float_fread (FILE * stream, gsl_matrix_complex_float * m) ;
+-int gsl_matrix_complex_float_fwrite (FILE * stream, const gsl_matrix_complex_float * m) ;
+-int gsl_matrix_complex_float_fscanf (FILE * stream, gsl_matrix_complex_float * m);
+-int gsl_matrix_complex_float_fprintf (FILE * stream, const gsl_matrix_complex_float * m, const char * format);
+-
+-int gsl_matrix_complex_float_memcpy(gsl_matrix_complex_float * dest, const gsl_matrix_complex_float * src);
+-int gsl_matrix_complex_float_swap(gsl_matrix_complex_float * m1, gsl_matrix_complex_float * m2);
+-
+-int gsl_matrix_complex_float_swap_rows(gsl_matrix_complex_float * m, const size_t i, const size_t j);
+-int gsl_matrix_complex_float_swap_columns(gsl_matrix_complex_float * m, const size_t i, const size_t j);
+-int gsl_matrix_complex_float_swap_rowcol(gsl_matrix_complex_float * m, const size_t i, const size_t j);
+-
+-int gsl_matrix_complex_float_transpose (gsl_matrix_complex_float * m);
+-int gsl_matrix_complex_float_transpose_memcpy (gsl_matrix_complex_float * dest, const gsl_matrix_complex_float * src);
+-
+-int gsl_matrix_complex_float_equal (const gsl_matrix_complex_float * a, const gsl_matrix_complex_float * b);
+-
+-int gsl_matrix_complex_float_isnull (const gsl_matrix_complex_float * m);
+-int gsl_matrix_complex_float_ispos (const gsl_matrix_complex_float * m);
+-int gsl_matrix_complex_float_isneg (const gsl_matrix_complex_float * m);
+-int gsl_matrix_complex_float_isnonneg (const gsl_matrix_complex_float * m);
+-
+-int gsl_matrix_complex_float_add (gsl_matrix_complex_float * a, const gsl_matrix_complex_float * b);
+-int gsl_matrix_complex_float_sub (gsl_matrix_complex_float * a, const gsl_matrix_complex_float * b);
+-int gsl_matrix_complex_float_mul_elements (gsl_matrix_complex_float * a, const gsl_matrix_complex_float * b);
+-int gsl_matrix_complex_float_div_elements (gsl_matrix_complex_float * a, const gsl_matrix_complex_float * b);
+-int gsl_matrix_complex_float_scale (gsl_matrix_complex_float * a, const gsl_complex_float x);
+-int gsl_matrix_complex_float_add_constant (gsl_matrix_complex_float * a, const gsl_complex_float x);
+-int gsl_matrix_complex_float_add_diagonal (gsl_matrix_complex_float * a, const gsl_complex_float x);
+-
+-/***********************************************************************/
+-/* The functions below are obsolete                                    */
+-/***********************************************************************/
+-int gsl_matrix_complex_float_get_row(gsl_vector_complex_float * v, const gsl_matrix_complex_float * m, const size_t i);
+-int gsl_matrix_complex_float_get_col(gsl_vector_complex_float * v, const gsl_matrix_complex_float * m, const size_t j);
+-int gsl_matrix_complex_float_set_row(gsl_matrix_complex_float * m, const size_t i, const gsl_vector_complex_float * v);
+-int gsl_matrix_complex_float_set_col(gsl_matrix_complex_float * m, const size_t j, const gsl_vector_complex_float * v);
+-/***********************************************************************/
+-
+-/* inline functions if you are using GCC */
+-
+-INLINE_DECL gsl_complex_float gsl_matrix_complex_float_get(const gsl_matrix_complex_float * m, const size_t i, const size_t j);
+-INLINE_DECL void gsl_matrix_complex_float_set(gsl_matrix_complex_float * m, const size_t i, const size_t j, const gsl_complex_float x);
+-
+-INLINE_DECL gsl_complex_float * gsl_matrix_complex_float_ptr(gsl_matrix_complex_float * m, const size_t i, const size_t j);
+-INLINE_DECL const gsl_complex_float * gsl_matrix_complex_float_const_ptr(const gsl_matrix_complex_float * m, const size_t i, const size_t j);
+-
+-#ifdef HAVE_INLINE
+-
+-INLINE_FUN 
+-gsl_complex_float
+-gsl_matrix_complex_float_get(const gsl_matrix_complex_float * m, 
+-                     const size_t i, const size_t j)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(1)) 
+-    {
+-      gsl_complex_float zero = {{0,0}};
+-
+-      if (i >= m->size1)
+-        {
+-          GSL_ERROR_VAL("first index out of range", GSL_EINVAL, zero) ;
+-        }
+-      else if (j >= m->size2)
+-        {
+-          GSL_ERROR_VAL("second index out of range", GSL_EINVAL, zero) ;
+-        }
+-    }
+-#endif
+-  return *(gsl_complex_float *)(m->data + 2*(i * m->tda + j)) ;
+-} 
+-
+-INLINE_FUN 
+-void
+-gsl_matrix_complex_float_set(gsl_matrix_complex_float * m, 
+-                     const size_t i, const size_t j, const gsl_complex_float x)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(1)) 
+-    {
+-      if (i >= m->size1)
+-        {
+-          GSL_ERROR_VOID("first index out of range", GSL_EINVAL) ;
+-        }
+-      else if (j >= m->size2)
+-        {
+-          GSL_ERROR_VOID("second index out of range", GSL_EINVAL) ;
+-        }
+-    }
+-#endif
+-  *(gsl_complex_float *)(m->data + 2*(i * m->tda + j)) = x ;
+-}
+-
+-INLINE_FUN 
+-gsl_complex_float *
+-gsl_matrix_complex_float_ptr(gsl_matrix_complex_float * m, 
+-                             const size_t i, const size_t j)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(1)) 
+-    {
+-      if (i >= m->size1)
+-        {
+-          GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
+-        }
+-      else if (j >= m->size2)
+-        {
+-          GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
+-        }
+-    }
+-#endif
+-  return (gsl_complex_float *)(m->data + 2*(i * m->tda + j)) ;
+-} 
+-
+-INLINE_FUN 
+-const gsl_complex_float *
+-gsl_matrix_complex_float_const_ptr(const gsl_matrix_complex_float * m, 
+-                                   const size_t i, const size_t j)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(1)) 
+-    {
+-      if (i >= m->size1)
+-        {
+-          GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
+-        }
+-      else if (j >= m->size2)
+-        {
+-          GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
+-        }
+-    }
+-#endif
+-  return (const gsl_complex_float *)(m->data + 2*(i * m->tda + j)) ;
+-} 
+-
+-#endif /* HAVE_INLINE */
+-
+-__END_DECLS
+-
+-#endif /* __GSL_MATRIX_COMPLEX_FLOAT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_debye.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_debye.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_debye.h	(revision 14079)
+@@ -1,91 +0,0 @@
+-/* specfunc/gsl_sf_debye.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-/* Author:  G. Jungman */
+-/* augmented by D_5(x) and D_6(x) by Richard J. Mathar, 2005-11-08 */
+-
+-#ifndef __GSL_SF_DEBYE_H__
+-#define __GSL_SF_DEBYE_H__
+-
+-#include <gsl/gsl_sf_result.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-
+-/* D_n(x) := n/x^n Integrate[t^n/(e^t - 1), {t,0,x}] */
+-
+-/* D_1(x)
+- *
+- * exceptions: GSL_EDOM
+- */
+-int     gsl_sf_debye_1_e(const double x, gsl_sf_result * result);
+-double     gsl_sf_debye_1(const double x);
+-
+-
+-/* D_2(x)
+- *
+- * exceptions: GSL_EDOM, GSL_EUNDRFLW
+- */
+-int     gsl_sf_debye_2_e(const double x, gsl_sf_result * result);
+-double     gsl_sf_debye_2(const double x);
+-
+-
+-/* D_3(x)
+- *
+- * exceptions: GSL_EDOM, GSL_EUNDRFLW
+- */
+-int     gsl_sf_debye_3_e(const double x, gsl_sf_result * result);
+-double     gsl_sf_debye_3(const double x);
+-
+-
+-/* D_4(x)
+- *
+- * exceptions: GSL_EDOM, GSL_EUNDRFLW
+- */
+-int     gsl_sf_debye_4_e(const double x, gsl_sf_result * result);
+-double     gsl_sf_debye_4(const double x);
+-
+-/* D_5(x)
+- *
+- * exceptions: GSL_EDOM, GSL_EUNDRFLW
+- */
+-int     gsl_sf_debye_5_e(const double x, gsl_sf_result * result);
+-double     gsl_sf_debye_5(const double x);
+-
+-/* D_6(x)
+- *
+- * exceptions: GSL_EDOM, GSL_EUNDRFLW
+- */
+-int     gsl_sf_debye_6_e(const double x, gsl_sf_result * result);
+-double     gsl_sf_debye_6(const double x);
+-
+-
+-__END_DECLS
+-
+-#endif /* __GSL_SF_DEBYE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_short.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_short.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_short.h	(revision 14079)
+@@ -1,230 +0,0 @@
+-/* vector/gsl_vector_short.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_VECTOR_SHORT_H__
+-#define __GSL_VECTOR_SHORT_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_types.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_inline.h>
+-#include <gsl/gsl_check_range.h>
+-#include <gsl/gsl_block_short.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-typedef struct 
+-{
+-  size_t size;
+-  size_t stride;
+-  short *data;
+-  gsl_block_short *block;
+-  int owner;
+-} 
+-gsl_vector_short;
+-
+-typedef struct
+-{
+-  gsl_vector_short vector;
+-} _gsl_vector_short_view;
+-
+-typedef _gsl_vector_short_view gsl_vector_short_view;
+-
+-typedef struct
+-{
+-  gsl_vector_short vector;
+-} _gsl_vector_short_const_view;
+-
+-typedef const _gsl_vector_short_const_view gsl_vector_short_const_view;
+-
+-
+-/* Allocation */
+-
+-gsl_vector_short *gsl_vector_short_alloc (const size_t n);
+-gsl_vector_short *gsl_vector_short_calloc (const size_t n);
+-
+-gsl_vector_short *gsl_vector_short_alloc_from_block (gsl_block_short * b,
+-                                                     const size_t offset, 
+-                                                     const size_t n, 
+-                                                     const size_t stride);
+-
+-gsl_vector_short *gsl_vector_short_alloc_from_vector (gsl_vector_short * v,
+-                                                      const size_t offset, 
+-                                                      const size_t n, 
+-                                                      const size_t stride);
+-
+-void gsl_vector_short_free (gsl_vector_short * v);
+-
+-/* Views */
+-
+-_gsl_vector_short_view 
+-gsl_vector_short_view_array (short *v, size_t n);
+-
+-_gsl_vector_short_view 
+-gsl_vector_short_view_array_with_stride (short *base,
+-                                         size_t stride,
+-                                         size_t n);
+-
+-_gsl_vector_short_const_view 
+-gsl_vector_short_const_view_array (const short *v, size_t n);
+-
+-_gsl_vector_short_const_view 
+-gsl_vector_short_const_view_array_with_stride (const short *base,
+-                                               size_t stride,
+-                                               size_t n);
+-
+-_gsl_vector_short_view 
+-gsl_vector_short_subvector (gsl_vector_short *v, 
+-                            size_t i, 
+-                            size_t n);
+-
+-_gsl_vector_short_view 
+-gsl_vector_short_subvector_with_stride (gsl_vector_short *v, 
+-                                        size_t i,
+-                                        size_t stride,
+-                                        size_t n);
+-
+-_gsl_vector_short_const_view 
+-gsl_vector_short_const_subvector (const gsl_vector_short *v, 
+-                                  size_t i, 
+-                                  size_t n);
+-
+-_gsl_vector_short_const_view 
+-gsl_vector_short_const_subvector_with_stride (const gsl_vector_short *v, 
+-                                              size_t i, 
+-                                              size_t stride,
+-                                              size_t n);
+-
+-/* Operations */
+-
+-void gsl_vector_short_set_zero (gsl_vector_short * v);
+-void gsl_vector_short_set_all (gsl_vector_short * v, short x);
+-int gsl_vector_short_set_basis (gsl_vector_short * v, size_t i);
+-
+-int gsl_vector_short_fread (FILE * stream, gsl_vector_short * v);
+-int gsl_vector_short_fwrite (FILE * stream, const gsl_vector_short * v);
+-int gsl_vector_short_fscanf (FILE * stream, gsl_vector_short * v);
+-int gsl_vector_short_fprintf (FILE * stream, const gsl_vector_short * v,
+-                              const char *format);
+-
+-int gsl_vector_short_memcpy (gsl_vector_short * dest, const gsl_vector_short * src);
+-
+-int gsl_vector_short_reverse (gsl_vector_short * v);
+-
+-int gsl_vector_short_swap (gsl_vector_short * v, gsl_vector_short * w);
+-int gsl_vector_short_swap_elements (gsl_vector_short * v, const size_t i, const size_t j);
+-
+-short gsl_vector_short_max (const gsl_vector_short * v);
+-short gsl_vector_short_min (const gsl_vector_short * v);
+-void gsl_vector_short_minmax (const gsl_vector_short * v, short * min_out, short * max_out);
+-
+-size_t gsl_vector_short_max_index (const gsl_vector_short * v);
+-size_t gsl_vector_short_min_index (const gsl_vector_short * v);
+-void gsl_vector_short_minmax_index (const gsl_vector_short * v, size_t * imin, size_t * imax);
+-
+-int gsl_vector_short_add (gsl_vector_short * a, const gsl_vector_short * b);
+-int gsl_vector_short_sub (gsl_vector_short * a, const gsl_vector_short * b);
+-int gsl_vector_short_mul (gsl_vector_short * a, const gsl_vector_short * b);
+-int gsl_vector_short_div (gsl_vector_short * a, const gsl_vector_short * b);
+-int gsl_vector_short_scale (gsl_vector_short * a, const double x);
+-int gsl_vector_short_add_constant (gsl_vector_short * a, const double x);
+-
+-int gsl_vector_short_equal (const gsl_vector_short * u, 
+-                            const gsl_vector_short * v);
+-
+-int gsl_vector_short_isnull (const gsl_vector_short * v);
+-int gsl_vector_short_ispos (const gsl_vector_short * v);
+-int gsl_vector_short_isneg (const gsl_vector_short * v);
+-int gsl_vector_short_isnonneg (const gsl_vector_short * v);
+-
+-INLINE_DECL short gsl_vector_short_get (const gsl_vector_short * v, const size_t i);
+-INLINE_DECL void gsl_vector_short_set (gsl_vector_short * v, const size_t i, short x);
+-INLINE_DECL short * gsl_vector_short_ptr (gsl_vector_short * v, const size_t i);
+-INLINE_DECL const short * gsl_vector_short_const_ptr (const gsl_vector_short * v, const size_t i);
+-
+-#ifdef HAVE_INLINE
+-
+-INLINE_FUN
+-short
+-gsl_vector_short_get (const gsl_vector_short * v, const size_t i)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(i >= v->size))
+-    {
+-      GSL_ERROR_VAL ("index out of range", GSL_EINVAL, 0);
+-    }
+-#endif
+-  return v->data[i * v->stride];
+-}
+-
+-INLINE_FUN
+-void
+-gsl_vector_short_set (gsl_vector_short * v, const size_t i, short x)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(i >= v->size))
+-    {
+-      GSL_ERROR_VOID ("index out of range", GSL_EINVAL);
+-    }
+-#endif
+-  v->data[i * v->stride] = x;
+-}
+-
+-INLINE_FUN
+-short *
+-gsl_vector_short_ptr (gsl_vector_short * v, const size_t i)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(i >= v->size))
+-    {
+-      GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
+-    }
+-#endif
+-  return (short *) (v->data + i * v->stride);
+-}
+-
+-INLINE_FUN
+-const short *
+-gsl_vector_short_const_ptr (const gsl_vector_short * v, const size_t i)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(i >= v->size))
+-    {
+-      GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
+-    }
+-#endif
+-  return (const short *) (v->data + i * v->stride);
+-}
+-#endif /* HAVE_INLINE */
+-
+-__END_DECLS
+-
+-#endif /* __GSL_VECTOR_SHORT_H__ */
+-
+-
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_blas.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_blas.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_blas.h	(revision 14079)
+@@ -1,602 +0,0 @@
+-/* blas/gsl_blas.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-/*
+- * Author:  G. Jungman
+- */
+-#ifndef __GSL_BLAS_H__
+-#define __GSL_BLAS_H__
+-
+-#include <gsl/gsl_vector.h>
+-#include <gsl/gsl_matrix.h>
+-
+-#include <gsl/gsl_blas_types.h>
+-
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-
+-/* ========================================================================
+- * Level 1
+- * ========================================================================
+- */
+-
+-int gsl_blas_sdsdot (float alpha,
+-                     const gsl_vector_float * X,
+-                     const gsl_vector_float * Y,
+-                     float * result
+-                     );
+-
+-int gsl_blas_dsdot (const gsl_vector_float * X,
+-                    const gsl_vector_float * Y,
+-                    double * result
+-                    );
+-
+-int gsl_blas_sdot (const gsl_vector_float * X,
+-                   const gsl_vector_float * Y,
+-                   float * result
+-                   );
+-
+-int gsl_blas_ddot (const gsl_vector * X,
+-                   const gsl_vector * Y,
+-                   double * result
+-                   );
+-
+-
+-int  gsl_blas_cdotu (const gsl_vector_complex_float * X,
+-                     const gsl_vector_complex_float * Y,
+-                     gsl_complex_float * dotu);
+-
+-int  gsl_blas_cdotc (const gsl_vector_complex_float * X,
+-                     const gsl_vector_complex_float * Y,
+-                     gsl_complex_float * dotc);
+-
+-int  gsl_blas_zdotu (const gsl_vector_complex * X,
+-                     const gsl_vector_complex * Y,
+-                     gsl_complex * dotu);
+-
+-int  gsl_blas_zdotc (const gsl_vector_complex * X,
+-                     const gsl_vector_complex * Y,
+-                     gsl_complex * dotc);
+-
+-
+-float  gsl_blas_snrm2  (const gsl_vector_float * X);
+-float  gsl_blas_sasum  (const gsl_vector_float * X);
+-double gsl_blas_dnrm2  (const gsl_vector * X);
+-double gsl_blas_dasum  (const gsl_vector * X);
+-float  gsl_blas_scnrm2 (const gsl_vector_complex_float * X);
+-float  gsl_blas_scasum (const gsl_vector_complex_float * X);
+-double gsl_blas_dznrm2 (const gsl_vector_complex * X);
+-double gsl_blas_dzasum (const gsl_vector_complex * X);
+-
+-
+-CBLAS_INDEX_t gsl_blas_isamax (const gsl_vector_float * X);
+-CBLAS_INDEX_t gsl_blas_idamax (const gsl_vector * X);
+-CBLAS_INDEX_t gsl_blas_icamax (const gsl_vector_complex_float * X);
+-CBLAS_INDEX_t gsl_blas_izamax (const gsl_vector_complex * X);
+-
+-
+-int  gsl_blas_sswap (gsl_vector_float * X,
+-                     gsl_vector_float * Y);
+-
+-int  gsl_blas_scopy (const gsl_vector_float * X,
+-                     gsl_vector_float * Y);
+-
+-int  gsl_blas_saxpy (float alpha,
+-                     const gsl_vector_float * X,
+-                     gsl_vector_float * Y);
+-
+-int  gsl_blas_dswap (gsl_vector * X,
+-                     gsl_vector * Y);
+-
+-int  gsl_blas_dcopy (const gsl_vector * X,
+-                     gsl_vector * Y);
+-
+-int  gsl_blas_daxpy (double alpha,
+-                     const gsl_vector * X,
+-                     gsl_vector * Y);
+-
+-int  gsl_blas_cswap (gsl_vector_complex_float * X,
+-                     gsl_vector_complex_float * Y);
+-
+-int  gsl_blas_ccopy (const gsl_vector_complex_float * X,
+-                     gsl_vector_complex_float * Y);
+-
+-int  gsl_blas_caxpy (const gsl_complex_float alpha,
+-                     const gsl_vector_complex_float * X,
+-                     gsl_vector_complex_float * Y);
+-
+-int  gsl_blas_zswap (gsl_vector_complex * X,
+-                     gsl_vector_complex * Y);
+-
+-int  gsl_blas_zcopy (const gsl_vector_complex * X,
+-                     gsl_vector_complex * Y);
+-
+-int  gsl_blas_zaxpy (const gsl_complex alpha,
+-                     const gsl_vector_complex * X,
+-                     gsl_vector_complex * Y);
+-
+-
+-int  gsl_blas_srotg (float a[], float b[], float c[], float s[]);
+-
+-int  gsl_blas_srotmg (float d1[], float d2[], float b1[], float b2, float P[]);
+-
+-int  gsl_blas_srot (gsl_vector_float * X,
+-                    gsl_vector_float * Y,
+-                    float c, float s);
+-
+-int  gsl_blas_srotm (gsl_vector_float * X,
+-                     gsl_vector_float * Y,
+-                     const float P[]);
+-
+-int  gsl_blas_drotg (double a[], double b[], double c[], double s[]);
+-
+-int  gsl_blas_drotmg (double d1[], double d2[], double b1[],
+-                      double b2, double P[]);
+-
+-int  gsl_blas_drot (gsl_vector * X,
+-                    gsl_vector * Y,
+-                    const double c, const double s);
+-
+-int  gsl_blas_drotm (gsl_vector * X,
+-                     gsl_vector * Y,
+-                     const double P[]);
+-
+-
+-void gsl_blas_sscal  (float  alpha, gsl_vector_float * X);
+-void gsl_blas_dscal  (double alpha, gsl_vector * X);
+-void gsl_blas_cscal  (const gsl_complex_float alpha, gsl_vector_complex_float * X);
+-void gsl_blas_zscal  (const gsl_complex alpha, gsl_vector_complex * X);
+-void gsl_blas_csscal (float  alpha, gsl_vector_complex_float * X);
+-void gsl_blas_zdscal (double alpha, gsl_vector_complex * X);
+-
+-
+-/* ===========================================================================
+- * Level 2
+- * ===========================================================================
+- */
+-
+-/*
+- * Routines with standard 4 prefixes (S, D, C, Z)
+- */
+-int  gsl_blas_sgemv (CBLAS_TRANSPOSE_t TransA,
+-                     float alpha,
+-                     const gsl_matrix_float * A,
+-                     const gsl_vector_float * X,
+-                     float beta,
+-                     gsl_vector_float * Y);
+-
+-int  gsl_blas_strmv (CBLAS_UPLO_t Uplo,
+-                     CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag,
+-                     const gsl_matrix_float * A,
+-                     gsl_vector_float * X);
+-
+-int  gsl_blas_strsv (CBLAS_UPLO_t Uplo,
+-                     CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag,
+-                     const gsl_matrix_float * A,
+-                     gsl_vector_float * X);
+-
+-int  gsl_blas_dgemv (CBLAS_TRANSPOSE_t TransA,
+-                     double alpha,
+-                     const gsl_matrix * A,
+-                     const gsl_vector * X,
+-                     double beta,
+-                     gsl_vector * Y);
+-
+-int  gsl_blas_dtrmv (CBLAS_UPLO_t Uplo,
+-                     CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag,
+-                     const gsl_matrix * A,
+-                     gsl_vector * X);
+-
+-int  gsl_blas_dtrsv (CBLAS_UPLO_t Uplo,
+-                     CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag,
+-                     const gsl_matrix * A,
+-                     gsl_vector * X);
+-
+-int  gsl_blas_cgemv (CBLAS_TRANSPOSE_t TransA,
+-                     const gsl_complex_float alpha,
+-                     const gsl_matrix_complex_float * A,
+-                     const gsl_vector_complex_float * X,
+-                     const gsl_complex_float beta,
+-                     gsl_vector_complex_float * Y);
+-
+-int  gsl_blas_ctrmv (CBLAS_UPLO_t Uplo,
+-                     CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag,
+-                     const gsl_matrix_complex_float * A,
+-                     gsl_vector_complex_float * X);
+-
+-int  gsl_blas_ctrsv (CBLAS_UPLO_t Uplo,
+-                     CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag,
+-                     const gsl_matrix_complex_float * A,
+-                     gsl_vector_complex_float * X);
+-
+-int  gsl_blas_zgemv (CBLAS_TRANSPOSE_t TransA,
+-                     const gsl_complex alpha,
+-                     const gsl_matrix_complex * A,
+-                     const gsl_vector_complex * X,
+-                     const gsl_complex beta,
+-                     gsl_vector_complex * Y);
+-
+-int  gsl_blas_ztrmv (CBLAS_UPLO_t Uplo,
+-                     CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag,
+-                     const gsl_matrix_complex * A,
+-                     gsl_vector_complex * X);
+-
+-int  gsl_blas_ztrsv (CBLAS_UPLO_t Uplo,
+-                     CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag,
+-                     const gsl_matrix_complex * A,
+-                     gsl_vector_complex *X);
+-
+-/*
+- * Routines with S and D prefixes only
+- */
+-int  gsl_blas_ssymv (CBLAS_UPLO_t Uplo,
+-                     float alpha,
+-                     const gsl_matrix_float * A,
+-                     const gsl_vector_float * X,
+-                     float beta,
+-                     gsl_vector_float * Y);
+-
+-int  gsl_blas_sger (float alpha,
+-                    const gsl_vector_float * X,
+-                    const gsl_vector_float * Y,
+-                    gsl_matrix_float * A);
+-
+-int  gsl_blas_ssyr (CBLAS_UPLO_t Uplo,
+-                    float alpha,
+-                    const gsl_vector_float * X,
+-                    gsl_matrix_float * A);
+-
+-int  gsl_blas_ssyr2 (CBLAS_UPLO_t Uplo,
+-                     float alpha,
+-                     const gsl_vector_float * X,
+-                     const gsl_vector_float * Y,
+-                     gsl_matrix_float * A);
+-
+-int  gsl_blas_dsymv (CBLAS_UPLO_t Uplo,
+-                     double alpha,
+-                     const gsl_matrix * A,
+-                     const gsl_vector * X,
+-                     double beta,
+-                     gsl_vector * Y);
+-int  gsl_blas_dger (double alpha,
+-                    const gsl_vector * X,
+-                    const gsl_vector * Y,
+-                    gsl_matrix * A);
+-
+-int  gsl_blas_dsyr (CBLAS_UPLO_t Uplo,
+-                    double alpha,
+-                    const gsl_vector * X,
+-                    gsl_matrix * A);
+-
+-int  gsl_blas_dsyr2 (CBLAS_UPLO_t Uplo,
+-                     double alpha,
+-                     const gsl_vector * X,
+-                     const gsl_vector * Y,
+-                     gsl_matrix * A);
+-
+-/*
+- * Routines with C and Z prefixes only
+- */
+-
+-int  gsl_blas_chemv (CBLAS_UPLO_t Uplo,
+-                     const gsl_complex_float alpha,
+-                     const gsl_matrix_complex_float * A,
+-                     const gsl_vector_complex_float * X,
+-                     const gsl_complex_float beta,
+-                     gsl_vector_complex_float * Y);
+-
+-int  gsl_blas_cgeru (const gsl_complex_float alpha,
+-                     const gsl_vector_complex_float * X,
+-                     const gsl_vector_complex_float * Y,
+-                     gsl_matrix_complex_float * A);
+-
+-int  gsl_blas_cgerc (const gsl_complex_float alpha,
+-                     const gsl_vector_complex_float * X,
+-                     const gsl_vector_complex_float * Y,
+-                     gsl_matrix_complex_float * A);
+-
+-int  gsl_blas_cher (CBLAS_UPLO_t Uplo,
+-                    float alpha,
+-                    const gsl_vector_complex_float * X,
+-                    gsl_matrix_complex_float * A);
+-
+-int  gsl_blas_cher2 (CBLAS_UPLO_t Uplo,
+-                     const gsl_complex_float alpha,
+-                     const gsl_vector_complex_float * X,
+-                     const gsl_vector_complex_float * Y,
+-                     gsl_matrix_complex_float * A);
+-
+-int  gsl_blas_zhemv (CBLAS_UPLO_t Uplo,
+-                     const gsl_complex alpha,
+-                     const gsl_matrix_complex * A,
+-                     const gsl_vector_complex * X,
+-                     const gsl_complex beta,
+-                     gsl_vector_complex * Y);
+-
+-int  gsl_blas_zgeru (const gsl_complex alpha,
+-                     const gsl_vector_complex * X,
+-                     const gsl_vector_complex * Y,
+-                     gsl_matrix_complex * A);
+-
+-int  gsl_blas_zgerc (const gsl_complex alpha,
+-                     const gsl_vector_complex * X,
+-                     const gsl_vector_complex * Y,
+-                     gsl_matrix_complex * A);
+-
+-int  gsl_blas_zher (CBLAS_UPLO_t Uplo,
+-                    double alpha,
+-                    const gsl_vector_complex * X,
+-                    gsl_matrix_complex * A);
+-
+-int  gsl_blas_zher2 (CBLAS_UPLO_t Uplo,
+-                     const gsl_complex alpha,
+-                     const gsl_vector_complex * X,
+-                     const gsl_vector_complex * Y,
+-                     gsl_matrix_complex * A);
+-
+-/*
+- * ===========================================================================
+- * Prototypes for level 3 BLAS
+- * ===========================================================================
+- */
+-
+-/*
+- * Routines with standard 4 prefixes (S, D, C, Z)
+- */
+-int  gsl_blas_sgemm (CBLAS_TRANSPOSE_t TransA,
+-                     CBLAS_TRANSPOSE_t TransB,
+-                     float alpha,
+-                     const gsl_matrix_float * A,
+-                     const gsl_matrix_float * B,
+-                     float beta,
+-                     gsl_matrix_float * C);
+-
+-int  gsl_blas_ssymm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo,
+-                     float alpha,
+-                     const gsl_matrix_float * A,
+-                     const gsl_matrix_float * B,
+-                     float beta,
+-                     gsl_matrix_float * C);
+-
+-int  gsl_blas_ssyrk (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t Trans,
+-                     float alpha,
+-                     const gsl_matrix_float * A,
+-                     float beta,
+-                     gsl_matrix_float * C);
+-
+-int  gsl_blas_ssyr2k (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t Trans,
+-                      float alpha,
+-                      const gsl_matrix_float * A,
+-                      const gsl_matrix_float * B,
+-                      float beta,
+-                      gsl_matrix_float * C);
+-
+-int  gsl_blas_strmm (CBLAS_SIDE_t Side,
+-                     CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA,
+-                     CBLAS_DIAG_t Diag,
+-                     float alpha,
+-                     const gsl_matrix_float * A,
+-                     gsl_matrix_float * B);
+-
+-int  gsl_blas_strsm (CBLAS_SIDE_t Side,
+-                     CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA,
+-                     CBLAS_DIAG_t Diag,
+-                     float alpha,
+-                     const gsl_matrix_float * A,
+-                     gsl_matrix_float * B);
+-
+-int  gsl_blas_dgemm (CBLAS_TRANSPOSE_t TransA,
+-                     CBLAS_TRANSPOSE_t TransB,
+-                     double alpha,
+-                     const gsl_matrix * A,
+-                     const gsl_matrix * B,
+-                     double beta,
+-                     gsl_matrix * C);
+-
+-int  gsl_blas_dsymm (CBLAS_SIDE_t Side,
+-                     CBLAS_UPLO_t Uplo,
+-                     double alpha,
+-                     const gsl_matrix * A,
+-                     const gsl_matrix * B,
+-                     double beta,
+-                     gsl_matrix * C);
+-
+-int  gsl_blas_dsyrk (CBLAS_UPLO_t Uplo,
+-                     CBLAS_TRANSPOSE_t Trans,
+-                     double alpha,
+-                     const gsl_matrix * A,
+-                     double beta,
+-                     gsl_matrix * C);
+-
+-int  gsl_blas_dsyr2k (CBLAS_UPLO_t Uplo,
+-                      CBLAS_TRANSPOSE_t Trans,
+-                      double alpha,
+-                      const  gsl_matrix * A,
+-                      const  gsl_matrix * B,
+-                      double beta,
+-                      gsl_matrix * C);
+-
+-int  gsl_blas_dtrmm (CBLAS_SIDE_t Side,
+-                     CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA,
+-                     CBLAS_DIAG_t Diag,
+-                     double alpha,
+-                     const gsl_matrix * A,
+-                     gsl_matrix * B);
+-
+-int  gsl_blas_dtrsm (CBLAS_SIDE_t Side,
+-                     CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA,
+-                     CBLAS_DIAG_t Diag,
+-                     double alpha,
+-                     const gsl_matrix * A,
+-                     gsl_matrix * B);
+-
+-int  gsl_blas_cgemm (CBLAS_TRANSPOSE_t TransA,
+-                     CBLAS_TRANSPOSE_t TransB,
+-                     const gsl_complex_float alpha,
+-                     const gsl_matrix_complex_float * A,
+-                     const gsl_matrix_complex_float * B,
+-                     const gsl_complex_float beta,
+-                     gsl_matrix_complex_float * C);
+-
+-int  gsl_blas_csymm (CBLAS_SIDE_t Side,
+-                     CBLAS_UPLO_t Uplo,
+-                     const gsl_complex_float alpha,
+-                     const gsl_matrix_complex_float * A,
+-                     const gsl_matrix_complex_float * B,
+-                     const gsl_complex_float beta,
+-                     gsl_matrix_complex_float * C);
+-
+-int  gsl_blas_csyrk (CBLAS_UPLO_t Uplo,
+-                     CBLAS_TRANSPOSE_t Trans,
+-                     const gsl_complex_float alpha,
+-                     const gsl_matrix_complex_float * A,
+-                     const gsl_complex_float beta,
+-                     gsl_matrix_complex_float * C);
+-
+-int  gsl_blas_csyr2k (CBLAS_UPLO_t Uplo,
+-                      CBLAS_TRANSPOSE_t Trans,
+-                      const gsl_complex_float alpha,
+-                      const gsl_matrix_complex_float * A,
+-                      const gsl_matrix_complex_float * B,
+-                      const gsl_complex_float beta,
+-                      gsl_matrix_complex_float * C);
+-
+-int  gsl_blas_ctrmm (CBLAS_SIDE_t Side,
+-                     CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA,
+-                     CBLAS_DIAG_t Diag,
+-                     const gsl_complex_float alpha,
+-                     const gsl_matrix_complex_float * A,
+-                     gsl_matrix_complex_float * B);
+-
+-int  gsl_blas_ctrsm (CBLAS_SIDE_t Side,
+-                     CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA,
+-                     CBLAS_DIAG_t Diag,
+-                     const gsl_complex_float alpha,
+-                     const gsl_matrix_complex_float * A,
+-                     gsl_matrix_complex_float * B);
+-
+-int  gsl_blas_zgemm (CBLAS_TRANSPOSE_t TransA,
+-                     CBLAS_TRANSPOSE_t TransB,
+-                     const gsl_complex alpha,
+-                     const gsl_matrix_complex * A,
+-                     const gsl_matrix_complex * B,
+-                     const gsl_complex beta,
+-                     gsl_matrix_complex * C);
+-
+-int  gsl_blas_zsymm (CBLAS_SIDE_t Side,
+-                     CBLAS_UPLO_t Uplo,
+-                     const gsl_complex alpha,
+-                     const gsl_matrix_complex * A,
+-                     const gsl_matrix_complex * B,
+-                     const gsl_complex beta,
+-                     gsl_matrix_complex * C);
+-
+-int  gsl_blas_zsyrk (CBLAS_UPLO_t Uplo,
+-                     CBLAS_TRANSPOSE_t Trans,
+-                     const gsl_complex alpha,
+-                     const gsl_matrix_complex * A,
+-                     const gsl_complex beta,
+-                     gsl_matrix_complex * C);
+-
+-int  gsl_blas_zsyr2k (CBLAS_UPLO_t Uplo,
+-                      CBLAS_TRANSPOSE_t Trans,
+-                      const gsl_complex alpha,
+-                      const gsl_matrix_complex * A,
+-                      const gsl_matrix_complex * B,
+-                      const gsl_complex beta,
+-                      gsl_matrix_complex *C);
+-
+-int  gsl_blas_ztrmm (CBLAS_SIDE_t Side,
+-                     CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA,
+-                     CBLAS_DIAG_t Diag,
+-                     const gsl_complex alpha,
+-                     const gsl_matrix_complex * A,
+-                     gsl_matrix_complex * B);
+-
+-int  gsl_blas_ztrsm (CBLAS_SIDE_t Side,
+-                     CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA,
+-                     CBLAS_DIAG_t Diag,
+-                     const gsl_complex alpha,
+-                     const gsl_matrix_complex * A,
+-                     gsl_matrix_complex * B);
+-
+-/*
+- * Routines with prefixes C and Z only
+- */
+-int  gsl_blas_chemm (CBLAS_SIDE_t Side,
+-                     CBLAS_UPLO_t Uplo,
+-                     const gsl_complex_float alpha,
+-                     const gsl_matrix_complex_float * A,
+-                     const gsl_matrix_complex_float * B,
+-                     const gsl_complex_float beta,
+-                     gsl_matrix_complex_float * C);
+-
+-int  gsl_blas_cherk (CBLAS_UPLO_t Uplo,
+-                     CBLAS_TRANSPOSE_t Trans,
+-                     float alpha,
+-                     const gsl_matrix_complex_float * A,
+-                     float beta,
+-                     gsl_matrix_complex_float * C);
+-
+-int  gsl_blas_cher2k (CBLAS_UPLO_t Uplo,
+-                      CBLAS_TRANSPOSE_t Trans,
+-                      const gsl_complex_float alpha,
+-                      const gsl_matrix_complex_float * A,
+-                      const gsl_matrix_complex_float * B,
+-                      float beta,
+-                      gsl_matrix_complex_float * C);
+-
+-int  gsl_blas_zhemm (CBLAS_SIDE_t Side,
+-                     CBLAS_UPLO_t Uplo,
+-                     const gsl_complex alpha,
+-                     const gsl_matrix_complex * A,
+-                     const gsl_matrix_complex * B,
+-                     const gsl_complex beta,
+-                     gsl_matrix_complex * C);
+-
+-int  gsl_blas_zherk (CBLAS_UPLO_t Uplo,
+-                     CBLAS_TRANSPOSE_t Trans,
+-                     double alpha,
+-                     const gsl_matrix_complex * A,
+-                     double beta,
+-                     gsl_matrix_complex * C);
+-
+-int  gsl_blas_zher2k (CBLAS_UPLO_t Uplo,
+-                      CBLAS_TRANSPOSE_t Trans,
+-                      const gsl_complex alpha,
+-                      const gsl_matrix_complex * A,
+-                      const gsl_matrix_complex * B,
+-                      double beta,
+-                      gsl_matrix_complex * C);
+-
+-
+-__END_DECLS
+-
+-#endif /* __GSL_BLAS_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_complex_long_double.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_complex_long_double.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_complex_long_double.h	(revision 14079)
+@@ -1,45 +0,0 @@
+-/* permutation/gsl_permute_complex_long_double.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_PERMUTE_COMPLEX_LONG_DOUBLE_H__
+-#define __GSL_PERMUTE_COMPLEX_LONG_DOUBLE_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_complex.h>
+-#include <gsl/gsl_permutation.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-int gsl_permute_complex_long_double (const size_t * p, long double * data, const size_t stride, const size_t n);
+-int gsl_permute_complex_long_double_inverse (const size_t * p, long double * data, const size_t stride, const size_t n);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_PERMUTE_COMPLEX_LONG_DOUBLE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_fit.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_fit.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_fit.h	(revision 14079)
+@@ -1,85 +0,0 @@
+-/* fit/gsl_fit.h
+- * 
+- * Copyright (C) 2000, 2007 Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_FIT_H__
+-#define __GSL_FIT_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_math.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-int gsl_fit_linear (const double * x, const size_t xstride,
+-                    const double * y, const size_t ystride,
+-                    const size_t n,
+-                    double * c0, double * c1, 
+-                    double * cov00, double * cov01, double * cov11, 
+-                    double * sumsq);
+-
+-
+-int gsl_fit_wlinear (const double * x, const size_t xstride,
+-                     const double * w, const size_t wstride,
+-                     const double * y, const size_t ystride,
+-                     const size_t n,
+-                     double * c0, double * c1, 
+-                     double * cov00, double * cov01, double * cov11, 
+-                     double * chisq);
+-
+-int
+-gsl_fit_linear_est (const double x, 
+-                    const double c0, const double c1, 
+-                    const double cov00, const double cov01, const double cov11,
+-                    double *y, double *y_err);
+-
+-
+-int gsl_fit_mul (const double * x, const size_t xstride,
+-                 const double * y, const size_t ystride,
+-                 const size_t n,
+-                 double * c1, 
+-                 double * cov11, 
+-                 double * sumsq);
+-
+-int gsl_fit_wmul (const double * x, const size_t xstride,
+-                  const double * w, const size_t wstride,
+-                  const double * y, const size_t ystride,
+-                  const size_t n,
+-                  double * c1, 
+-                  double * cov11, 
+-                  double * sumsq);
+-
+-
+-int
+-gsl_fit_mul_est (const double x, 
+-                 const double c1, 
+-                 const double cov11,
+-                 double *y, double *y_err);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_FIT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_poly.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_poly.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_poly.h	(revision 14079)
+@@ -1,179 +0,0 @@
+-/* poly/gsl_poly.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004, 2007 Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_POLY_H__
+-#define __GSL_POLY_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_inline.h>
+-#include <gsl/gsl_complex.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-
+-/* Evaluate polynomial
+- *
+- * c[0] + c[1] x + c[2] x^2 + ... + c[len-1] x^(len-1)
+- *
+- * exceptions: none
+- */
+-
+-/* real polynomial, real x */
+-INLINE_DECL double gsl_poly_eval(const double c[], const int len, const double x);
+-
+-/* real polynomial, complex x */
+-INLINE_DECL gsl_complex gsl_poly_complex_eval (const double c [], const int len, const gsl_complex z);
+-
+-/* complex polynomial, complex x */
+-INLINE_DECL gsl_complex gsl_complex_poly_complex_eval (const gsl_complex c [], const int len, const gsl_complex z);
+-
+-int gsl_poly_eval_derivs(const double c[], const size_t lenc, const double x, double res[], const size_t lenres);
+-
+-#ifdef HAVE_INLINE
+-INLINE_FUN
+-double 
+-gsl_poly_eval(const double c[], const int len, const double x)
+-{
+-  int i;
+-  double ans = c[len-1];
+-  for(i=len-1; i>0; i--) ans = c[i-1] + x * ans;
+-  return ans;
+-}
+-
+-INLINE_FUN
+-gsl_complex
+-gsl_poly_complex_eval(const double c[], const int len, const gsl_complex z)
+-{
+-  int i;
+-  gsl_complex ans;
+-  GSL_SET_COMPLEX (&ans, c[len-1], 0.0);
+-  for(i=len-1; i>0; i--) {
+-    /* The following three lines are equivalent to
+-       ans = gsl_complex_add_real (gsl_complex_mul (z, ans), c[i-1]); 
+-       but faster */
+-    double tmp = c[i-1] + GSL_REAL (z) * GSL_REAL (ans) - GSL_IMAG (z) * GSL_IMAG (ans);
+-    GSL_SET_IMAG (&ans, GSL_IMAG (z) * GSL_REAL (ans) + GSL_REAL (z) * GSL_IMAG (ans));
+-    GSL_SET_REAL (&ans, tmp);
+-  } 
+-  return ans;
+-}
+-
+-INLINE_FUN
+-gsl_complex
+-gsl_complex_poly_complex_eval(const gsl_complex c[], const int len, const gsl_complex z)
+-{
+-  int i;
+-  gsl_complex ans = c[len-1];
+-  for(i=len-1; i>0; i--) {
+-    /* The following three lines are equivalent to
+-       ans = gsl_complex_add (c[i-1], gsl_complex_mul (x, ans));
+-       but faster */
+-    double tmp = GSL_REAL (c[i-1]) + GSL_REAL (z) * GSL_REAL (ans) - GSL_IMAG (z) * GSL_IMAG (ans);
+-    GSL_SET_IMAG (&ans, GSL_IMAG (c[i-1]) + GSL_IMAG (z) * GSL_REAL (ans) + GSL_REAL (z) * GSL_IMAG (ans));
+-    GSL_SET_REAL (&ans, tmp);
+-  }
+-  return ans;
+-}
+-#endif /* HAVE_INLINE */
+-
+-/* Work with divided-difference polynomials, Abramowitz & Stegun 25.2.26 */
+-
+-int
+-gsl_poly_dd_init (double dd[], const double x[], const double y[],
+-                  size_t size);
+-
+-INLINE_DECL double
+-gsl_poly_dd_eval (const double dd[], const double xa[], const size_t size, const double x);
+-
+-#ifdef HAVE_INLINE
+-INLINE_FUN
+-double 
+-gsl_poly_dd_eval(const double dd[], const double xa[], const size_t size, const double x)
+-{
+-  size_t i;
+-  double y = dd[size - 1];
+-  for (i = size - 1; i--;) y = dd[i] + (x - xa[i]) * y;
+-  return y;
+-}
+-#endif /* HAVE_INLINE */
+-
+-
+-int
+-gsl_poly_dd_taylor (double c[], double xp,
+-                    const double dd[], const double x[], size_t size,
+-                    double w[]);
+-
+-/* Solve for real or complex roots of the standard quadratic equation,
+- * returning the number of real roots.
+- *
+- * Roots are returned ordered.
+- */
+-int gsl_poly_solve_quadratic (double a, double b, double c, 
+-                              double * x0, double * x1);
+-
+-int 
+-gsl_poly_complex_solve_quadratic (double a, double b, double c, 
+-                                  gsl_complex * z0, gsl_complex * z1);
+-
+-
+-/* Solve for real roots of the cubic equation
+- * x^3 + a x^2 + b x + c = 0, returning the
+- * number of real roots.
+- *
+- * Roots are returned ordered.
+- */
+-int gsl_poly_solve_cubic (double a, double b, double c, 
+-                          double * x0, double * x1, double * x2);
+-
+-int 
+-gsl_poly_complex_solve_cubic (double a, double b, double c, 
+-                              gsl_complex * z0, gsl_complex * z1, 
+-                              gsl_complex * z2);
+-
+-
+-/* Solve for the complex roots of a general real polynomial */
+-
+-typedef struct 
+-{ 
+-  size_t nc ;
+-  double * matrix ; 
+-} 
+-gsl_poly_complex_workspace ;
+-
+-gsl_poly_complex_workspace * gsl_poly_complex_workspace_alloc (size_t n);
+-void gsl_poly_complex_workspace_free (gsl_poly_complex_workspace * w);
+-
+-int
+-gsl_poly_complex_solve (const double * a, size_t n, 
+-                        gsl_poly_complex_workspace * w,
+-                        gsl_complex_packed_ptr z);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_POLY_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_integration.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_integration.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_integration.h	(revision 14079)
+@@ -1,323 +0,0 @@
+-/* integration/gsl_integration.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_INTEGRATION_H__
+-#define __GSL_INTEGRATION_H__
+-#include <stdlib.h>
+-#include <gsl/gsl_math.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-/* Workspace for adaptive integrators */
+-
+-typedef struct
+-  {
+-    size_t limit;
+-    size_t size;
+-    size_t nrmax;
+-    size_t i;
+-    size_t maximum_level;
+-    double *alist;
+-    double *blist;
+-    double *rlist;
+-    double *elist;
+-    size_t *order;
+-    size_t *level;
+-  }
+-gsl_integration_workspace;
+-
+-gsl_integration_workspace *
+-  gsl_integration_workspace_alloc (const size_t n);
+-
+-void
+-  gsl_integration_workspace_free (gsl_integration_workspace * w);
+-
+-
+-/* Workspace for QAWS integrator */
+-
+-typedef struct
+-{
+-  double alpha;
+-  double beta;
+-  int mu;
+-  int nu;
+-  double ri[25];
+-  double rj[25];
+-  double rg[25];
+-  double rh[25];
+-}
+-gsl_integration_qaws_table;
+-
+-gsl_integration_qaws_table * 
+-gsl_integration_qaws_table_alloc (double alpha, double beta, int mu, int nu);
+-
+-int
+-gsl_integration_qaws_table_set (gsl_integration_qaws_table * t,
+-                                double alpha, double beta, int mu, int nu);
+-
+-void
+-gsl_integration_qaws_table_free (gsl_integration_qaws_table * t);
+-
+-/* Workspace for QAWO integrator */
+-
+-enum gsl_integration_qawo_enum { GSL_INTEG_COSINE, GSL_INTEG_SINE };
+-
+-typedef struct
+-{
+-  size_t n;
+-  double omega;
+-  double L;
+-  double par;
+-  enum gsl_integration_qawo_enum sine;
+-  double *chebmo;
+-}
+-gsl_integration_qawo_table;
+-
+-gsl_integration_qawo_table * 
+-gsl_integration_qawo_table_alloc (double omega, double L, 
+-                                  enum gsl_integration_qawo_enum sine,
+-                                  size_t n);
+-
+-int
+-gsl_integration_qawo_table_set (gsl_integration_qawo_table * t,
+-                                double omega, double L,
+-                                enum gsl_integration_qawo_enum sine);
+-
+-int
+-gsl_integration_qawo_table_set_length (gsl_integration_qawo_table * t,
+-                                       double L);
+-
+-void
+-gsl_integration_qawo_table_free (gsl_integration_qawo_table * t);
+-
+-
+-/* Definition of an integration rule */
+-
+-typedef void gsl_integration_rule (const gsl_function * f,
+-                                   double a, double b,
+-                                   double *result, double *abserr,
+-                                   double *defabs, double *resabs);
+-
+-void gsl_integration_qk15 (const gsl_function * f, double a, double b,
+-                           double *result, double *abserr,
+-                           double *resabs, double *resasc);
+-
+-void gsl_integration_qk21 (const gsl_function * f, double a, double b,
+-                           double *result, double *abserr,
+-                           double *resabs, double *resasc);
+-
+-void gsl_integration_qk31 (const gsl_function * f, double a, double b,
+-                           double *result, double *abserr,
+-                           double *resabs, double *resasc);
+-
+-void gsl_integration_qk41 (const gsl_function * f, double a, double b,
+-                           double *result, double *abserr,
+-                           double *resabs, double *resasc);
+-
+-void gsl_integration_qk51 (const gsl_function * f, double a, double b,
+-                           double *result, double *abserr,
+-                           double *resabs, double *resasc);
+-
+-void gsl_integration_qk61 (const gsl_function * f, double a, double b,
+-                           double *result, double *abserr,
+-                           double *resabs, double *resasc);
+-
+-void gsl_integration_qcheb (gsl_function * f, double a, double b, 
+-                            double *cheb12, double *cheb24);
+-
+-/* The low-level integration rules in QUADPACK are identified by small
+-   integers (1-6). We'll use symbolic constants to refer to them.  */
+-
+-enum
+-  {
+-    GSL_INTEG_GAUSS15 = 1,      /* 15 point Gauss-Kronrod rule */
+-    GSL_INTEG_GAUSS21 = 2,      /* 21 point Gauss-Kronrod rule */
+-    GSL_INTEG_GAUSS31 = 3,      /* 31 point Gauss-Kronrod rule */
+-    GSL_INTEG_GAUSS41 = 4,      /* 41 point Gauss-Kronrod rule */
+-    GSL_INTEG_GAUSS51 = 5,      /* 51 point Gauss-Kronrod rule */
+-    GSL_INTEG_GAUSS61 = 6       /* 61 point Gauss-Kronrod rule */
+-  };
+-
+-void 
+-gsl_integration_qk (const int n, const double xgk[], 
+-                    const double wg[], const double wgk[],
+-                    double fv1[], double fv2[],
+-                    const gsl_function *f, double a, double b,
+-                    double * result, double * abserr, 
+-                    double * resabs, double * resasc);
+-
+-
+-int gsl_integration_qng (const gsl_function * f,
+-                         double a, double b,
+-                         double epsabs, double epsrel,
+-                         double *result, double *abserr,
+-                         size_t * neval);
+-
+-int gsl_integration_qag (const gsl_function * f,
+-                         double a, double b,
+-                         double epsabs, double epsrel, size_t limit,
+-                         int key,
+-                         gsl_integration_workspace * workspace,
+-                         double *result, double *abserr);
+-
+-int gsl_integration_qagi (gsl_function * f,
+-                          double epsabs, double epsrel, size_t limit,
+-                          gsl_integration_workspace * workspace,
+-                          double *result, double *abserr);
+-
+-int gsl_integration_qagiu (gsl_function * f,
+-                           double a,
+-                           double epsabs, double epsrel, size_t limit,
+-                           gsl_integration_workspace * workspace,
+-                           double *result, double *abserr);
+-
+-int gsl_integration_qagil (gsl_function * f,
+-                           double b,
+-                           double epsabs, double epsrel, size_t limit,
+-                           gsl_integration_workspace * workspace,
+-                           double *result, double *abserr);
+-
+-
+-int gsl_integration_qags (const gsl_function * f,
+-                          double a, double b,
+-                          double epsabs, double epsrel, size_t limit,
+-                          gsl_integration_workspace * workspace,
+-                          double *result, double *abserr);
+-
+-int gsl_integration_qagp (const gsl_function * f,
+-                          double *pts, size_t npts,
+-                          double epsabs, double epsrel, size_t limit,
+-                          gsl_integration_workspace * workspace,
+-                          double *result, double *abserr);
+-
+-int gsl_integration_qawc (gsl_function *f,
+-                          const double a, const double b, const double c,
+-                          const double epsabs, const double epsrel, const size_t limit,
+-                          gsl_integration_workspace * workspace,
+-                          double * result, double * abserr);
+-
+-int gsl_integration_qaws (gsl_function * f,
+-                          const double a, const double b,
+-                          gsl_integration_qaws_table * t,
+-                          const double epsabs, const double epsrel,
+-                          const size_t limit,
+-                          gsl_integration_workspace * workspace,
+-                          double *result, double *abserr);
+-
+-int gsl_integration_qawo (gsl_function * f,
+-                          const double a,
+-                          const double epsabs, const double epsrel,
+-                          const size_t limit,
+-                          gsl_integration_workspace * workspace,
+-                          gsl_integration_qawo_table * wf,
+-                          double *result, double *abserr);
+-
+-int gsl_integration_qawf (gsl_function * f,
+-                          const double a,
+-                          const double epsabs,
+-                          const size_t limit,
+-                          gsl_integration_workspace * workspace,
+-                          gsl_integration_workspace * cycle_workspace,
+-                          gsl_integration_qawo_table * wf,
+-                          double *result, double *abserr);
+-
+-/* Workspace for fixed-order Gauss-Legendre integration */
+-
+-typedef struct
+-  {
+-    size_t n;         /* number of points */
+-    double *x;        /* Gauss abscissae/points */
+-    double *w;        /* Gauss weights for each abscissae */
+-    int precomputed;  /* high precision abscissae/weights precomputed? */
+-  }
+-gsl_integration_glfixed_table;
+-
+-
+-gsl_integration_glfixed_table *
+-  gsl_integration_glfixed_table_alloc (size_t n);
+-
+-void
+-  gsl_integration_glfixed_table_free (gsl_integration_glfixed_table * t);
+-
+-/* Routine for fixed-order Gauss-Legendre integration */
+-
+-double
+-  gsl_integration_glfixed (const gsl_function *f,
+-                           double a,
+-                           double b,
+-                           const gsl_integration_glfixed_table * t);
+-
+-/* Routine to retrieve the i-th Gauss-Legendre point and weight from t */
+-
+-int
+-  gsl_integration_glfixed_point (double a,
+-                                 double b,
+-                                 size_t i,
+-                                 double *xi,
+-                                 double *wi,
+-                                 const gsl_integration_glfixed_table * t);
+-
+-
+-/* Cquad integration - Pedro Gonnet */
+-
+-/* Data of a single interval */
+-typedef struct
+-{
+-  double a, b;
+-  double c[64];
+-  double fx[33];
+-  double igral, err;
+-  int depth, rdepth, ndiv;
+-} gsl_integration_cquad_ival;
+-
+-
+-/* The workspace is just a collection of intervals */
+-typedef struct
+-{
+-  size_t size;
+-  gsl_integration_cquad_ival *ivals;
+-  size_t *heap;
+-} gsl_integration_cquad_workspace;
+-
+-gsl_integration_cquad_workspace *
+-gsl_integration_cquad_workspace_alloc (const size_t n);
+-
+-void
+-gsl_integration_cquad_workspace_free (gsl_integration_cquad_workspace * w);
+-
+-int
+-gsl_integration_cquad (const gsl_function * f, double a, double b,
+-		       double epsabs, double epsrel,
+-		       gsl_integration_cquad_workspace * ws,
+-		       double *result, double *abserr, size_t * nevals);
+-
+-
+-__END_DECLS
+-
+-#endif /* __GSL_INTEGRATION_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_min.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_min.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_min.h	(revision 14079)
+@@ -1,111 +0,0 @@
+-/* min/gsl_min.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007, 2009 Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_MIN_H__
+-#define __GSL_MIN_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_types.h>
+-#include <gsl/gsl_math.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-typedef struct
+-  {
+-    const char *name;
+-    size_t size;
+-    int (*set) (void *state, gsl_function * f, double x_minimum, double f_minimum, double x_lower, double f_lower, double x_upper, double f_upper);
+-    int (*iterate) (void *state, gsl_function * f, double * x_minimum, double * f_minimum, double * x_lower, double * f_lower, double * x_upper, double * f_upper);
+-  }
+-gsl_min_fminimizer_type;
+-
+-typedef struct
+-  {
+-    const gsl_min_fminimizer_type * type;
+-    gsl_function * function ;
+-    double x_minimum ;
+-    double x_lower ;
+-    double x_upper ;
+-    double f_minimum, f_lower, f_upper;
+-    void *state;
+-  }
+-gsl_min_fminimizer;
+-
+-gsl_min_fminimizer *
+-gsl_min_fminimizer_alloc (const gsl_min_fminimizer_type * T) ;
+-                                      
+-void gsl_min_fminimizer_free (gsl_min_fminimizer * s);
+-
+-int gsl_min_fminimizer_set (gsl_min_fminimizer * s, 
+-                            gsl_function * f, double x_minimum, 
+-                            double x_lower, double x_upper);
+-
+-int gsl_min_fminimizer_set_with_values (gsl_min_fminimizer * s, 
+-                                        gsl_function * f, 
+-                                        double x_minimum, double f_minimum,
+-                                        double x_lower, double f_lower,
+-                                        double x_upper, double f_upper);
+-
+-int gsl_min_fminimizer_iterate (gsl_min_fminimizer * s);
+-
+-const char * gsl_min_fminimizer_name (const gsl_min_fminimizer * s);
+-
+-double gsl_min_fminimizer_x_minimum (const gsl_min_fminimizer * s);
+-double gsl_min_fminimizer_x_lower (const gsl_min_fminimizer * s);
+-double gsl_min_fminimizer_x_upper (const gsl_min_fminimizer * s);
+-double gsl_min_fminimizer_f_minimum (const gsl_min_fminimizer * s);
+-double gsl_min_fminimizer_f_lower (const gsl_min_fminimizer * s);
+-double gsl_min_fminimizer_f_upper (const gsl_min_fminimizer * s);
+-
+-/* Deprecated, use x_minimum instead */
+-double gsl_min_fminimizer_minimum (const gsl_min_fminimizer * s);
+-
+-int
+-gsl_min_test_interval (double x_lower, double x_upper, double epsabs, double epsrel);
+-
+-GSL_VAR const gsl_min_fminimizer_type  * gsl_min_fminimizer_goldensection;
+-GSL_VAR const gsl_min_fminimizer_type  * gsl_min_fminimizer_brent;
+-GSL_VAR const gsl_min_fminimizer_type  * gsl_min_fminimizer_quad_golden;
+-
+-typedef
+-int (*gsl_min_bracketing_function)(gsl_function *f,
+-                                   double *x_minimum,double * f_minimum,
+-                                   double *x_lower, double * f_lower,
+-                                   double *x_upper, double * f_upper,
+-                                   size_t eval_max);
+-
+-int 
+-gsl_min_find_bracket(gsl_function *f,double *x_minimum,double * f_minimum,
+-                     double *x_lower, double * f_lower,
+-                     double *x_upper, double * f_upper,
+-                     size_t eval_max);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_MIN_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_mode.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_mode.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_mode.h	(revision 14079)
+@@ -1,88 +0,0 @@
+-/* gsl_mode.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004 Gerard Jungman
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-/* Author:  B. Gough and G. Jungman */
+-
+-#ifndef __GSL_MODE_H__
+-#define __GSL_MODE_H__
+-#include <gsl/gsl_inline.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-
+-/* Some functions can take a mode argument. This
+- * is a rough method to do things like control
+- * the precision of the algorithm. This mainly
+- * occurs in special functions, but we figured
+- * it was ok to have a general facility.
+- *
+- * The mode type is 32-bit field. Most of
+- * the fields are currently unused. Users
+- * '|' various predefined constants to get
+- * a desired mode.
+- */
+-typedef unsigned int gsl_mode_t;
+-
+-
+-/* Here are the predefined constants.
+- * Note that the precision constants
+- * are special because they are used
+- * to index arrays, so do not change
+- * them. The precision information is
+- * in the low order 3 bits of gsl_mode_t
+- * (the third bit is currently unused).
+- */
+-
+-/* Note that "0" is double precision,
+- * so that you get that by default if
+- * you forget a flag.
+- */
+-#define GSL_PREC_DOUBLE  0
+-#define GSL_PREC_SINGLE  1
+-#define GSL_PREC_APPROX  2
+-
+-#ifdef HAVE_INLINE
+-INLINE_FUN unsigned int GSL_MODE_PREC(gsl_mode_t mt);
+-
+-INLINE_FUN unsigned int
+-GSL_MODE_PREC(gsl_mode_t mt)
+-{ return  (mt & (unsigned int)7); }
+-#else  /* HAVE_INLINE */
+-#define GSL_MODE_PREC(mt) ((mt) & (unsigned int)7)
+-#endif /* HAVE_INLINE */
+-
+-
+-/* Here are some predefined generic modes.
+- */
+-#define GSL_MODE_DEFAULT  0
+-
+-
+-__END_DECLS
+-
+-#endif /* __GSL_MODE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_char.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_char.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_char.h	(revision 14079)
+@@ -1,50 +0,0 @@
+-/* sort/gsl_sort_char.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_SORT_CHAR_H__
+-#define __GSL_SORT_CHAR_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_permutation.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-void gsl_sort_char (char * data, const size_t stride, const size_t n);
+-void gsl_sort_char_index (size_t * p, const char * data, const size_t stride, const size_t n);
+-
+-int gsl_sort_char_smallest (char * dest, const size_t k, const char * src, const size_t stride, const size_t n);
+-int gsl_sort_char_smallest_index (size_t * p, const size_t k, const char * src, const size_t stride, const size_t n);
+-
+-int gsl_sort_char_largest (char * dest, const size_t k, const char * src, const size_t stride, const size_t n);
+-int gsl_sort_char_largest_index (size_t * p, const size_t k, const char * src, const size_t stride, const size_t n);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_SORT_CHAR_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_uchar.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_uchar.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_uchar.h	(revision 14079)
+@@ -1,45 +0,0 @@
+-/* permutation/gsl_permute_vector_uchar.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_PERMUTE_VECTOR_UCHAR_H__
+-#define __GSL_PERMUTE_VECTOR_UCHAR_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_permutation.h>
+-#include <gsl/gsl_vector_uchar.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-int gsl_permute_vector_uchar (const gsl_permutation * p, gsl_vector_uchar * v);
+-int gsl_permute_vector_uchar_inverse (const gsl_permutation * p, gsl_vector_uchar * v);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_PERMUTE_VECTOR_UCHAR_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_char.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_char.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_char.h	(revision 14079)
+@@ -1,65 +0,0 @@
+-/* block/gsl_block_char.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_BLOCK_CHAR_H__
+-#define __GSL_BLOCK_CHAR_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-struct gsl_block_char_struct
+-{
+-  size_t size;
+-  char *data;
+-};
+-
+-typedef struct gsl_block_char_struct gsl_block_char;
+-
+-gsl_block_char *gsl_block_char_alloc (const size_t n);
+-gsl_block_char *gsl_block_char_calloc (const size_t n);
+-void gsl_block_char_free (gsl_block_char * b);
+-
+-int gsl_block_char_fread (FILE * stream, gsl_block_char * b);
+-int gsl_block_char_fwrite (FILE * stream, const gsl_block_char * b);
+-int gsl_block_char_fscanf (FILE * stream, gsl_block_char * b);
+-int gsl_block_char_fprintf (FILE * stream, const gsl_block_char * b, const char *format);
+-
+-int gsl_block_char_raw_fread (FILE * stream, char * b, const size_t n, const size_t stride);
+-int gsl_block_char_raw_fwrite (FILE * stream, const char * b, const size_t n, const size_t stride);
+-int gsl_block_char_raw_fscanf (FILE * stream, char * b, const size_t n, const size_t stride);
+-int gsl_block_char_raw_fprintf (FILE * stream, const char * b, const size_t n, const size_t stride, const char *format);
+-
+-size_t gsl_block_char_size (const gsl_block_char * b);
+-char * gsl_block_char_data (const gsl_block_char * b);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_BLOCK_CHAR_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_odeiv2.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_odeiv2.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_odeiv2.h	(revision 14079)
+@@ -1,332 +0,0 @@
+-/* ode-initval/odeiv2.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-/* Author:  G. Jungman */
+-/* Modified by Tuomo Keskitalo */
+-
+-#ifndef __GSL_ODEIV2_H__
+-#define __GSL_ODEIV2_H__
+-
+-#include <stdio.h>
+-#include <stdlib.h>
+-#include <gsl/gsl_types.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS          /* empty */
+-# define __END_DECLS            /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-/* Description of a system of ODEs.
+- *
+- * y' = f(t,y) = dydt(t, y)
+- *
+- * The system is specified by giving the right-hand-side
+- * of the equation and possibly a jacobian function.
+- *
+- * Some methods require the jacobian function, which calculates
+- * the matrix dfdy and the vector dfdt. The matrix dfdy conforms
+- * to the GSL standard, being a continuous range of floating point
+- * values, in row-order.
+- *
+- * As with GSL function objects, user-supplied parameter
+- * data is also present. 
+- */
+-  typedef struct
+-{
+-  int (*function) (double t, const double y[], double dydt[], void *params);
+-  int (*jacobian) (double t, const double y[], double *dfdy, double dfdt[],
+-                   void *params);
+-  size_t dimension;
+-  void *params;
+-}
+-gsl_odeiv2_system;
+-
+-/* Function evaluation macros */
+-
+-#define GSL_ODEIV_FN_EVAL(S,t,y,f)  (*((S)->function))(t,y,f,(S)->params)
+-#define GSL_ODEIV_JA_EVAL(S,t,y,dfdy,dfdt)  (*((S)->jacobian))(t,y,dfdy,dfdt,(S)->params)
+-
+-/* Type definitions */
+-
+-typedef struct gsl_odeiv2_step_struct gsl_odeiv2_step;
+-typedef struct gsl_odeiv2_control_struct gsl_odeiv2_control;
+-typedef struct gsl_odeiv2_evolve_struct gsl_odeiv2_evolve;
+-typedef struct gsl_odeiv2_driver_struct gsl_odeiv2_driver;
+-
+-/* Stepper object
+- *
+- * Opaque object for stepping an ODE system from t to t+h.
+- * In general the object has some state which facilitates
+- * iterating the stepping operation.
+- */
+-
+-typedef struct
+-{
+-  const char *name;
+-  int can_use_dydt_in;
+-  int gives_exact_dydt_out;
+-  void *(*alloc) (size_t dim);
+-  int (*apply) (void *state, size_t dim, double t, double h, double y[],
+-                double yerr[], const double dydt_in[], double dydt_out[],
+-                const gsl_odeiv2_system * dydt);
+-  int (*set_driver) (void *state, const gsl_odeiv2_driver * d);
+-  int (*reset) (void *state, size_t dim);
+-  unsigned int (*order) (void *state);
+-  void (*free) (void *state);
+-}
+-gsl_odeiv2_step_type;
+-
+-struct gsl_odeiv2_step_struct
+-{
+-  const gsl_odeiv2_step_type *type;
+-  size_t dimension;
+-  void *state;
+-};
+-
+-/* Available stepper types */
+-
+-GSL_VAR const gsl_odeiv2_step_type *gsl_odeiv2_step_rk2;
+-GSL_VAR const gsl_odeiv2_step_type *gsl_odeiv2_step_rk4;
+-GSL_VAR const gsl_odeiv2_step_type *gsl_odeiv2_step_rkf45;
+-GSL_VAR const gsl_odeiv2_step_type *gsl_odeiv2_step_rkck;
+-GSL_VAR const gsl_odeiv2_step_type *gsl_odeiv2_step_rk8pd;
+-GSL_VAR const gsl_odeiv2_step_type *gsl_odeiv2_step_rk2imp;
+-GSL_VAR const gsl_odeiv2_step_type *gsl_odeiv2_step_rk4imp;
+-GSL_VAR const gsl_odeiv2_step_type *gsl_odeiv2_step_bsimp;
+-GSL_VAR const gsl_odeiv2_step_type *gsl_odeiv2_step_rk1imp;
+-GSL_VAR const gsl_odeiv2_step_type *gsl_odeiv2_step_msadams;
+-GSL_VAR const gsl_odeiv2_step_type *gsl_odeiv2_step_msbdf;
+-
+-/* Stepper object methods */
+-
+-gsl_odeiv2_step *gsl_odeiv2_step_alloc (const gsl_odeiv2_step_type * T,
+-                                        size_t dim);
+-int gsl_odeiv2_step_reset (gsl_odeiv2_step * s);
+-void gsl_odeiv2_step_free (gsl_odeiv2_step * s);
+-const char *gsl_odeiv2_step_name (const gsl_odeiv2_step * s);
+-unsigned int gsl_odeiv2_step_order (const gsl_odeiv2_step * s);
+-int gsl_odeiv2_step_apply (gsl_odeiv2_step * s, double t, double h,
+-                           double y[], double yerr[], const double dydt_in[],
+-                           double dydt_out[], const gsl_odeiv2_system * dydt);
+-int gsl_odeiv2_step_set_driver (gsl_odeiv2_step * s,
+-                                const gsl_odeiv2_driver * d);
+-
+-/* Step size control object. */
+-
+-typedef struct
+-{
+-  const char *name;
+-  void *(*alloc) (void);
+-  int (*init) (void *state, double eps_abs, double eps_rel, double a_y,
+-               double a_dydt);
+-  int (*hadjust) (void *state, size_t dim, unsigned int ord, const double y[],
+-                  const double yerr[], const double yp[], double *h);
+-  int (*errlevel) (void *state, const double y, const double dydt,
+-                   const double h, const size_t ind, double *errlev);
+-  int (*set_driver) (void *state, const gsl_odeiv2_driver * d);
+-  void (*free) (void *state);
+-}
+-gsl_odeiv2_control_type;
+-
+-struct gsl_odeiv2_control_struct
+-{
+-  const gsl_odeiv2_control_type *type;
+-  void *state;
+-};
+-
+-/* Possible return values for an hadjust() evolution method */
+-
+-#define GSL_ODEIV_HADJ_INC   1  /* step was increased */
+-#define GSL_ODEIV_HADJ_NIL   0  /* step unchanged     */
+-#define GSL_ODEIV_HADJ_DEC (-1) /* step decreased     */
+-
+-/* General step size control methods.
+- *
+- * The hadjust() method controls the adjustment of
+- * step size given the result of a step and the error.
+- * Valid hadjust() methods must return one of the codes below.
+- * errlevel function calculates the desired error level D0.
+- *
+- * The general data can be used by specializations
+- * to store state and control their heuristics.
+- */
+-
+-gsl_odeiv2_control *gsl_odeiv2_control_alloc (const gsl_odeiv2_control_type *
+-                                              T);
+-int gsl_odeiv2_control_init (gsl_odeiv2_control * c, double eps_abs,
+-                             double eps_rel, double a_y, double a_dydt);
+-void gsl_odeiv2_control_free (gsl_odeiv2_control * c);
+-int gsl_odeiv2_control_hadjust (gsl_odeiv2_control * c, gsl_odeiv2_step * s,
+-                                const double y[], const double yerr[],
+-                                const double dydt[], double *h);
+-const char *gsl_odeiv2_control_name (const gsl_odeiv2_control * c);
+-int gsl_odeiv2_control_errlevel (gsl_odeiv2_control * c, const double y,
+-                                 const double dydt, const double h,
+-                                 const size_t ind, double *errlev);
+-int gsl_odeiv2_control_set_driver (gsl_odeiv2_control * c,
+-                                   const gsl_odeiv2_driver * d);
+-
+-/* Available control object constructors.
+- *
+- * The standard control object is a four parameter heuristic
+- * defined as follows:
+- *    D0 = eps_abs + eps_rel * (a_y |y| + a_dydt h |y'|)
+- *    D1 = |yerr|
+- *    q  = consistency order of method (q=4 for 4(5) embedded RK)
+- *    S  = safety factor (0.9 say)
+- *
+- *                      /  (D0/D1)^(1/(q+1))  D0 >= D1
+- *    h_NEW = S h_OLD * |
+- *                      \  (D0/D1)^(1/q)      D0 < D1
+- *
+- * This encompasses all the standard error scaling methods.
+- *
+- * The y method is the standard method with a_y=1, a_dydt=0.
+- * The yp method is the standard method with a_y=0, a_dydt=1.
+- */
+-
+-gsl_odeiv2_control *gsl_odeiv2_control_standard_new (double eps_abs,
+-                                                     double eps_rel,
+-                                                     double a_y,
+-                                                     double a_dydt);
+-gsl_odeiv2_control *gsl_odeiv2_control_y_new (double eps_abs, double eps_rel);
+-gsl_odeiv2_control *gsl_odeiv2_control_yp_new (double eps_abs,
+-                                               double eps_rel);
+-
+-/* This controller computes errors using different absolute errors for
+- * each component
+- *
+- *    D0 = eps_abs * scale_abs[i] + eps_rel * (a_y |y| + a_dydt h |y'|)
+- */
+-
+-gsl_odeiv2_control *gsl_odeiv2_control_scaled_new (double eps_abs,
+-                                                   double eps_rel, double a_y,
+-                                                   double a_dydt,
+-                                                   const double scale_abs[],
+-                                                   size_t dim);
+-
+-/* Evolution object */
+-
+-struct gsl_odeiv2_evolve_struct
+-{
+-  size_t dimension;
+-  double *y0;
+-  double *yerr;
+-  double *dydt_in;
+-  double *dydt_out;
+-  double last_step;
+-  unsigned long int count;
+-  unsigned long int failed_steps;
+-  const gsl_odeiv2_driver *driver;
+-};
+-
+-/* Evolution object methods */
+-
+-gsl_odeiv2_evolve *gsl_odeiv2_evolve_alloc (size_t dim);
+-int gsl_odeiv2_evolve_apply (gsl_odeiv2_evolve * e, gsl_odeiv2_control * con,
+-                             gsl_odeiv2_step * step,
+-                             const gsl_odeiv2_system * dydt, double *t,
+-                             double t1, double *h, double y[]);
+-int gsl_odeiv2_evolve_apply_fixed_step (gsl_odeiv2_evolve * e,
+-                                        gsl_odeiv2_control * con,
+-                                        gsl_odeiv2_step * step,
+-                                        const gsl_odeiv2_system * dydt,
+-                                        double *t, const double h0,
+-                                        double y[]);
+-int gsl_odeiv2_evolve_reset (gsl_odeiv2_evolve * e);
+-void gsl_odeiv2_evolve_free (gsl_odeiv2_evolve * e);
+-int gsl_odeiv2_evolve_set_driver (gsl_odeiv2_evolve * e,
+-                                  const gsl_odeiv2_driver * d);
+-
+-/* Driver object
+- *
+- * This is a high level wrapper for step, control and
+- * evolve objects. 
+- */
+-
+-struct gsl_odeiv2_driver_struct
+-{
+-  const gsl_odeiv2_system *sys; /* ODE system */
+-  gsl_odeiv2_step *s;           /* stepper object */
+-  gsl_odeiv2_control *c;        /* control object */
+-  gsl_odeiv2_evolve *e;         /* evolve object */
+-  double h;                     /* step size */
+-  double hmin;                  /* minimum step size allowed */
+-  double hmax;                  /* maximum step size allowed */
+-  unsigned long int n;          /* number of steps taken */
+-  unsigned long int nmax;       /* Maximum number of steps allowed */
+-};
+-
+-/* Driver object methods */
+-
+-gsl_odeiv2_driver *gsl_odeiv2_driver_alloc_y_new (const gsl_odeiv2_system *
+-                                                  sys,
+-                                                  const gsl_odeiv2_step_type *
+-                                                  T, const double hstart,
+-                                                  const double epsabs,
+-                                                  const double epsrel);
+-gsl_odeiv2_driver *gsl_odeiv2_driver_alloc_yp_new (const gsl_odeiv2_system *
+-                                                   sys,
+-                                                   const gsl_odeiv2_step_type
+-                                                   * T, const double hstart,
+-                                                   const double epsabs,
+-                                                   const double epsrel);
+-gsl_odeiv2_driver *gsl_odeiv2_driver_alloc_scaled_new (const gsl_odeiv2_system
+-                                                       * sys,
+-                                                       const
+-                                                       gsl_odeiv2_step_type *
+-                                                       T, const double hstart,
+-                                                       const double epsabs,
+-                                                       const double epsrel,
+-                                                       const double a_y,
+-                                                       const double a_dydt,
+-                                                       const double
+-                                                       scale_abs[]);
+-gsl_odeiv2_driver *gsl_odeiv2_driver_alloc_standard_new (const
+-                                                         gsl_odeiv2_system *
+-                                                         sys,
+-                                                         const
+-                                                         gsl_odeiv2_step_type
+-                                                         * T,
+-                                                         const double hstart,
+-                                                         const double epsabs,
+-                                                         const double epsrel,
+-                                                         const double a_y,
+-                                                         const double a_dydt);
+-int gsl_odeiv2_driver_set_hmin (gsl_odeiv2_driver * d, const double hmin);
+-int gsl_odeiv2_driver_set_hmax (gsl_odeiv2_driver * d, const double hmax);
+-int gsl_odeiv2_driver_set_nmax (gsl_odeiv2_driver * d,
+-                                const unsigned long int nmax);
+-int gsl_odeiv2_driver_apply (gsl_odeiv2_driver * d, double *t,
+-                             const double t1, double y[]);
+-int gsl_odeiv2_driver_apply_fixed_step (gsl_odeiv2_driver * d, double *t,
+-                                        const double h,
+-                                        const unsigned long int n,
+-                                        double y[]);
+-int gsl_odeiv2_driver_reset (gsl_odeiv2_driver * d);
+-void gsl_odeiv2_driver_free (gsl_odeiv2_driver * state);
+-
+-__END_DECLS
+-#endif /* __GSL_ODEIV2_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_check_range.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_check_range.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_check_range.h	(revision 14079)
+@@ -1,57 +0,0 @@
+-/* vector/gsl_check_range.h
+- * 
+- * Copyright (C) 2003, 2004, 2007 Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_CHECK_RANGE_H__
+-#define __GSL_CHECK_RANGE_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_types.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-GSL_VAR int gsl_check_range;
+-
+-/* Turn range checking on by default, unless the user defines
+-   GSL_RANGE_CHECK_OFF, or defines GSL_RANGE_CHECK to 0 explicitly */
+-
+-#ifdef GSL_RANGE_CHECK_OFF
+-# ifndef GSL_RANGE_CHECK
+-#  define GSL_RANGE_CHECK 0
+-# else
+-#  error "cannot set both GSL_RANGE_CHECK and GSL_RANGE_CHECK_OFF"
+-# endif
+-#else
+-# ifndef GSL_RANGE_CHECK
+-#  define GSL_RANGE_CHECK 1
+-# endif
+-#endif
+-
+-__END_DECLS
+-
+-#endif /* __GSL_CHECK_RANGE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block.h	(revision 14079)
+@@ -1,24 +0,0 @@
+-#ifndef __GSL_BLOCK_H__
+-#define __GSL_BLOCK_H__
+-
+-#include <gsl/gsl_block_complex_long_double.h>
+-#include <gsl/gsl_block_complex_double.h>
+-#include <gsl/gsl_block_complex_float.h>
+-
+-#include <gsl/gsl_block_long_double.h>
+-#include <gsl/gsl_block_double.h>
+-#include <gsl/gsl_block_float.h>
+-
+-#include <gsl/gsl_block_ulong.h>
+-#include <gsl/gsl_block_long.h>
+-
+-#include <gsl/gsl_block_uint.h>
+-#include <gsl/gsl_block_int.h>
+-
+-#include <gsl/gsl_block_ushort.h>
+-#include <gsl/gsl_block_short.h>
+-
+-#include <gsl/gsl_block_uchar.h>
+-#include <gsl/gsl_block_char.h>
+-
+-#endif /* __GSL_BLOCK_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_ulong.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_ulong.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_ulong.h	(revision 14079)
+@@ -1,50 +0,0 @@
+-/* sort/gsl_sort_ulong.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_SORT_ULONG_H__
+-#define __GSL_SORT_ULONG_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_permutation.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-void gsl_sort_ulong (unsigned long * data, const size_t stride, const size_t n);
+-void gsl_sort_ulong_index (size_t * p, const unsigned long * data, const size_t stride, const size_t n);
+-
+-int gsl_sort_ulong_smallest (unsigned long * dest, const size_t k, const unsigned long * src, const size_t stride, const size_t n);
+-int gsl_sort_ulong_smallest_index (size_t * p, const size_t k, const unsigned long * src, const size_t stride, const size_t n);
+-
+-int gsl_sort_ulong_largest (unsigned long * dest, const size_t k, const unsigned long * src, const size_t stride, const size_t n);
+-int gsl_sort_ulong_largest_index (size_t * p, const size_t k, const unsigned long * src, const size_t stride, const size_t n);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_SORT_ULONG_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_precision.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_precision.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_precision.h	(revision 14079)
+@@ -1,66 +0,0 @@
+-/* gsl_precision.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-/* Author:  B. Gough and G. Jungman */
+-
+-#ifndef __GSL_PRECISION_H__
+-#define __GSL_PRECISION_H__
+-#include <gsl/gsl_types.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-
+-/* A type for the precision indicator.
+- * This is mainly for pedagogy.
+- */
+-typedef  unsigned int  gsl_prec_t;
+-
+-
+-/* The number of precision types.
+- * Remember that precision-mode
+- * can index an array.
+- */
+-#define _GSL_PREC_T_NUM 3
+-
+-
+-/* Arrays containing derived
+- * precision constants for the
+- * different precision levels.
+- */
+-GSL_VAR const double gsl_prec_eps[];
+-GSL_VAR const double gsl_prec_sqrt_eps[];
+-GSL_VAR const double gsl_prec_root3_eps[];
+-GSL_VAR const double gsl_prec_root4_eps[];
+-GSL_VAR const double gsl_prec_root5_eps[];
+-GSL_VAR const double gsl_prec_root6_eps[];
+-
+-
+-__END_DECLS
+-
+-#endif /* __GSL_PRECISION_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_cdf.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_cdf.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_cdf.h	(revision 14079)
+@@ -1,170 +0,0 @@
+-/* cdf/gsl_cdf.h
+- * 
+- * Copyright (C) 2002 Jason H. Stover.
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307, USA.
+- */
+-
+-/* Author:  J. Stover */
+-
+-#ifndef __GSL_CDF_H__
+-#define __GSL_CDF_H__
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS          /* empty */
+-# define __END_DECLS            /* empty */
+-#endif
+-
+-__BEGIN_DECLS 
+-
+-double gsl_cdf_ugaussian_P (const double x);
+-double gsl_cdf_ugaussian_Q (const double x);
+-
+-double gsl_cdf_ugaussian_Pinv (const double P);
+-double gsl_cdf_ugaussian_Qinv (const double Q);
+-
+-double gsl_cdf_gaussian_P (const double x, const double sigma);
+-double gsl_cdf_gaussian_Q (const double x, const double sigma);
+-
+-double gsl_cdf_gaussian_Pinv (const double P, const double sigma);
+-double gsl_cdf_gaussian_Qinv (const double Q, const double sigma);
+-
+-double gsl_cdf_gamma_P (const double x, const double a, const double b);
+-double gsl_cdf_gamma_Q (const double x, const double a, const double b);
+-
+-double gsl_cdf_gamma_Pinv (const double P, const double a, const double b);
+-double gsl_cdf_gamma_Qinv (const double Q, const double a, const double b);
+-
+-double gsl_cdf_cauchy_P (const double x, const double a);
+-double gsl_cdf_cauchy_Q (const double x, const double a);
+-
+-double gsl_cdf_cauchy_Pinv (const double P, const double a);
+-double gsl_cdf_cauchy_Qinv (const double Q, const double a);
+-
+-double gsl_cdf_laplace_P (const double x, const double a);
+-double gsl_cdf_laplace_Q (const double x, const double a);
+-
+-double gsl_cdf_laplace_Pinv (const double P, const double a);
+-double gsl_cdf_laplace_Qinv (const double Q, const double a);
+-
+-double gsl_cdf_rayleigh_P (const double x, const double sigma);
+-double gsl_cdf_rayleigh_Q (const double x, const double sigma);
+-
+-double gsl_cdf_rayleigh_Pinv (const double P, const double sigma);
+-double gsl_cdf_rayleigh_Qinv (const double Q, const double sigma);
+-
+-double gsl_cdf_chisq_P (const double x, const double nu);
+-double gsl_cdf_chisq_Q (const double x, const double nu);
+-
+-double gsl_cdf_chisq_Pinv (const double P, const double nu);
+-double gsl_cdf_chisq_Qinv (const double Q, const double nu);
+-
+-double gsl_cdf_exponential_P (const double x, const double mu);
+-double gsl_cdf_exponential_Q (const double x, const double mu);
+-
+-double gsl_cdf_exponential_Pinv (const double P, const double mu);
+-double gsl_cdf_exponential_Qinv (const double Q, const double mu);
+-
+-double gsl_cdf_exppow_P (const double x, const double a, const double b);
+-double gsl_cdf_exppow_Q (const double x, const double a, const double b);
+-
+-double gsl_cdf_tdist_P (const double x, const double nu);
+-double gsl_cdf_tdist_Q (const double x, const double nu);
+-
+-double gsl_cdf_tdist_Pinv (const double P, const double nu);
+-double gsl_cdf_tdist_Qinv (const double Q, const double nu);
+-
+-double gsl_cdf_fdist_P (const double x, const double nu1, const double nu2);
+-double gsl_cdf_fdist_Q (const double x, const double nu1, const double nu2);
+-
+-double gsl_cdf_fdist_Pinv (const double P, const double nu1, const double nu2);
+-double gsl_cdf_fdist_Qinv (const double Q, const double nu1, const double nu2);
+-
+-double gsl_cdf_beta_P (const double x, const double a, const double b);
+-double gsl_cdf_beta_Q (const double x, const double a, const double b);
+-
+-double gsl_cdf_beta_Pinv (const double P, const double a, const double b);
+-double gsl_cdf_beta_Qinv (const double Q, const double a, const double b);
+-
+-double gsl_cdf_flat_P (const double x, const double a, const double b);
+-double gsl_cdf_flat_Q (const double x, const double a, const double b);
+-
+-double gsl_cdf_flat_Pinv (const double P, const double a, const double b);
+-double gsl_cdf_flat_Qinv (const double Q, const double a, const double b);
+-
+-double gsl_cdf_lognormal_P (const double x, const double zeta, const double sigma);
+-double gsl_cdf_lognormal_Q (const double x, const double zeta, const double sigma);
+-
+-double gsl_cdf_lognormal_Pinv (const double P, const double zeta, const double sigma);
+-double gsl_cdf_lognormal_Qinv (const double Q, const double zeta, const double sigma);
+-
+-double gsl_cdf_gumbel1_P (const double x, const double a, const double b);
+-double gsl_cdf_gumbel1_Q (const double x, const double a, const double b);
+-
+-double gsl_cdf_gumbel1_Pinv (const double P, const double a, const double b);
+-double gsl_cdf_gumbel1_Qinv (const double Q, const double a, const double b);
+-
+-double gsl_cdf_gumbel2_P (const double x, const double a, const double b);
+-double gsl_cdf_gumbel2_Q (const double x, const double a, const double b);
+-
+-double gsl_cdf_gumbel2_Pinv (const double P, const double a, const double b);
+-double gsl_cdf_gumbel2_Qinv (const double Q, const double a, const double b);
+-
+-double gsl_cdf_weibull_P (const double x, const double a, const double b);
+-double gsl_cdf_weibull_Q (const double x, const double a, const double b);
+-
+-double gsl_cdf_weibull_Pinv (const double P, const double a, const double b);
+-double gsl_cdf_weibull_Qinv (const double Q, const double a, const double b);
+-
+-double gsl_cdf_pareto_P (const double x, const double a, const double b);
+-double gsl_cdf_pareto_Q (const double x, const double a, const double b);
+-
+-double gsl_cdf_pareto_Pinv (const double P, const double a, const double b);
+-double gsl_cdf_pareto_Qinv (const double Q, const double a, const double b);
+-
+-double gsl_cdf_logistic_P (const double x, const double a);
+-double gsl_cdf_logistic_Q (const double x, const double a);
+-
+-double gsl_cdf_logistic_Pinv (const double P, const double a);
+-double gsl_cdf_logistic_Qinv (const double Q, const double a);
+-
+-double gsl_cdf_binomial_P (const unsigned int k, const double p, const unsigned int n);
+-double gsl_cdf_binomial_Q (const unsigned int k, const double p, const unsigned int n);
+-
+-double gsl_cdf_poisson_P (const unsigned int k, const double mu);
+-double gsl_cdf_poisson_Q (const unsigned int k, const double mu);
+-
+-double gsl_cdf_geometric_P (const unsigned int k, const double p);
+-double gsl_cdf_geometric_Q (const unsigned int k, const double p);
+-
+-double gsl_cdf_negative_binomial_P (const unsigned int k, const double p, const double n);
+-double gsl_cdf_negative_binomial_Q (const unsigned int k, const double p, const double n);
+-
+-double gsl_cdf_pascal_P (const unsigned int k, const double p, const unsigned int n);
+-double gsl_cdf_pascal_Q (const unsigned int k, const double p, const unsigned int n);
+-
+-double gsl_cdf_hypergeometric_P (const unsigned int k, const unsigned int n1,
+-                                 const unsigned int n2, const unsigned int t);
+-double gsl_cdf_hypergeometric_Q (const unsigned int k, const unsigned int n1,
+-                                 const unsigned int n2, const unsigned int t);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_CDF_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_multifit.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_multifit.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_multifit.h	(revision 14079)
+@@ -1,130 +0,0 @@
+-/* multifit/gsl_multifit.h
+- * 
+- * Copyright (C) 2000, 2007, 2010 Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_MULTIFIT_H__
+-#define __GSL_MULTIFIT_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_math.h>
+-#include <gsl/gsl_vector.h>
+-#include <gsl/gsl_matrix.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-typedef struct 
+-{
+-  size_t n; /* number of observations */
+-  size_t p; /* number of parameters */
+-  gsl_matrix * A;
+-  gsl_matrix * Q;
+-  gsl_matrix * QSI;
+-  gsl_vector * S;
+-  gsl_vector * t;
+-  gsl_vector * xt;
+-  gsl_vector * D;
+-} 
+-gsl_multifit_linear_workspace;
+-
+-gsl_multifit_linear_workspace *
+-gsl_multifit_linear_alloc (size_t n, size_t p);
+-
+-void
+-gsl_multifit_linear_free (gsl_multifit_linear_workspace * work);
+-
+-int
+-gsl_multifit_linear (const gsl_matrix * X,
+-                     const gsl_vector * y,
+-                     gsl_vector * c,
+-                     gsl_matrix * cov,
+-                     double * chisq,
+-                     gsl_multifit_linear_workspace * work);
+-
+-int
+-gsl_multifit_linear_svd (const gsl_matrix * X,
+-                         const gsl_vector * y,
+-                         double tol,
+-                         size_t * rank,
+-                         gsl_vector * c,
+-                         gsl_matrix * cov,
+-                         double *chisq, 
+-                         gsl_multifit_linear_workspace * work);
+-
+-int
+-gsl_multifit_linear_usvd (const gsl_matrix * X,
+-                          const gsl_vector * y,
+-                          double tol,
+-                          size_t * rank,
+-                          gsl_vector * c,
+-                          gsl_matrix * cov,
+-                          double *chisq, 
+-                          gsl_multifit_linear_workspace * work);
+-
+-int
+-gsl_multifit_wlinear (const gsl_matrix * X,
+-                      const gsl_vector * w,
+-                      const gsl_vector * y,
+-                      gsl_vector * c,
+-                      gsl_matrix * cov,
+-                      double * chisq,
+-                      gsl_multifit_linear_workspace * work);
+-
+-int
+-gsl_multifit_wlinear_svd (const gsl_matrix * X,
+-                          const gsl_vector * w,
+-                          const gsl_vector * y,
+-                          double tol,
+-                          size_t * rank,
+-                          gsl_vector * c,
+-                          gsl_matrix * cov,
+-                          double *chisq, 
+-                          gsl_multifit_linear_workspace * work);
+-
+-int
+-gsl_multifit_wlinear_usvd (const gsl_matrix * X,
+-                           const gsl_vector * w,
+-                           const gsl_vector * y,
+-                           double tol,
+-                           size_t * rank,
+-                           gsl_vector * c,
+-                           gsl_matrix * cov,
+-                           double *chisq, 
+-                           gsl_multifit_linear_workspace * work);
+-
+-int
+-gsl_multifit_linear_est (const gsl_vector * x,
+-                         const gsl_vector * c,
+-                         const gsl_matrix * cov, double *y, double *y_err);
+-
+-int
+-gsl_multifit_linear_residuals (const gsl_matrix *X, const gsl_vector *y,
+-                               const gsl_vector *c, gsl_vector *r);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_MULTIFIT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_complex_float.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_complex_float.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_complex_float.h	(revision 14079)
+@@ -1,45 +0,0 @@
+-/* permutation/gsl_permute_complex_float.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_PERMUTE_COMPLEX_FLOAT_H__
+-#define __GSL_PERMUTE_COMPLEX_FLOAT_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_complex.h>
+-#include <gsl/gsl_permutation.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-int gsl_permute_complex_float (const size_t * p, float * data, const size_t stride, const size_t n);
+-int gsl_permute_complex_float_inverse (const size_t * p, float * data, const size_t stride, const size_t n);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_PERMUTE_COMPLEX_FLOAT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_multimin.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_multimin.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_multimin.h	(revision 14079)
+@@ -1,226 +0,0 @@
+-/* multimin/gsl_multimin.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000 Fabrice Rossi
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-/* Modified by Tuomo Keskitalo to include fminimizer and 
+-   Nelder Mead related lines */
+-
+-#ifndef __GSL_MULTIMIN_H__
+-#define __GSL_MULTIMIN_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_types.h>
+-#include <gsl/gsl_math.h>
+-#include <gsl/gsl_vector.h>
+-#include <gsl/gsl_matrix.h>
+-#include <gsl/gsl_min.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-/* Definition of an arbitrary real-valued function with gsl_vector input and */
+-/* parameters */
+-struct gsl_multimin_function_struct 
+-{
+-  double (* f) (const gsl_vector * x, void * params);
+-  size_t n;
+-  void * params;
+-};
+-
+-typedef struct gsl_multimin_function_struct gsl_multimin_function;
+-
+-#define GSL_MULTIMIN_FN_EVAL(F,x) (*((F)->f))(x,(F)->params)
+-
+-/* Definition of an arbitrary differentiable real-valued function */
+-/* with gsl_vector input and parameters */
+-struct gsl_multimin_function_fdf_struct 
+-{
+-  double (* f) (const gsl_vector  * x, void * params);
+-  void (* df) (const gsl_vector * x, void * params,gsl_vector * df);
+-  void (* fdf) (const gsl_vector * x, void * params,double *f,gsl_vector * df);
+-  size_t n;
+-  void * params;
+-};
+-
+-typedef struct gsl_multimin_function_fdf_struct gsl_multimin_function_fdf;
+-
+-#define GSL_MULTIMIN_FN_EVAL_F(F,x) (*((F)->f))(x,(F)->params)
+-#define GSL_MULTIMIN_FN_EVAL_DF(F,x,g) (*((F)->df))(x,(F)->params,(g))
+-#define GSL_MULTIMIN_FN_EVAL_F_DF(F,x,y,g) (*((F)->fdf))(x,(F)->params,(y),(g))
+-
+-int gsl_multimin_diff (const gsl_multimin_function * f,
+-                       const gsl_vector * x, gsl_vector * g);
+-
+-/* minimization of non-differentiable functions */
+-
+-typedef struct 
+-{
+-  const char *name;
+-  size_t size;
+-  int (*alloc) (void *state, size_t n);
+-  int (*set) (void *state, gsl_multimin_function * f,
+-              const gsl_vector * x, 
+-              double * size,
+-              const gsl_vector * step_size);
+-  int (*iterate) (void *state, gsl_multimin_function * f, 
+-                  gsl_vector * x, 
+-                  double * size,
+-                  double * fval);
+-  void (*free) (void *state);
+-}
+-gsl_multimin_fminimizer_type;
+-
+-typedef struct 
+-{
+-  /* multi dimensional part */
+-  const gsl_multimin_fminimizer_type *type;
+-  gsl_multimin_function *f;
+-
+-  double fval;
+-  gsl_vector * x;
+-  
+-  double size;
+-
+-  void *state;
+-}
+-gsl_multimin_fminimizer;
+-
+-gsl_multimin_fminimizer *
+-gsl_multimin_fminimizer_alloc(const gsl_multimin_fminimizer_type *T,
+-                              size_t n);
+-
+-int 
+-gsl_multimin_fminimizer_set (gsl_multimin_fminimizer * s,
+-                             gsl_multimin_function * f,
+-                             const gsl_vector * x,
+-                             const gsl_vector * step_size);
+-
+-void
+-gsl_multimin_fminimizer_free(gsl_multimin_fminimizer *s);
+-
+-const char * 
+-gsl_multimin_fminimizer_name (const gsl_multimin_fminimizer * s);
+-
+-int
+-gsl_multimin_fminimizer_iterate(gsl_multimin_fminimizer *s);
+-
+-gsl_vector * 
+-gsl_multimin_fminimizer_x (const gsl_multimin_fminimizer * s);
+-
+-double 
+-gsl_multimin_fminimizer_minimum (const gsl_multimin_fminimizer * s);
+-
+-double
+-gsl_multimin_fminimizer_size (const gsl_multimin_fminimizer * s);
+-
+-/* Convergence test functions */
+-
+-int
+-gsl_multimin_test_gradient(const gsl_vector * g, double epsabs);
+-
+-int
+-gsl_multimin_test_size(const double size, double epsabs);
+-
+-/* minimisation of differentiable functions */
+-
+-typedef struct 
+-{
+-  const char *name;
+-  size_t size;
+-  int (*alloc) (void *state, size_t n);
+-  int (*set) (void *state, gsl_multimin_function_fdf * fdf,
+-              const gsl_vector * x, double * f, 
+-              gsl_vector * gradient, double step_size, double tol);
+-  int (*iterate) (void *state,gsl_multimin_function_fdf * fdf, 
+-                  gsl_vector * x, double * f, 
+-                  gsl_vector * gradient, gsl_vector * dx);
+-  int (*restart) (void *state);
+-  void (*free) (void *state);
+-}
+-gsl_multimin_fdfminimizer_type;
+-
+-typedef struct 
+-{
+-  /* multi dimensional part */
+-  const gsl_multimin_fdfminimizer_type *type;
+-  gsl_multimin_function_fdf *fdf;
+-
+-  double f;
+-  gsl_vector * x;
+-  gsl_vector * gradient;
+-  gsl_vector * dx;
+-
+-  void *state;
+-}
+-gsl_multimin_fdfminimizer;
+-
+-gsl_multimin_fdfminimizer *
+-gsl_multimin_fdfminimizer_alloc(const gsl_multimin_fdfminimizer_type *T,
+-                                size_t n);
+-
+-int 
+-gsl_multimin_fdfminimizer_set (gsl_multimin_fdfminimizer * s,
+-                               gsl_multimin_function_fdf *fdf,
+-                               const gsl_vector * x,
+-                               double step_size, double tol);
+-
+-void
+-gsl_multimin_fdfminimizer_free(gsl_multimin_fdfminimizer *s);
+-
+-const char * 
+-gsl_multimin_fdfminimizer_name (const gsl_multimin_fdfminimizer * s);
+-
+-int
+-gsl_multimin_fdfminimizer_iterate(gsl_multimin_fdfminimizer *s);
+-
+-int
+-gsl_multimin_fdfminimizer_restart(gsl_multimin_fdfminimizer *s);
+-
+-gsl_vector * 
+-gsl_multimin_fdfminimizer_x (const gsl_multimin_fdfminimizer * s);
+-
+-gsl_vector * 
+-gsl_multimin_fdfminimizer_dx (const gsl_multimin_fdfminimizer * s);
+-
+-gsl_vector * 
+-gsl_multimin_fdfminimizer_gradient (const gsl_multimin_fdfminimizer * s);
+-
+-double 
+-gsl_multimin_fdfminimizer_minimum (const gsl_multimin_fdfminimizer * s);
+-
+-GSL_VAR const gsl_multimin_fdfminimizer_type *gsl_multimin_fdfminimizer_steepest_descent;
+-GSL_VAR const gsl_multimin_fdfminimizer_type *gsl_multimin_fdfminimizer_conjugate_pr;
+-GSL_VAR const gsl_multimin_fdfminimizer_type *gsl_multimin_fdfminimizer_conjugate_fr;
+-GSL_VAR const gsl_multimin_fdfminimizer_type *gsl_multimin_fdfminimizer_vector_bfgs;
+-GSL_VAR const gsl_multimin_fdfminimizer_type *gsl_multimin_fdfminimizer_vector_bfgs2;
+-GSL_VAR const gsl_multimin_fminimizer_type *gsl_multimin_fminimizer_nmsimplex;
+-GSL_VAR const gsl_multimin_fminimizer_type *gsl_multimin_fminimizer_nmsimplex2;
+-GSL_VAR const gsl_multimin_fminimizer_type *gsl_multimin_fminimizer_nmsimplex2rand;
+-
+-__END_DECLS
+-
+-#endif /* __GSL_MULTIMIN_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_double.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_double.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_double.h	(revision 14079)
+@@ -1,350 +0,0 @@
+-/* matrix/gsl_matrix_double.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_MATRIX_DOUBLE_H__
+-#define __GSL_MATRIX_DOUBLE_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_types.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_inline.h>
+-#include <gsl/gsl_check_range.h>
+-#include <gsl/gsl_vector_double.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-typedef struct 
+-{
+-  size_t size1;
+-  size_t size2;
+-  size_t tda;
+-  double * data;
+-  gsl_block * block;
+-  int owner;
+-} gsl_matrix;
+-
+-typedef struct
+-{
+-  gsl_matrix matrix;
+-} _gsl_matrix_view;
+-
+-typedef _gsl_matrix_view gsl_matrix_view;
+-
+-typedef struct
+-{
+-  gsl_matrix matrix;
+-} _gsl_matrix_const_view;
+-
+-typedef const _gsl_matrix_const_view gsl_matrix_const_view;
+-
+-/* Allocation */
+-
+-gsl_matrix * 
+-gsl_matrix_alloc (const size_t n1, const size_t n2);
+-
+-gsl_matrix * 
+-gsl_matrix_calloc (const size_t n1, const size_t n2);
+-
+-gsl_matrix * 
+-gsl_matrix_alloc_from_block (gsl_block * b, 
+-                                   const size_t offset, 
+-                                   const size_t n1, 
+-                                   const size_t n2, 
+-                                   const size_t d2);
+-
+-gsl_matrix * 
+-gsl_matrix_alloc_from_matrix (gsl_matrix * m,
+-                                    const size_t k1, 
+-                                    const size_t k2,
+-                                    const size_t n1, 
+-                                    const size_t n2);
+-
+-gsl_vector * 
+-gsl_vector_alloc_row_from_matrix (gsl_matrix * m,
+-                                        const size_t i);
+-
+-gsl_vector * 
+-gsl_vector_alloc_col_from_matrix (gsl_matrix * m,
+-                                        const size_t j);
+-
+-void gsl_matrix_free (gsl_matrix * m);
+-
+-/* Views */
+-
+-_gsl_matrix_view 
+-gsl_matrix_submatrix (gsl_matrix * m, 
+-                            const size_t i, const size_t j, 
+-                            const size_t n1, const size_t n2);
+-
+-_gsl_vector_view 
+-gsl_matrix_row (gsl_matrix * m, const size_t i);
+-
+-_gsl_vector_view 
+-gsl_matrix_column (gsl_matrix * m, const size_t j);
+-
+-_gsl_vector_view 
+-gsl_matrix_diagonal (gsl_matrix * m);
+-
+-_gsl_vector_view 
+-gsl_matrix_subdiagonal (gsl_matrix * m, const size_t k);
+-
+-_gsl_vector_view 
+-gsl_matrix_superdiagonal (gsl_matrix * m, const size_t k);
+-
+-_gsl_vector_view
+-gsl_matrix_subrow (gsl_matrix * m, const size_t i,
+-                         const size_t offset, const size_t n);
+-
+-_gsl_vector_view
+-gsl_matrix_subcolumn (gsl_matrix * m, const size_t j,
+-                            const size_t offset, const size_t n);
+-
+-_gsl_matrix_view
+-gsl_matrix_view_array (double * base,
+-                             const size_t n1, 
+-                             const size_t n2);
+-
+-_gsl_matrix_view
+-gsl_matrix_view_array_with_tda (double * base, 
+-                                      const size_t n1, 
+-                                      const size_t n2,
+-                                      const size_t tda);
+-
+-
+-_gsl_matrix_view
+-gsl_matrix_view_vector (gsl_vector * v,
+-                              const size_t n1, 
+-                              const size_t n2);
+-
+-_gsl_matrix_view
+-gsl_matrix_view_vector_with_tda (gsl_vector * v,
+-                                       const size_t n1, 
+-                                       const size_t n2,
+-                                       const size_t tda);
+-
+-
+-_gsl_matrix_const_view 
+-gsl_matrix_const_submatrix (const gsl_matrix * m, 
+-                                  const size_t i, const size_t j, 
+-                                  const size_t n1, const size_t n2);
+-
+-_gsl_vector_const_view 
+-gsl_matrix_const_row (const gsl_matrix * m, 
+-                            const size_t i);
+-
+-_gsl_vector_const_view 
+-gsl_matrix_const_column (const gsl_matrix * m, 
+-                               const size_t j);
+-
+-_gsl_vector_const_view
+-gsl_matrix_const_diagonal (const gsl_matrix * m);
+-
+-_gsl_vector_const_view 
+-gsl_matrix_const_subdiagonal (const gsl_matrix * m, 
+-                                    const size_t k);
+-
+-_gsl_vector_const_view 
+-gsl_matrix_const_superdiagonal (const gsl_matrix * m, 
+-                                      const size_t k);
+-
+-_gsl_vector_const_view
+-gsl_matrix_const_subrow (const gsl_matrix * m, const size_t i,
+-                               const size_t offset, const size_t n);
+-
+-_gsl_vector_const_view
+-gsl_matrix_const_subcolumn (const gsl_matrix * m, const size_t j,
+-                                  const size_t offset, const size_t n);
+-
+-_gsl_matrix_const_view
+-gsl_matrix_const_view_array (const double * base,
+-                                   const size_t n1, 
+-                                   const size_t n2);
+-
+-_gsl_matrix_const_view
+-gsl_matrix_const_view_array_with_tda (const double * base, 
+-                                            const size_t n1, 
+-                                            const size_t n2,
+-                                            const size_t tda);
+-
+-_gsl_matrix_const_view
+-gsl_matrix_const_view_vector (const gsl_vector * v,
+-                                    const size_t n1, 
+-                                    const size_t n2);
+-
+-_gsl_matrix_const_view
+-gsl_matrix_const_view_vector_with_tda (const gsl_vector * v,
+-                                             const size_t n1, 
+-                                             const size_t n2,
+-                                             const size_t tda);
+-
+-/* Operations */
+-
+-void gsl_matrix_set_zero (gsl_matrix * m);
+-void gsl_matrix_set_identity (gsl_matrix * m);
+-void gsl_matrix_set_all (gsl_matrix * m, double x);
+-
+-int gsl_matrix_fread (FILE * stream, gsl_matrix * m) ;
+-int gsl_matrix_fwrite (FILE * stream, const gsl_matrix * m) ;
+-int gsl_matrix_fscanf (FILE * stream, gsl_matrix * m);
+-int gsl_matrix_fprintf (FILE * stream, const gsl_matrix * m, const char * format);
+- 
+-int gsl_matrix_memcpy(gsl_matrix * dest, const gsl_matrix * src);
+-int gsl_matrix_swap(gsl_matrix * m1, gsl_matrix * m2);
+-
+-int gsl_matrix_swap_rows(gsl_matrix * m, const size_t i, const size_t j);
+-int gsl_matrix_swap_columns(gsl_matrix * m, const size_t i, const size_t j);
+-int gsl_matrix_swap_rowcol(gsl_matrix * m, const size_t i, const size_t j);
+-int gsl_matrix_transpose (gsl_matrix * m);
+-int gsl_matrix_transpose_memcpy (gsl_matrix * dest, const gsl_matrix * src);
+-
+-double gsl_matrix_max (const gsl_matrix * m);
+-double gsl_matrix_min (const gsl_matrix * m);
+-void gsl_matrix_minmax (const gsl_matrix * m, double * min_out, double * max_out);
+-
+-void gsl_matrix_max_index (const gsl_matrix * m, size_t * imax, size_t *jmax);
+-void gsl_matrix_min_index (const gsl_matrix * m, size_t * imin, size_t *jmin);
+-void gsl_matrix_minmax_index (const gsl_matrix * m, size_t * imin, size_t * jmin, size_t * imax, size_t * jmax);
+-
+-int gsl_matrix_equal (const gsl_matrix * a, const gsl_matrix * b);
+-
+-int gsl_matrix_isnull (const gsl_matrix * m);
+-int gsl_matrix_ispos (const gsl_matrix * m);
+-int gsl_matrix_isneg (const gsl_matrix * m);
+-int gsl_matrix_isnonneg (const gsl_matrix * m);
+-
+-int gsl_matrix_add (gsl_matrix * a, const gsl_matrix * b);
+-int gsl_matrix_sub (gsl_matrix * a, const gsl_matrix * b);
+-int gsl_matrix_mul_elements (gsl_matrix * a, const gsl_matrix * b);
+-int gsl_matrix_div_elements (gsl_matrix * a, const gsl_matrix * b);
+-int gsl_matrix_scale (gsl_matrix * a, const double x);
+-int gsl_matrix_add_constant (gsl_matrix * a, const double x);
+-int gsl_matrix_add_diagonal (gsl_matrix * a, const double x);
+-
+-/***********************************************************************/
+-/* The functions below are obsolete                                    */
+-/***********************************************************************/
+-int gsl_matrix_get_row(gsl_vector * v, const gsl_matrix * m, const size_t i);
+-int gsl_matrix_get_col(gsl_vector * v, const gsl_matrix * m, const size_t j);
+-int gsl_matrix_set_row(gsl_matrix * m, const size_t i, const gsl_vector * v);
+-int gsl_matrix_set_col(gsl_matrix * m, const size_t j, const gsl_vector * v);
+-/***********************************************************************/
+-
+-/* inline functions if you are using GCC */
+-
+-INLINE_DECL double   gsl_matrix_get(const gsl_matrix * m, const size_t i, const size_t j);
+-INLINE_DECL void    gsl_matrix_set(gsl_matrix * m, const size_t i, const size_t j, const double x);
+-INLINE_DECL double * gsl_matrix_ptr(gsl_matrix * m, const size_t i, const size_t j);
+-INLINE_DECL const double * gsl_matrix_const_ptr(const gsl_matrix * m, const size_t i, const size_t j);
+-
+-#ifdef HAVE_INLINE
+-INLINE_FUN 
+-double
+-gsl_matrix_get(const gsl_matrix * m, const size_t i, const size_t j)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(1)) 
+-    {
+-      if (i >= m->size1)
+-        {
+-          GSL_ERROR_VAL("first index out of range", GSL_EINVAL, 0) ;
+-        }
+-      else if (j >= m->size2)
+-        {
+-          GSL_ERROR_VAL("second index out of range", GSL_EINVAL, 0) ;
+-        }
+-    }
+-#endif
+-  return m->data[i * m->tda + j] ;
+-} 
+-
+-INLINE_FUN 
+-void
+-gsl_matrix_set(gsl_matrix * m, const size_t i, const size_t j, const double x)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(1)) 
+-    {
+-      if (i >= m->size1)
+-        {
+-          GSL_ERROR_VOID("first index out of range", GSL_EINVAL) ;
+-        }
+-      else if (j >= m->size2)
+-        {
+-          GSL_ERROR_VOID("second index out of range", GSL_EINVAL) ;
+-        }
+-    }
+-#endif
+-  m->data[i * m->tda + j] = x ;
+-}
+-
+-INLINE_FUN 
+-double *
+-gsl_matrix_ptr(gsl_matrix * m, const size_t i, const size_t j)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(1)) 
+-    {
+-      if (i >= m->size1)
+-        {
+-          GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
+-        }
+-      else if (j >= m->size2)
+-        {
+-          GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
+-        }
+-    }
+-#endif
+-  return (double *) (m->data + (i * m->tda + j)) ;
+-} 
+-
+-INLINE_FUN 
+-const double *
+-gsl_matrix_const_ptr(const gsl_matrix * m, const size_t i, const size_t j)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(1)) 
+-    {
+-      if (i >= m->size1)
+-        {
+-          GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
+-        }
+-      else if (j >= m->size2)
+-        {
+-          GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
+-        }
+-    }
+-#endif
+-  return (const double *) (m->data + (i * m->tda + j)) ;
+-} 
+-
+-#endif
+-
+-__END_DECLS
+-
+-#endif /* __GSL_MATRIX_DOUBLE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_const_cgsm.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_const_cgsm.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_const_cgsm.h	(revision 14079)
+@@ -1,122 +0,0 @@
+-/* const/gsl_const_cgsm.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+- * 2006, 2007, 2008, 2009 Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_CONST_CGSM__
+-#define __GSL_CONST_CGSM__
+-
+-#define GSL_CONST_CGSM_SPEED_OF_LIGHT (2.99792458e10) /* cm / s */
+-#define GSL_CONST_CGSM_GRAVITATIONAL_CONSTANT (6.673e-8) /* cm^3 / g s^2 */
+-#define GSL_CONST_CGSM_PLANCKS_CONSTANT_H (6.62606896e-27) /* g cm^2 / s */
+-#define GSL_CONST_CGSM_PLANCKS_CONSTANT_HBAR (1.05457162825e-27) /* g cm^2 / s */
+-#define GSL_CONST_CGSM_ASTRONOMICAL_UNIT (1.49597870691e13) /* cm */
+-#define GSL_CONST_CGSM_LIGHT_YEAR (9.46053620707e17) /* cm */
+-#define GSL_CONST_CGSM_PARSEC (3.08567758135e18) /* cm */
+-#define GSL_CONST_CGSM_GRAV_ACCEL (9.80665e2) /* cm / s^2 */
+-#define GSL_CONST_CGSM_ELECTRON_VOLT (1.602176487e-12) /* g cm^2 / s^2 */
+-#define GSL_CONST_CGSM_MASS_ELECTRON (9.10938188e-28) /* g */
+-#define GSL_CONST_CGSM_MASS_MUON (1.88353109e-25) /* g */
+-#define GSL_CONST_CGSM_MASS_PROTON (1.67262158e-24) /* g */
+-#define GSL_CONST_CGSM_MASS_NEUTRON (1.67492716e-24) /* g */
+-#define GSL_CONST_CGSM_RYDBERG (2.17987196968e-11) /* g cm^2 / s^2 */
+-#define GSL_CONST_CGSM_BOLTZMANN (1.3806504e-16) /* g cm^2 / K s^2 */
+-#define GSL_CONST_CGSM_MOLAR_GAS (8.314472e7) /* g cm^2 / K mol s^2 */
+-#define GSL_CONST_CGSM_STANDARD_GAS_VOLUME (2.2710981e4) /* cm^3 / mol */
+-#define GSL_CONST_CGSM_MINUTE (6e1) /* s */
+-#define GSL_CONST_CGSM_HOUR (3.6e3) /* s */
+-#define GSL_CONST_CGSM_DAY (8.64e4) /* s */
+-#define GSL_CONST_CGSM_WEEK (6.048e5) /* s */
+-#define GSL_CONST_CGSM_INCH (2.54e0) /* cm */
+-#define GSL_CONST_CGSM_FOOT (3.048e1) /* cm */
+-#define GSL_CONST_CGSM_YARD (9.144e1) /* cm */
+-#define GSL_CONST_CGSM_MILE (1.609344e5) /* cm */
+-#define GSL_CONST_CGSM_NAUTICAL_MILE (1.852e5) /* cm */
+-#define GSL_CONST_CGSM_FATHOM (1.8288e2) /* cm */
+-#define GSL_CONST_CGSM_MIL (2.54e-3) /* cm */
+-#define GSL_CONST_CGSM_POINT (3.52777777778e-2) /* cm */
+-#define GSL_CONST_CGSM_TEXPOINT (3.51459803515e-2) /* cm */
+-#define GSL_CONST_CGSM_MICRON (1e-4) /* cm */
+-#define GSL_CONST_CGSM_ANGSTROM (1e-8) /* cm */
+-#define GSL_CONST_CGSM_HECTARE (1e8) /* cm^2 */
+-#define GSL_CONST_CGSM_ACRE (4.04685642241e7) /* cm^2 */
+-#define GSL_CONST_CGSM_BARN (1e-24) /* cm^2 */
+-#define GSL_CONST_CGSM_LITER (1e3) /* cm^3 */
+-#define GSL_CONST_CGSM_US_GALLON (3.78541178402e3) /* cm^3 */
+-#define GSL_CONST_CGSM_QUART (9.46352946004e2) /* cm^3 */
+-#define GSL_CONST_CGSM_PINT (4.73176473002e2) /* cm^3 */
+-#define GSL_CONST_CGSM_CUP (2.36588236501e2) /* cm^3 */
+-#define GSL_CONST_CGSM_FLUID_OUNCE (2.95735295626e1) /* cm^3 */
+-#define GSL_CONST_CGSM_TABLESPOON (1.47867647813e1) /* cm^3 */
+-#define GSL_CONST_CGSM_TEASPOON (4.92892159375e0) /* cm^3 */
+-#define GSL_CONST_CGSM_CANADIAN_GALLON (4.54609e3) /* cm^3 */
+-#define GSL_CONST_CGSM_UK_GALLON (4.546092e3) /* cm^3 */
+-#define GSL_CONST_CGSM_MILES_PER_HOUR (4.4704e1) /* cm / s */
+-#define GSL_CONST_CGSM_KILOMETERS_PER_HOUR (2.77777777778e1) /* cm / s */
+-#define GSL_CONST_CGSM_KNOT (5.14444444444e1) /* cm / s */
+-#define GSL_CONST_CGSM_POUND_MASS (4.5359237e2) /* g */
+-#define GSL_CONST_CGSM_OUNCE_MASS (2.8349523125e1) /* g */
+-#define GSL_CONST_CGSM_TON (9.0718474e5) /* g */
+-#define GSL_CONST_CGSM_METRIC_TON (1e6) /* g */
+-#define GSL_CONST_CGSM_UK_TON (1.0160469088e6) /* g */
+-#define GSL_CONST_CGSM_TROY_OUNCE (3.1103475e1) /* g */
+-#define GSL_CONST_CGSM_CARAT (2e-1) /* g */
+-#define GSL_CONST_CGSM_UNIFIED_ATOMIC_MASS (1.660538782e-24) /* g */
+-#define GSL_CONST_CGSM_GRAM_FORCE (9.80665e2) /* cm g / s^2 */
+-#define GSL_CONST_CGSM_POUND_FORCE (4.44822161526e5) /* cm g / s^2 */
+-#define GSL_CONST_CGSM_KILOPOUND_FORCE (4.44822161526e8) /* cm g / s^2 */
+-#define GSL_CONST_CGSM_POUNDAL (1.38255e4) /* cm g / s^2 */
+-#define GSL_CONST_CGSM_CALORIE (4.1868e7) /* g cm^2 / s^2 */
+-#define GSL_CONST_CGSM_BTU (1.05505585262e10) /* g cm^2 / s^2 */
+-#define GSL_CONST_CGSM_THERM (1.05506e15) /* g cm^2 / s^2 */
+-#define GSL_CONST_CGSM_HORSEPOWER (7.457e9) /* g cm^2 / s^3 */
+-#define GSL_CONST_CGSM_BAR (1e6) /* g / cm s^2 */
+-#define GSL_CONST_CGSM_STD_ATMOSPHERE (1.01325e6) /* g / cm s^2 */
+-#define GSL_CONST_CGSM_TORR (1.33322368421e3) /* g / cm s^2 */
+-#define GSL_CONST_CGSM_METER_OF_MERCURY (1.33322368421e6) /* g / cm s^2 */
+-#define GSL_CONST_CGSM_INCH_OF_MERCURY (3.38638815789e4) /* g / cm s^2 */
+-#define GSL_CONST_CGSM_INCH_OF_WATER (2.490889e3) /* g / cm s^2 */
+-#define GSL_CONST_CGSM_PSI (6.89475729317e4) /* g / cm s^2 */
+-#define GSL_CONST_CGSM_POISE (1e0) /* g / cm s */
+-#define GSL_CONST_CGSM_STOKES (1e0) /* cm^2 / s */
+-#define GSL_CONST_CGSM_STILB (1e0) /* cd / cm^2 */
+-#define GSL_CONST_CGSM_LUMEN (1e0) /* cd sr */
+-#define GSL_CONST_CGSM_LUX (1e-4) /* cd sr / cm^2 */
+-#define GSL_CONST_CGSM_PHOT (1e0) /* cd sr / cm^2 */
+-#define GSL_CONST_CGSM_FOOTCANDLE (1.076e-3) /* cd sr / cm^2 */
+-#define GSL_CONST_CGSM_LAMBERT (1e0) /* cd sr / cm^2 */
+-#define GSL_CONST_CGSM_FOOTLAMBERT (1.07639104e-3) /* cd sr / cm^2 */
+-#define GSL_CONST_CGSM_CURIE (3.7e10) /* 1 / s */
+-#define GSL_CONST_CGSM_ROENTGEN (2.58e-8) /* abamp s / g */
+-#define GSL_CONST_CGSM_RAD (1e2) /* cm^2 / s^2 */
+-#define GSL_CONST_CGSM_SOLAR_MASS (1.98892e33) /* g */
+-#define GSL_CONST_CGSM_BOHR_RADIUS (5.291772083e-9) /* cm */
+-#define GSL_CONST_CGSM_NEWTON (1e5) /* cm g / s^2 */
+-#define GSL_CONST_CGSM_DYNE (1e0) /* cm g / s^2 */
+-#define GSL_CONST_CGSM_JOULE (1e7) /* g cm^2 / s^2 */
+-#define GSL_CONST_CGSM_ERG (1e0) /* g cm^2 / s^2 */
+-#define GSL_CONST_CGSM_STEFAN_BOLTZMANN_CONSTANT (5.67040047374e-5) /* g / K^4 s^3 */
+-#define GSL_CONST_CGSM_THOMSON_CROSS_SECTION (6.65245893699e-25) /* cm^2 */
+-#define GSL_CONST_CGSM_BOHR_MAGNETON (9.27400899e-21) /* abamp cm^2 */
+-#define GSL_CONST_CGSM_NUCLEAR_MAGNETON (5.05078317e-24) /* abamp cm^2 */
+-#define GSL_CONST_CGSM_ELECTRON_MAGNETIC_MOMENT (9.28476362e-21) /* abamp cm^2 */
+-#define GSL_CONST_CGSM_PROTON_MAGNETIC_MOMENT (1.410606633e-23) /* abamp cm^2 */
+-#define GSL_CONST_CGSM_FARADAY (9.64853429775e3) /* abamp s / mol */
+-#define GSL_CONST_CGSM_ELECTRON_CHARGE (1.602176487e-20) /* abamp s */
+-
+-#endif /* __GSL_CONST_CGSM__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_uint.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_uint.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_uint.h	(revision 14079)
+@@ -1,230 +0,0 @@
+-/* vector/gsl_vector_uint.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_VECTOR_UINT_H__
+-#define __GSL_VECTOR_UINT_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_types.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_inline.h>
+-#include <gsl/gsl_check_range.h>
+-#include <gsl/gsl_block_uint.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-typedef struct 
+-{
+-  size_t size;
+-  size_t stride;
+-  unsigned int *data;
+-  gsl_block_uint *block;
+-  int owner;
+-} 
+-gsl_vector_uint;
+-
+-typedef struct
+-{
+-  gsl_vector_uint vector;
+-} _gsl_vector_uint_view;
+-
+-typedef _gsl_vector_uint_view gsl_vector_uint_view;
+-
+-typedef struct
+-{
+-  gsl_vector_uint vector;
+-} _gsl_vector_uint_const_view;
+-
+-typedef const _gsl_vector_uint_const_view gsl_vector_uint_const_view;
+-
+-
+-/* Allocation */
+-
+-gsl_vector_uint *gsl_vector_uint_alloc (const size_t n);
+-gsl_vector_uint *gsl_vector_uint_calloc (const size_t n);
+-
+-gsl_vector_uint *gsl_vector_uint_alloc_from_block (gsl_block_uint * b,
+-                                                     const size_t offset, 
+-                                                     const size_t n, 
+-                                                     const size_t stride);
+-
+-gsl_vector_uint *gsl_vector_uint_alloc_from_vector (gsl_vector_uint * v,
+-                                                      const size_t offset, 
+-                                                      const size_t n, 
+-                                                      const size_t stride);
+-
+-void gsl_vector_uint_free (gsl_vector_uint * v);
+-
+-/* Views */
+-
+-_gsl_vector_uint_view 
+-gsl_vector_uint_view_array (unsigned int *v, size_t n);
+-
+-_gsl_vector_uint_view 
+-gsl_vector_uint_view_array_with_stride (unsigned int *base,
+-                                         size_t stride,
+-                                         size_t n);
+-
+-_gsl_vector_uint_const_view 
+-gsl_vector_uint_const_view_array (const unsigned int *v, size_t n);
+-
+-_gsl_vector_uint_const_view 
+-gsl_vector_uint_const_view_array_with_stride (const unsigned int *base,
+-                                               size_t stride,
+-                                               size_t n);
+-
+-_gsl_vector_uint_view 
+-gsl_vector_uint_subvector (gsl_vector_uint *v, 
+-                            size_t i, 
+-                            size_t n);
+-
+-_gsl_vector_uint_view 
+-gsl_vector_uint_subvector_with_stride (gsl_vector_uint *v, 
+-                                        size_t i,
+-                                        size_t stride,
+-                                        size_t n);
+-
+-_gsl_vector_uint_const_view 
+-gsl_vector_uint_const_subvector (const gsl_vector_uint *v, 
+-                                  size_t i, 
+-                                  size_t n);
+-
+-_gsl_vector_uint_const_view 
+-gsl_vector_uint_const_subvector_with_stride (const gsl_vector_uint *v, 
+-                                              size_t i, 
+-                                              size_t stride,
+-                                              size_t n);
+-
+-/* Operations */
+-
+-void gsl_vector_uint_set_zero (gsl_vector_uint * v);
+-void gsl_vector_uint_set_all (gsl_vector_uint * v, unsigned int x);
+-int gsl_vector_uint_set_basis (gsl_vector_uint * v, size_t i);
+-
+-int gsl_vector_uint_fread (FILE * stream, gsl_vector_uint * v);
+-int gsl_vector_uint_fwrite (FILE * stream, const gsl_vector_uint * v);
+-int gsl_vector_uint_fscanf (FILE * stream, gsl_vector_uint * v);
+-int gsl_vector_uint_fprintf (FILE * stream, const gsl_vector_uint * v,
+-                              const char *format);
+-
+-int gsl_vector_uint_memcpy (gsl_vector_uint * dest, const gsl_vector_uint * src);
+-
+-int gsl_vector_uint_reverse (gsl_vector_uint * v);
+-
+-int gsl_vector_uint_swap (gsl_vector_uint * v, gsl_vector_uint * w);
+-int gsl_vector_uint_swap_elements (gsl_vector_uint * v, const size_t i, const size_t j);
+-
+-unsigned int gsl_vector_uint_max (const gsl_vector_uint * v);
+-unsigned int gsl_vector_uint_min (const gsl_vector_uint * v);
+-void gsl_vector_uint_minmax (const gsl_vector_uint * v, unsigned int * min_out, unsigned int * max_out);
+-
+-size_t gsl_vector_uint_max_index (const gsl_vector_uint * v);
+-size_t gsl_vector_uint_min_index (const gsl_vector_uint * v);
+-void gsl_vector_uint_minmax_index (const gsl_vector_uint * v, size_t * imin, size_t * imax);
+-
+-int gsl_vector_uint_add (gsl_vector_uint * a, const gsl_vector_uint * b);
+-int gsl_vector_uint_sub (gsl_vector_uint * a, const gsl_vector_uint * b);
+-int gsl_vector_uint_mul (gsl_vector_uint * a, const gsl_vector_uint * b);
+-int gsl_vector_uint_div (gsl_vector_uint * a, const gsl_vector_uint * b);
+-int gsl_vector_uint_scale (gsl_vector_uint * a, const double x);
+-int gsl_vector_uint_add_constant (gsl_vector_uint * a, const double x);
+-
+-int gsl_vector_uint_equal (const gsl_vector_uint * u, 
+-                            const gsl_vector_uint * v);
+-
+-int gsl_vector_uint_isnull (const gsl_vector_uint * v);
+-int gsl_vector_uint_ispos (const gsl_vector_uint * v);
+-int gsl_vector_uint_isneg (const gsl_vector_uint * v);
+-int gsl_vector_uint_isnonneg (const gsl_vector_uint * v);
+-
+-INLINE_DECL unsigned int gsl_vector_uint_get (const gsl_vector_uint * v, const size_t i);
+-INLINE_DECL void gsl_vector_uint_set (gsl_vector_uint * v, const size_t i, unsigned int x);
+-INLINE_DECL unsigned int * gsl_vector_uint_ptr (gsl_vector_uint * v, const size_t i);
+-INLINE_DECL const unsigned int * gsl_vector_uint_const_ptr (const gsl_vector_uint * v, const size_t i);
+-
+-#ifdef HAVE_INLINE
+-
+-INLINE_FUN
+-unsigned int
+-gsl_vector_uint_get (const gsl_vector_uint * v, const size_t i)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(i >= v->size))
+-    {
+-      GSL_ERROR_VAL ("index out of range", GSL_EINVAL, 0);
+-    }
+-#endif
+-  return v->data[i * v->stride];
+-}
+-
+-INLINE_FUN
+-void
+-gsl_vector_uint_set (gsl_vector_uint * v, const size_t i, unsigned int x)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(i >= v->size))
+-    {
+-      GSL_ERROR_VOID ("index out of range", GSL_EINVAL);
+-    }
+-#endif
+-  v->data[i * v->stride] = x;
+-}
+-
+-INLINE_FUN
+-unsigned int *
+-gsl_vector_uint_ptr (gsl_vector_uint * v, const size_t i)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(i >= v->size))
+-    {
+-      GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
+-    }
+-#endif
+-  return (unsigned int *) (v->data + i * v->stride);
+-}
+-
+-INLINE_FUN
+-const unsigned int *
+-gsl_vector_uint_const_ptr (const gsl_vector_uint * v, const size_t i)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(i >= v->size))
+-    {
+-      GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
+-    }
+-#endif
+-  return (const unsigned int *) (v->data + i * v->stride);
+-}
+-#endif /* HAVE_INLINE */
+-
+-__END_DECLS
+-
+-#endif /* __GSL_VECTOR_UINT_H__ */
+-
+-
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_char.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_char.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_char.h	(revision 14079)
+@@ -1,350 +0,0 @@
+-/* matrix/gsl_matrix_char.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_MATRIX_CHAR_H__
+-#define __GSL_MATRIX_CHAR_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_types.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_inline.h>
+-#include <gsl/gsl_check_range.h>
+-#include <gsl/gsl_vector_char.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-typedef struct 
+-{
+-  size_t size1;
+-  size_t size2;
+-  size_t tda;
+-  char * data;
+-  gsl_block_char * block;
+-  int owner;
+-} gsl_matrix_char;
+-
+-typedef struct
+-{
+-  gsl_matrix_char matrix;
+-} _gsl_matrix_char_view;
+-
+-typedef _gsl_matrix_char_view gsl_matrix_char_view;
+-
+-typedef struct
+-{
+-  gsl_matrix_char matrix;
+-} _gsl_matrix_char_const_view;
+-
+-typedef const _gsl_matrix_char_const_view gsl_matrix_char_const_view;
+-
+-/* Allocation */
+-
+-gsl_matrix_char * 
+-gsl_matrix_char_alloc (const size_t n1, const size_t n2);
+-
+-gsl_matrix_char * 
+-gsl_matrix_char_calloc (const size_t n1, const size_t n2);
+-
+-gsl_matrix_char * 
+-gsl_matrix_char_alloc_from_block (gsl_block_char * b, 
+-                                   const size_t offset, 
+-                                   const size_t n1, 
+-                                   const size_t n2, 
+-                                   const size_t d2);
+-
+-gsl_matrix_char * 
+-gsl_matrix_char_alloc_from_matrix (gsl_matrix_char * m,
+-                                    const size_t k1, 
+-                                    const size_t k2,
+-                                    const size_t n1, 
+-                                    const size_t n2);
+-
+-gsl_vector_char * 
+-gsl_vector_char_alloc_row_from_matrix (gsl_matrix_char * m,
+-                                        const size_t i);
+-
+-gsl_vector_char * 
+-gsl_vector_char_alloc_col_from_matrix (gsl_matrix_char * m,
+-                                        const size_t j);
+-
+-void gsl_matrix_char_free (gsl_matrix_char * m);
+-
+-/* Views */
+-
+-_gsl_matrix_char_view 
+-gsl_matrix_char_submatrix (gsl_matrix_char * m, 
+-                            const size_t i, const size_t j, 
+-                            const size_t n1, const size_t n2);
+-
+-_gsl_vector_char_view 
+-gsl_matrix_char_row (gsl_matrix_char * m, const size_t i);
+-
+-_gsl_vector_char_view 
+-gsl_matrix_char_column (gsl_matrix_char * m, const size_t j);
+-
+-_gsl_vector_char_view 
+-gsl_matrix_char_diagonal (gsl_matrix_char * m);
+-
+-_gsl_vector_char_view 
+-gsl_matrix_char_subdiagonal (gsl_matrix_char * m, const size_t k);
+-
+-_gsl_vector_char_view 
+-gsl_matrix_char_superdiagonal (gsl_matrix_char * m, const size_t k);
+-
+-_gsl_vector_char_view
+-gsl_matrix_char_subrow (gsl_matrix_char * m, const size_t i,
+-                         const size_t offset, const size_t n);
+-
+-_gsl_vector_char_view
+-gsl_matrix_char_subcolumn (gsl_matrix_char * m, const size_t j,
+-                            const size_t offset, const size_t n);
+-
+-_gsl_matrix_char_view
+-gsl_matrix_char_view_array (char * base,
+-                             const size_t n1, 
+-                             const size_t n2);
+-
+-_gsl_matrix_char_view
+-gsl_matrix_char_view_array_with_tda (char * base, 
+-                                      const size_t n1, 
+-                                      const size_t n2,
+-                                      const size_t tda);
+-
+-
+-_gsl_matrix_char_view
+-gsl_matrix_char_view_vector (gsl_vector_char * v,
+-                              const size_t n1, 
+-                              const size_t n2);
+-
+-_gsl_matrix_char_view
+-gsl_matrix_char_view_vector_with_tda (gsl_vector_char * v,
+-                                       const size_t n1, 
+-                                       const size_t n2,
+-                                       const size_t tda);
+-
+-
+-_gsl_matrix_char_const_view 
+-gsl_matrix_char_const_submatrix (const gsl_matrix_char * m, 
+-                                  const size_t i, const size_t j, 
+-                                  const size_t n1, const size_t n2);
+-
+-_gsl_vector_char_const_view 
+-gsl_matrix_char_const_row (const gsl_matrix_char * m, 
+-                            const size_t i);
+-
+-_gsl_vector_char_const_view 
+-gsl_matrix_char_const_column (const gsl_matrix_char * m, 
+-                               const size_t j);
+-
+-_gsl_vector_char_const_view
+-gsl_matrix_char_const_diagonal (const gsl_matrix_char * m);
+-
+-_gsl_vector_char_const_view 
+-gsl_matrix_char_const_subdiagonal (const gsl_matrix_char * m, 
+-                                    const size_t k);
+-
+-_gsl_vector_char_const_view 
+-gsl_matrix_char_const_superdiagonal (const gsl_matrix_char * m, 
+-                                      const size_t k);
+-
+-_gsl_vector_char_const_view
+-gsl_matrix_char_const_subrow (const gsl_matrix_char * m, const size_t i,
+-                               const size_t offset, const size_t n);
+-
+-_gsl_vector_char_const_view
+-gsl_matrix_char_const_subcolumn (const gsl_matrix_char * m, const size_t j,
+-                                  const size_t offset, const size_t n);
+-
+-_gsl_matrix_char_const_view
+-gsl_matrix_char_const_view_array (const char * base,
+-                                   const size_t n1, 
+-                                   const size_t n2);
+-
+-_gsl_matrix_char_const_view
+-gsl_matrix_char_const_view_array_with_tda (const char * base, 
+-                                            const size_t n1, 
+-                                            const size_t n2,
+-                                            const size_t tda);
+-
+-_gsl_matrix_char_const_view
+-gsl_matrix_char_const_view_vector (const gsl_vector_char * v,
+-                                    const size_t n1, 
+-                                    const size_t n2);
+-
+-_gsl_matrix_char_const_view
+-gsl_matrix_char_const_view_vector_with_tda (const gsl_vector_char * v,
+-                                             const size_t n1, 
+-                                             const size_t n2,
+-                                             const size_t tda);
+-
+-/* Operations */
+-
+-void gsl_matrix_char_set_zero (gsl_matrix_char * m);
+-void gsl_matrix_char_set_identity (gsl_matrix_char * m);
+-void gsl_matrix_char_set_all (gsl_matrix_char * m, char x);
+-
+-int gsl_matrix_char_fread (FILE * stream, gsl_matrix_char * m) ;
+-int gsl_matrix_char_fwrite (FILE * stream, const gsl_matrix_char * m) ;
+-int gsl_matrix_char_fscanf (FILE * stream, gsl_matrix_char * m);
+-int gsl_matrix_char_fprintf (FILE * stream, const gsl_matrix_char * m, const char * format);
+- 
+-int gsl_matrix_char_memcpy(gsl_matrix_char * dest, const gsl_matrix_char * src);
+-int gsl_matrix_char_swap(gsl_matrix_char * m1, gsl_matrix_char * m2);
+-
+-int gsl_matrix_char_swap_rows(gsl_matrix_char * m, const size_t i, const size_t j);
+-int gsl_matrix_char_swap_columns(gsl_matrix_char * m, const size_t i, const size_t j);
+-int gsl_matrix_char_swap_rowcol(gsl_matrix_char * m, const size_t i, const size_t j);
+-int gsl_matrix_char_transpose (gsl_matrix_char * m);
+-int gsl_matrix_char_transpose_memcpy (gsl_matrix_char * dest, const gsl_matrix_char * src);
+-
+-char gsl_matrix_char_max (const gsl_matrix_char * m);
+-char gsl_matrix_char_min (const gsl_matrix_char * m);
+-void gsl_matrix_char_minmax (const gsl_matrix_char * m, char * min_out, char * max_out);
+-
+-void gsl_matrix_char_max_index (const gsl_matrix_char * m, size_t * imax, size_t *jmax);
+-void gsl_matrix_char_min_index (const gsl_matrix_char * m, size_t * imin, size_t *jmin);
+-void gsl_matrix_char_minmax_index (const gsl_matrix_char * m, size_t * imin, size_t * jmin, size_t * imax, size_t * jmax);
+-
+-int gsl_matrix_char_equal (const gsl_matrix_char * a, const gsl_matrix_char * b);
+-
+-int gsl_matrix_char_isnull (const gsl_matrix_char * m);
+-int gsl_matrix_char_ispos (const gsl_matrix_char * m);
+-int gsl_matrix_char_isneg (const gsl_matrix_char * m);
+-int gsl_matrix_char_isnonneg (const gsl_matrix_char * m);
+-
+-int gsl_matrix_char_add (gsl_matrix_char * a, const gsl_matrix_char * b);
+-int gsl_matrix_char_sub (gsl_matrix_char * a, const gsl_matrix_char * b);
+-int gsl_matrix_char_mul_elements (gsl_matrix_char * a, const gsl_matrix_char * b);
+-int gsl_matrix_char_div_elements (gsl_matrix_char * a, const gsl_matrix_char * b);
+-int gsl_matrix_char_scale (gsl_matrix_char * a, const double x);
+-int gsl_matrix_char_add_constant (gsl_matrix_char * a, const double x);
+-int gsl_matrix_char_add_diagonal (gsl_matrix_char * a, const double x);
+-
+-/***********************************************************************/
+-/* The functions below are obsolete                                    */
+-/***********************************************************************/
+-int gsl_matrix_char_get_row(gsl_vector_char * v, const gsl_matrix_char * m, const size_t i);
+-int gsl_matrix_char_get_col(gsl_vector_char * v, const gsl_matrix_char * m, const size_t j);
+-int gsl_matrix_char_set_row(gsl_matrix_char * m, const size_t i, const gsl_vector_char * v);
+-int gsl_matrix_char_set_col(gsl_matrix_char * m, const size_t j, const gsl_vector_char * v);
+-/***********************************************************************/
+-
+-/* inline functions if you are using GCC */
+-
+-INLINE_DECL char   gsl_matrix_char_get(const gsl_matrix_char * m, const size_t i, const size_t j);
+-INLINE_DECL void    gsl_matrix_char_set(gsl_matrix_char * m, const size_t i, const size_t j, const char x);
+-INLINE_DECL char * gsl_matrix_char_ptr(gsl_matrix_char * m, const size_t i, const size_t j);
+-INLINE_DECL const char * gsl_matrix_char_const_ptr(const gsl_matrix_char * m, const size_t i, const size_t j);
+-
+-#ifdef HAVE_INLINE
+-INLINE_FUN 
+-char
+-gsl_matrix_char_get(const gsl_matrix_char * m, const size_t i, const size_t j)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(1)) 
+-    {
+-      if (i >= m->size1)
+-        {
+-          GSL_ERROR_VAL("first index out of range", GSL_EINVAL, 0) ;
+-        }
+-      else if (j >= m->size2)
+-        {
+-          GSL_ERROR_VAL("second index out of range", GSL_EINVAL, 0) ;
+-        }
+-    }
+-#endif
+-  return m->data[i * m->tda + j] ;
+-} 
+-
+-INLINE_FUN 
+-void
+-gsl_matrix_char_set(gsl_matrix_char * m, const size_t i, const size_t j, const char x)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(1)) 
+-    {
+-      if (i >= m->size1)
+-        {
+-          GSL_ERROR_VOID("first index out of range", GSL_EINVAL) ;
+-        }
+-      else if (j >= m->size2)
+-        {
+-          GSL_ERROR_VOID("second index out of range", GSL_EINVAL) ;
+-        }
+-    }
+-#endif
+-  m->data[i * m->tda + j] = x ;
+-}
+-
+-INLINE_FUN 
+-char *
+-gsl_matrix_char_ptr(gsl_matrix_char * m, const size_t i, const size_t j)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(1)) 
+-    {
+-      if (i >= m->size1)
+-        {
+-          GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
+-        }
+-      else if (j >= m->size2)
+-        {
+-          GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
+-        }
+-    }
+-#endif
+-  return (char *) (m->data + (i * m->tda + j)) ;
+-} 
+-
+-INLINE_FUN 
+-const char *
+-gsl_matrix_char_const_ptr(const gsl_matrix_char * m, const size_t i, const size_t j)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(1)) 
+-    {
+-      if (i >= m->size1)
+-        {
+-          GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
+-        }
+-      else if (j >= m->size2)
+-        {
+-          GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
+-        }
+-    }
+-#endif
+-  return (const char *) (m->data + (i * m->tda + j)) ;
+-} 
+-
+-#endif
+-
+-__END_DECLS
+-
+-#endif /* __GSL_MATRIX_CHAR_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_uint.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_uint.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_uint.h	(revision 14079)
+@@ -1,45 +0,0 @@
+-/* permutation/gsl_permute_vector_uint.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_PERMUTE_VECTOR_UINT_H__
+-#define __GSL_PERMUTE_VECTOR_UINT_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_permutation.h>
+-#include <gsl/gsl_vector_uint.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-int gsl_permute_vector_uint (const gsl_permutation * p, gsl_vector_uint * v);
+-int gsl_permute_vector_uint_inverse (const gsl_permutation * p, gsl_vector_uint * v);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_PERMUTE_VECTOR_UINT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_complex_long_double.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_complex_long_double.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_complex_long_double.h	(revision 14079)
+@@ -1,45 +0,0 @@
+-/* permutation/gsl_permute_vector_complex_long_double.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_PERMUTE_VECTOR_COMPLEX_LONG_DOUBLE_H__
+-#define __GSL_PERMUTE_VECTOR_COMPLEX_LONG_DOUBLE_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_permutation.h>
+-#include <gsl/gsl_vector_complex_long_double.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-int gsl_permute_vector_complex_long_double (const gsl_permutation * p, gsl_vector_complex_long_double * v);
+-int gsl_permute_vector_complex_long_double_inverse (const gsl_permutation * p, gsl_vector_complex_long_double * v);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_PERMUTE_VECTOR_COMPLEX_LONG_DOUBLE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_int.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_int.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_int.h	(revision 14079)
+@@ -1,79 +0,0 @@
+-/* statistics/gsl_statistics_int.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_STATISTICS_INT_H__
+-#define __GSL_STATISTICS_INT_H__
+-
+-#include <stddef.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-double gsl_stats_int_mean (const int data[], const size_t stride, const size_t n);
+-double gsl_stats_int_variance (const int data[], const size_t stride, const size_t n);
+-double gsl_stats_int_sd (const int data[], const size_t stride, const size_t n);
+-double gsl_stats_int_variance_with_fixed_mean (const int data[], const size_t stride, const size_t n, const double mean);
+-double gsl_stats_int_sd_with_fixed_mean (const int data[], const size_t stride, const size_t n, const double mean);
+-double gsl_stats_int_tss (const int data[], const size_t stride, const size_t n);
+-double gsl_stats_int_tss_m (const int data[], const size_t stride, const size_t n, const double mean);
+-
+-double gsl_stats_int_absdev (const int data[], const size_t stride, const size_t n);
+-double gsl_stats_int_skew (const int data[], const size_t stride, const size_t n);
+-double gsl_stats_int_kurtosis (const int data[], const size_t stride, const size_t n);
+-double gsl_stats_int_lag1_autocorrelation (const int data[], const size_t stride, const size_t n);
+-
+-double gsl_stats_int_covariance (const int data1[], const size_t stride1,const int data2[], const size_t stride2, const size_t n);
+-double gsl_stats_int_correlation (const int data1[], const size_t stride1,const int data2[], const size_t stride2, const size_t n);
+-
+-double gsl_stats_int_variance_m (const int data[], const size_t stride, const size_t n, const double mean);
+-double gsl_stats_int_sd_m (const int data[], const size_t stride, const size_t n, const double mean);
+-double gsl_stats_int_absdev_m (const int data[], const size_t stride, const size_t n, const double mean);
+-double gsl_stats_int_skew_m_sd (const int data[], const size_t stride, const size_t n, const double mean, const double sd);
+-double gsl_stats_int_kurtosis_m_sd (const int data[], const size_t stride, const size_t n, const double mean, const double sd);
+-double gsl_stats_int_lag1_autocorrelation_m (const int data[], const size_t stride, const size_t n, const double mean);
+-
+-double gsl_stats_int_covariance_m (const int data1[], const size_t stride1,const int data2[], const size_t stride2, const size_t n, const double mean1, const double mean2);
+-
+-
+-double gsl_stats_int_pvariance (const int data1[], const size_t stride1, const size_t n1, const int data2[], const size_t stride2, const size_t n2);
+-double gsl_stats_int_ttest (const int data1[], const size_t stride1, const size_t n1, const int data2[], const size_t stride2, const size_t n2);
+-
+-int gsl_stats_int_max (const int data[], const size_t stride, const size_t n);
+-int gsl_stats_int_min (const int data[], const size_t stride, const size_t n);
+-void gsl_stats_int_minmax (int * min, int * max, const int data[], const size_t stride, const size_t n);
+-
+-size_t gsl_stats_int_max_index (const int data[], const size_t stride, const size_t n);
+-size_t gsl_stats_int_min_index (const int data[], const size_t stride, const size_t n);
+-void gsl_stats_int_minmax_index (size_t * min_index, size_t * max_index, const int data[], const size_t stride, const size_t n);
+-
+-double gsl_stats_int_median_from_sorted_data (const int sorted_data[], const size_t stride, const size_t n) ;
+-double gsl_stats_int_quantile_from_sorted_data (const int sorted_data[], const size_t stride, const size_t n, const double f) ;
+-
+-__END_DECLS
+-
+-#endif /* __GSL_STATISTICS_INT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_types.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_types.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_types.h	(revision 14079)
+@@ -1,41 +0,0 @@
+-/* gsl_types.h
+- * 
+- * Copyright (C) 2001, 2007 Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_TYPES_H__
+-#define __GSL_TYPES_H__
+-
+-#ifndef GSL_VAR
+-
+-#ifdef WIN32
+-#  ifdef GSL_DLL
+-#    ifdef DLL_EXPORT
+-#      define GSL_VAR extern __declspec(dllexport)
+-#    else
+-#      define GSL_VAR extern __declspec(dllimport)
+-#    endif
+-#  else
+-#    define GSL_VAR extern
+-#  endif
+-#else
+-#  define GSL_VAR extern
+-#endif
+-
+-#endif
+-
+-#endif /* __GSL_TYPES_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_monte_plain.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_monte_plain.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_monte_plain.h	(revision 14079)
+@@ -1,65 +0,0 @@
+-/* monte/gsl_monte_plain.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000 Michael Booth
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-/* Plain Monte-Carlo. */
+-
+-/* Author: MJB */
+-
+-#ifndef __GSL_MONTE_PLAIN_H__
+-#define __GSL_MONTE_PLAIN_H__
+-
+-#include <stdio.h>
+-#include <gsl/gsl_monte.h>
+-#include <gsl/gsl_rng.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-typedef struct {
+-  size_t dim;
+-  double *x;
+-} gsl_monte_plain_state;
+-
+-int
+-gsl_monte_plain_integrate (const gsl_monte_function * f,
+-                           const double xl[], const double xu[],
+-                           const size_t dim,
+-                           const size_t calls, 
+-                           gsl_rng * r,
+-                           gsl_monte_plain_state * state,
+-                           double *result, double *abserr);
+-
+-gsl_monte_plain_state* gsl_monte_plain_alloc(size_t dim);
+-
+-int gsl_monte_plain_init(gsl_monte_plain_state* state);
+-
+-void gsl_monte_plain_free (gsl_monte_plain_state* state);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_MONTE_PLAIN_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_bessel.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_bessel.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_bessel.h	(revision 14079)
+@@ -1,549 +0,0 @@
+-/* specfunc/gsl_sf_bessel.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-/* Author:  G. Jungman */
+-
+-#ifndef __GSL_SF_BESSEL_H__
+-#define __GSL_SF_BESSEL_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_mode.h>
+-#include <gsl/gsl_precision.h>
+-#include <gsl/gsl_sf_result.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-
+-/* Regular Bessel Function J_0(x)
+- *
+- * exceptions: none
+- */
+-int gsl_sf_bessel_J0_e(const double x,  gsl_sf_result * result);
+-double gsl_sf_bessel_J0(const double x);
+-
+-
+-/* Regular Bessel Function J_1(x)
+- *
+- * exceptions: GSL_EUNDRFLW
+- */
+-int gsl_sf_bessel_J1_e(const double x, gsl_sf_result * result);
+-double gsl_sf_bessel_J1(const double x);
+-
+-
+-/* Regular Bessel Function J_n(x)
+- *
+- * exceptions: GSL_EUNDRFLW
+- */
+-int gsl_sf_bessel_Jn_e(int n, double x, gsl_sf_result * result);
+-double gsl_sf_bessel_Jn(const int n, const double x);
+-
+-
+-/* Regular Bessel Function J_n(x),  nmin <= n <= nmax
+- *
+- * exceptions: GSL_EDOM, GSL_EUNDRFLW
+- */
+-int gsl_sf_bessel_Jn_array(int nmin, int nmax, double x, double * result_array);
+-
+-
+-/* Irregular Bessel function Y_0(x)
+- *
+- * x > 0.0
+- * exceptions: GSL_EDOM, GSL_EUNDRFLW
+- */
+-int gsl_sf_bessel_Y0_e(const double x, gsl_sf_result * result);
+-double gsl_sf_bessel_Y0(const double x);
+-
+-
+-/* Irregular Bessel function Y_1(x)
+- *
+- * x > 0.0
+- * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW
+- */
+-int gsl_sf_bessel_Y1_e(const double x, gsl_sf_result * result);
+-double gsl_sf_bessel_Y1(const double x);
+-
+-
+-/* Irregular Bessel function Y_n(x)
+- *
+- * x > 0.0
+- * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW
+- */
+-int gsl_sf_bessel_Yn_e(int n,const double x, gsl_sf_result * result);
+-double gsl_sf_bessel_Yn(const int n,const double x);
+-
+-
+-/* Irregular Bessel function Y_n(x), nmin <= n <= nmax
+- *
+- * x > 0.0
+- * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW
+- */
+-int gsl_sf_bessel_Yn_array(const int nmin, const int nmax, const double x, double * result_array);
+-
+-
+-/* Regular modified Bessel function I_0(x)
+- *
+- * exceptions: GSL_EOVRFLW
+- */
+-int gsl_sf_bessel_I0_e(const double x, gsl_sf_result * result);
+-double gsl_sf_bessel_I0(const double x);
+-
+-
+-/* Regular modified Bessel function I_1(x)
+- *
+- * exceptions: GSL_EOVRFLW, GSL_EUNDRFLW
+- */
+-int gsl_sf_bessel_I1_e(const double x, gsl_sf_result * result);
+-double gsl_sf_bessel_I1(const double x);
+-
+-
+-/* Regular modified Bessel function I_n(x)
+- *
+- * exceptions: GSL_EOVRFLW, GSL_EUNDRFLW
+- */
+-int gsl_sf_bessel_In_e(const int n, const double x, gsl_sf_result * result);
+-double gsl_sf_bessel_In(const int n, const double x);
+-
+-
+-/* Regular modified Bessel function  I_n(x) for n=nmin,...,nmax
+- *
+- * nmin >=0, nmax >= nmin
+- * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW
+- */
+-int gsl_sf_bessel_In_array(const int nmin, const int nmax, const double x, double * result_array);
+-
+-
+-/* Scaled regular modified Bessel function
+- *  exp(-|x|) I_0(x)
+- *
+- * exceptions: none
+- */
+-int gsl_sf_bessel_I0_scaled_e(const double x, gsl_sf_result * result);
+-double gsl_sf_bessel_I0_scaled(const double x);
+-
+-
+-/* Scaled regular modified Bessel function
+- *  exp(-|x|) I_1(x)
+- *
+- * exceptions: GSL_EUNDRFLW
+- */
+-int gsl_sf_bessel_I1_scaled_e(const double x, gsl_sf_result * result);
+-double gsl_sf_bessel_I1_scaled(const double x);
+-
+-
+-/* Scaled regular modified Bessel function
+- *  exp(-|x|) I_n(x)
+- *
+- * exceptions: GSL_EUNDRFLW
+- */
+-int gsl_sf_bessel_In_scaled_e(int n, const double x, gsl_sf_result * result);
+-double gsl_sf_bessel_In_scaled(const int n, const double x);
+-
+-
+-/* Scaled regular modified Bessel function
+- *  exp(-|x|) I_n(x)  for n=nmin,...,nmax
+- *
+- * nmin >=0, nmax >= nmin
+- * exceptions: GSL_EUNDRFLW
+- */
+-int gsl_sf_bessel_In_scaled_array(const int nmin, const int nmax, const double x, double * result_array);
+-
+-
+-/* Irregular modified Bessel function K_0(x)
+- *
+- * x > 0.0
+- * exceptions: GSL_EDOM, GSL_EUNDRFLW
+- */
+-int gsl_sf_bessel_K0_e(const double x, gsl_sf_result * result);
+-double gsl_sf_bessel_K0(const double x);
+-
+-
+-/* Irregular modified Bessel function K_1(x)
+- *
+- * x > 0.0
+- * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW
+- */
+-int gsl_sf_bessel_K1_e(const double x, gsl_sf_result * result);
+-double gsl_sf_bessel_K1(const double x);
+-
+-
+-/* Irregular modified Bessel function K_n(x)
+- *
+- * x > 0.0
+- * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW
+- */
+-int gsl_sf_bessel_Kn_e(const int n, const double x, gsl_sf_result * result);
+-double gsl_sf_bessel_Kn(const int n, const double x);
+-
+-
+-/* Irregular modified Bessel function  K_n(x)  for n=nmin,...,nmax
+- *
+- * x > 0.0, nmin >=0, nmax >= nmin
+- * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW
+- */
+-int gsl_sf_bessel_Kn_array(const int nmin, const int nmax, const double x, double * result_array);
+-
+-
+-/* Scaled irregular modified Bessel function
+- *  exp(x) K_0(x)
+- *
+- * x > 0.0
+- * exceptions: GSL_EDOM
+- */
+-int gsl_sf_bessel_K0_scaled_e(const double x, gsl_sf_result * result);
+-double gsl_sf_bessel_K0_scaled(const double x);
+-
+-
+-/* Scaled irregular modified Bessel function
+- *  exp(x) K_1(x)
+- *
+- * x > 0.0
+- * exceptions: GSL_EDOM, GSL_EUNDRFLW
+- */
+-int gsl_sf_bessel_K1_scaled_e(const double x, gsl_sf_result * result); 
+-double gsl_sf_bessel_K1_scaled(const double x);
+-
+-
+-/* Scaled irregular modified Bessel function
+- *  exp(x) K_n(x)
+- *
+- * x > 0.0
+- * exceptions: GSL_EDOM, GSL_EUNDRFLW
+- */
+-int gsl_sf_bessel_Kn_scaled_e(int n, const double x, gsl_sf_result * result);
+-double gsl_sf_bessel_Kn_scaled(const int n, const double x);
+-
+-
+-/* Scaled irregular modified Bessel function  exp(x) K_n(x)  for n=nmin,...,nmax
+- *
+- * x > 0.0, nmin >=0, nmax >= nmin
+- * exceptions: GSL_EDOM, GSL_EUNDRFLW
+- */
+-int gsl_sf_bessel_Kn_scaled_array(const int nmin, const int nmax, const double x, double * result_array);
+-
+-
+-/* Regular spherical Bessel function j_0(x) = sin(x)/x
+- *
+- * exceptions: none
+- */
+-int gsl_sf_bessel_j0_e(const double x, gsl_sf_result * result);
+-double gsl_sf_bessel_j0(const double x);
+-
+-
+-/* Regular spherical Bessel function j_1(x) = (sin(x)/x - cos(x))/x
+- *
+- * exceptions: GSL_EUNDRFLW
+- */
+-int gsl_sf_bessel_j1_e(const double x, gsl_sf_result * result);
+-double gsl_sf_bessel_j1(const double x);
+-
+-
+-/* Regular spherical Bessel function j_2(x) = ((3/x^2 - 1)sin(x) - 3cos(x)/x)/x
+- *
+- * exceptions: GSL_EUNDRFLW
+- */
+-int gsl_sf_bessel_j2_e(const double x, gsl_sf_result * result);
+-double gsl_sf_bessel_j2(const double x);
+-
+-
+-/* Regular spherical Bessel function j_l(x)
+- *
+- * l >= 0, x >= 0.0
+- * exceptions: GSL_EDOM, GSL_EUNDRFLW
+- */
+-int gsl_sf_bessel_jl_e(const int l, const double x, gsl_sf_result * result);
+-double gsl_sf_bessel_jl(const int l, const double x);
+-
+-
+-/* Regular spherical Bessel function j_l(x) for l=0,1,...,lmax
+- *
+- * exceptions: GSL_EDOM, GSL_EUNDRFLW
+- */
+-int gsl_sf_bessel_jl_array(const int lmax, const double x, double * result_array);
+-
+-
+-/* Regular spherical Bessel function j_l(x) for l=0,1,...,lmax
+- * Uses Steed's method.
+- *
+- * exceptions: GSL_EDOM, GSL_EUNDRFLW
+- */
+-int gsl_sf_bessel_jl_steed_array(const int lmax, const double x, double * jl_x_array);
+-
+-
+-/* Irregular spherical Bessel function y_0(x)
+- *
+- * exceptions: none
+- */
+-int gsl_sf_bessel_y0_e(const double x, gsl_sf_result * result);
+-double gsl_sf_bessel_y0(const double x);
+-
+-
+-/* Irregular spherical Bessel function y_1(x)
+- *
+- * exceptions: GSL_EUNDRFLW
+- */
+-int gsl_sf_bessel_y1_e(const double x, gsl_sf_result * result);
+-double gsl_sf_bessel_y1(const double x);
+-
+-
+-/* Irregular spherical Bessel function y_2(x)
+- *
+- * exceptions: GSL_EUNDRFLW
+- */
+-int gsl_sf_bessel_y2_e(const double x, gsl_sf_result * result);
+-double gsl_sf_bessel_y2(const double x);
+-
+-
+-/* Irregular spherical Bessel function y_l(x)
+- *
+- * exceptions: GSL_EUNDRFLW
+- */
+-int gsl_sf_bessel_yl_e(int l, const double x, gsl_sf_result * result);
+-double gsl_sf_bessel_yl(const int l, const double x);
+-
+-
+-/* Irregular spherical Bessel function y_l(x) for l=0,1,...,lmax
+- *
+- * exceptions: GSL_EUNDRFLW
+- */
+-int gsl_sf_bessel_yl_array(const int lmax, const double x, double * result_array);
+-
+-
+-/* Regular scaled modified spherical Bessel function
+- *
+- * Exp[-|x|] i_0(x)
+- *
+- * exceptions: none
+- */
+-int gsl_sf_bessel_i0_scaled_e(const double x, gsl_sf_result * result);
+-double gsl_sf_bessel_i0_scaled(const double x);
+-
+-
+-/* Regular scaled modified spherical Bessel function
+- *
+- * Exp[-|x|] i_1(x)
+- *
+- * exceptions: GSL_EUNDRFLW
+- */
+-int gsl_sf_bessel_i1_scaled_e(const double x, gsl_sf_result * result);
+-double gsl_sf_bessel_i1_scaled(const double x);
+-
+-
+-/* Regular scaled modified spherical Bessel function
+- *
+- * Exp[-|x|] i_2(x)
+- *
+- * exceptions: GSL_EUNDRFLW
+- */
+-int gsl_sf_bessel_i2_scaled_e(const double x, gsl_sf_result * result);
+-double gsl_sf_bessel_i2_scaled(const double x);
+-
+-
+-/* Regular scaled modified spherical Bessel functions
+- *
+- * Exp[-|x|] i_l(x)
+- *
+- * i_l(x) = Sqrt[Pi/(2x)] BesselI[l+1/2,x]
+- *
+- * l >= 0
+- * exceptions: GSL_EDOM, GSL_EUNDRFLW
+- */
+-int gsl_sf_bessel_il_scaled_e(const int l, double x, gsl_sf_result * result);
+-double gsl_sf_bessel_il_scaled(const int l, const double x);
+-
+-
+-/* Regular scaled modified spherical Bessel functions
+- *
+- * Exp[-|x|] i_l(x)
+- * for l=0,1,...,lmax
+- *
+- * exceptions: GSL_EUNDRFLW
+- */
+-int gsl_sf_bessel_il_scaled_array(const int lmax, const double x, double * result_array);
+-
+-
+-/* Irregular scaled modified spherical Bessel function
+- * Exp[x] k_0(x)
+- *
+- * x > 0.0
+- * exceptions: GSL_EDOM, GSL_EUNDRFLW
+- */
+-int gsl_sf_bessel_k0_scaled_e(const double x, gsl_sf_result * result);
+-double gsl_sf_bessel_k0_scaled(const double x);
+-
+-
+-/* Irregular modified spherical Bessel function
+- * Exp[x] k_1(x)
+- *
+- * x > 0.0
+- * exceptions: GSL_EDOM, GSL_EUNDRFLW, GSL_EOVRFLW
+- */
+-int gsl_sf_bessel_k1_scaled_e(const double x, gsl_sf_result * result);
+-double gsl_sf_bessel_k1_scaled(const double x);
+-
+-
+-/* Irregular modified spherical Bessel function
+- * Exp[x] k_2(x)
+- *
+- * x > 0.0
+- * exceptions: GSL_EDOM, GSL_EUNDRFLW, GSL_EOVRFLW
+- */
+-int gsl_sf_bessel_k2_scaled_e(const double x, gsl_sf_result * result);
+-double gsl_sf_bessel_k2_scaled(const double x);
+-
+-
+-/* Irregular modified spherical Bessel function
+- * Exp[x] k_l[x]
+- *
+- * k_l(x) = Sqrt[Pi/(2x)] BesselK[l+1/2,x]
+- *
+- * exceptions: GSL_EDOM, GSL_EUNDRFLW
+- */
+-int gsl_sf_bessel_kl_scaled_e(int l, const double x, gsl_sf_result * result);
+-double gsl_sf_bessel_kl_scaled(const int l, const double x);
+-
+-
+-/* Irregular scaled modified spherical Bessel function
+- * Exp[x] k_l(x)
+- *
+- * for l=0,1,...,lmax
+- * exceptions: GSL_EDOM, GSL_EUNDRFLW
+- */
+-int gsl_sf_bessel_kl_scaled_array(const int lmax, const double x, double * result_array);
+-
+-
+-/* Regular cylindrical Bessel function J_nu(x)
+- *
+- * exceptions: GSL_EDOM, GSL_EUNDRFLW
+- */
+-int gsl_sf_bessel_Jnu_e(const double nu, const double x, gsl_sf_result * result);
+-double gsl_sf_bessel_Jnu(const double nu, const double x);
+-
+-
+-/* Irregular cylindrical Bessel function Y_nu(x)
+- *
+- * exceptions:  
+- */
+-int gsl_sf_bessel_Ynu_e(double nu, double x, gsl_sf_result * result);
+-double gsl_sf_bessel_Ynu(const double nu, const double x);
+-
+-
+-/* Regular cylindrical Bessel function J_nu(x)
+- * evaluated at a series of x values. The array
+- * contains the x values. They are assumed to be
+- * strictly ordered and positive. The array is
+- * over-written with the values of J_nu(x_i).
+- *
+- * exceptions: GSL_EDOM, GSL_EINVAL
+- */
+-int gsl_sf_bessel_sequence_Jnu_e(double nu, gsl_mode_t mode, size_t size, double * v);
+-
+-
+-/* Scaled modified cylindrical Bessel functions
+- *
+- * Exp[-|x|] BesselI[nu, x]
+- * x >= 0, nu >= 0
+- *
+- * exceptions: GSL_EDOM
+- */
+-int gsl_sf_bessel_Inu_scaled_e(double nu, double x, gsl_sf_result * result);
+-double gsl_sf_bessel_Inu_scaled(double nu, double x);
+-
+-
+-/* Modified cylindrical Bessel functions
+- *
+- * BesselI[nu, x]
+- * x >= 0, nu >= 0
+- *
+- * exceptions: GSL_EDOM, GSL_EOVRFLW
+- */
+-int gsl_sf_bessel_Inu_e(double nu, double x, gsl_sf_result * result);
+-double gsl_sf_bessel_Inu(double nu, double x);
+-
+-
+-/* Scaled modified cylindrical Bessel functions
+- *
+- * Exp[+|x|] BesselK[nu, x]
+- * x > 0, nu >= 0
+- *
+- * exceptions: GSL_EDOM
+- */
+-int gsl_sf_bessel_Knu_scaled_e(const double nu, const double x, gsl_sf_result * result);
+-double gsl_sf_bessel_Knu_scaled(const double nu, const double x);
+-
+-int gsl_sf_bessel_Knu_scaled_e10_e(const double nu, const double x, gsl_sf_result_e10 * result);
+-
+-/* Modified cylindrical Bessel functions
+- *
+- * BesselK[nu, x]
+- * x > 0, nu >= 0
+- *
+- * exceptions: GSL_EDOM, GSL_EUNDRFLW
+- */
+-int gsl_sf_bessel_Knu_e(const double nu, const double x, gsl_sf_result * result);
+-double gsl_sf_bessel_Knu(const double nu, const double x);
+-
+-
+-/* Logarithm of modified cylindrical Bessel functions.
+- *
+- * Log[BesselK[nu, x]]
+- * x > 0, nu >= 0
+- *
+- * exceptions: GSL_EDOM
+- */
+-int gsl_sf_bessel_lnKnu_e(const double nu, const double x, gsl_sf_result * result);
+-double gsl_sf_bessel_lnKnu(const double nu, const double x);
+-
+-
+-/* s'th positive zero of the Bessel function J_0(x).
+- *
+- * exceptions: 
+- */
+-int gsl_sf_bessel_zero_J0_e(unsigned int s, gsl_sf_result * result);
+-double gsl_sf_bessel_zero_J0(unsigned int s);
+-
+-
+-/* s'th positive zero of the Bessel function J_1(x).
+- *
+- * exceptions: 
+- */
+-int gsl_sf_bessel_zero_J1_e(unsigned int s, gsl_sf_result * result);
+-double gsl_sf_bessel_zero_J1(unsigned int s);
+-
+-
+-/* s'th positive zero of the Bessel function J_nu(x).
+- *
+- * exceptions: 
+- */
+-int gsl_sf_bessel_zero_Jnu_e(double nu, unsigned int s, gsl_sf_result * result);
+-double gsl_sf_bessel_zero_Jnu(double nu, unsigned int s);
+-
+-
+-__END_DECLS
+-
+-#endif /* __GSL_SF_BESSEL_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_multiset.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_multiset.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_multiset.h	(revision 14079)
+@@ -1,93 +0,0 @@
+-/* multiset/gsl_multiset.h
+- * based on combination/gsl_combination.h by Szymon Jaroszewicz
+- * based on permutation/gsl_permutation.h by Brian Gough
+- *
+- * Copyright (C) 2009 Rhys Ulerich
+- *
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- *
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- *
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_MULTISET_H__
+-#define __GSL_MULTISET_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_types.h>
+-#include <gsl/gsl_inline.h>
+-#include <gsl/gsl_check_range.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-struct gsl_multiset_struct
+-{
+-  size_t n;
+-  size_t k;
+-  size_t *data;
+-};
+-
+-typedef struct gsl_multiset_struct gsl_multiset;
+-
+-gsl_multiset *gsl_multiset_alloc (const size_t n, const size_t k);
+-gsl_multiset *gsl_multiset_calloc (const size_t n, const size_t k);
+-void gsl_multiset_init_first (gsl_multiset * c);
+-void gsl_multiset_init_last (gsl_multiset * c);
+-void gsl_multiset_free (gsl_multiset * c);
+-int gsl_multiset_memcpy (gsl_multiset * dest, const gsl_multiset * src);
+-
+-int gsl_multiset_fread (FILE * stream, gsl_multiset * c);
+-int gsl_multiset_fwrite (FILE * stream, const gsl_multiset * c);
+-int gsl_multiset_fscanf (FILE * stream, gsl_multiset * c);
+-int gsl_multiset_fprintf (FILE * stream, const gsl_multiset * c, const char *format);
+-
+-size_t gsl_multiset_n (const gsl_multiset * c);
+-size_t gsl_multiset_k (const gsl_multiset * c);
+-size_t * gsl_multiset_data (const gsl_multiset * c);
+-
+-int gsl_multiset_valid (gsl_multiset * c);
+-int gsl_multiset_next (gsl_multiset * c);
+-int gsl_multiset_prev (gsl_multiset * c);
+-
+-INLINE_DECL size_t gsl_multiset_get (const gsl_multiset * c, const size_t i);
+-
+-#ifdef HAVE_INLINE
+-
+-INLINE_FUN
+-size_t
+-gsl_multiset_get (const gsl_multiset * c, const size_t i)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(i >= c->k)) /* size_t is unsigned, can't be negative */
+-    {
+-      GSL_ERROR_VAL ("index out of range", GSL_EINVAL, 0);
+-    }
+-#endif
+-  return c->data[i];
+-}
+-
+-#endif /* HAVE_INLINE */
+-
+-__END_DECLS
+-
+-#endif /* __GSL_MULTISET_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_specfunc.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_specfunc.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_specfunc.h	(revision 14079)
+@@ -1,10 +0,0 @@
+-/* Author:  G. Jungman */
+-
+-        
+-/* Convenience header */
+-#ifndef __GSL_SPECFUNC_H__
+-#define __GSL_SPECFUNC_H__
+-
+-#include <gsl/gsl_sf.h>
+-
+-#endif /* __GSL_SPECFUNC_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_uchar.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_uchar.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_uchar.h	(revision 14079)
+@@ -1,65 +0,0 @@
+-/* block/gsl_block_uchar.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_BLOCK_UCHAR_H__
+-#define __GSL_BLOCK_UCHAR_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-struct gsl_block_uchar_struct
+-{
+-  size_t size;
+-  unsigned char *data;
+-};
+-
+-typedef struct gsl_block_uchar_struct gsl_block_uchar;
+-
+-gsl_block_uchar *gsl_block_uchar_alloc (const size_t n);
+-gsl_block_uchar *gsl_block_uchar_calloc (const size_t n);
+-void gsl_block_uchar_free (gsl_block_uchar * b);
+-
+-int gsl_block_uchar_fread (FILE * stream, gsl_block_uchar * b);
+-int gsl_block_uchar_fwrite (FILE * stream, const gsl_block_uchar * b);
+-int gsl_block_uchar_fscanf (FILE * stream, gsl_block_uchar * b);
+-int gsl_block_uchar_fprintf (FILE * stream, const gsl_block_uchar * b, const char *format);
+-
+-int gsl_block_uchar_raw_fread (FILE * stream, unsigned char * b, const size_t n, const size_t stride);
+-int gsl_block_uchar_raw_fwrite (FILE * stream, const unsigned char * b, const size_t n, const size_t stride);
+-int gsl_block_uchar_raw_fscanf (FILE * stream, unsigned char * b, const size_t n, const size_t stride);
+-int gsl_block_uchar_raw_fprintf (FILE * stream, const unsigned char * b, const size_t n, const size_t stride, const char *format);
+-
+-size_t gsl_block_uchar_size (const gsl_block_uchar * b);
+-unsigned char * gsl_block_uchar_data (const gsl_block_uchar * b);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_BLOCK_UCHAR_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_float.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_float.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_float.h	(revision 14079)
+@@ -1,50 +0,0 @@
+-/* sort/gsl_sort_float.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_SORT_FLOAT_H__
+-#define __GSL_SORT_FLOAT_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_permutation.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-void gsl_sort_float (float * data, const size_t stride, const size_t n);
+-void gsl_sort_float_index (size_t * p, const float * data, const size_t stride, const size_t n);
+-
+-int gsl_sort_float_smallest (float * dest, const size_t k, const float * src, const size_t stride, const size_t n);
+-int gsl_sort_float_smallest_index (size_t * p, const size_t k, const float * src, const size_t stride, const size_t n);
+-
+-int gsl_sort_float_largest (float * dest, const size_t k, const float * src, const size_t stride, const size_t n);
+-int gsl_sort_float_largest_index (size_t * p, const size_t k, const float * src, const size_t stride, const size_t n);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_SORT_FLOAT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_synchrotron.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_synchrotron.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_synchrotron.h	(revision 14079)
+@@ -1,60 +0,0 @@
+-/* specfunc/gsl_sf_synchrotron.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-/* Author:  G. Jungman */
+-
+-#ifndef __GSL_SF_SYNCHROTRON_H__
+-#define __GSL_SF_SYNCHROTRON_H__
+-
+-#include <gsl/gsl_sf_result.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-
+-/* First synchrotron function:
+- *   synchrotron_1(x) = x Integral[ K_{5/3}(t), {t, x, Infinity}]
+- *
+- * exceptions: GSL_EDOM, GSL_EUNDRFLW
+- */
+-int     gsl_sf_synchrotron_1_e(const double x, gsl_sf_result * result);
+-double     gsl_sf_synchrotron_1(const double x);
+-
+-
+-/* Second synchroton function:
+- *   synchrotron_2(x) = x * K_{2/3}(x)
+- *
+- * exceptions: GSL_EDOM, GSL_EUNDRFLW
+- */
+-int     gsl_sf_synchrotron_2_e(const double x, gsl_sf_result * result);
+-double     gsl_sf_synchrotron_2(const double x);
+-
+-
+-__END_DECLS
+-
+-#endif /* __GSL_SF_SYNCHROTRON_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_complex_math.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_complex_math.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_complex_math.h	(revision 14079)
+@@ -1,142 +0,0 @@
+-/* complex/gsl_complex_math.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004, 2007 Jorma Olavi Tähtinen, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_COMPLEX_MATH_H__
+-#define __GSL_COMPLEX_MATH_H__
+-#include <gsl/gsl_inline.h>
+-#include <gsl/gsl_complex.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-#define __BEGIN_DECLS extern "C" {
+-#define __END_DECLS }
+-#else
+-#define __BEGIN_DECLS           /* empty */
+-#define __END_DECLS             /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-/* Complex numbers */
+-
+-gsl_complex gsl_complex_polar (double r, double theta); /* r= r e^(i theta) */
+-
+-INLINE_DECL gsl_complex gsl_complex_rect (double x, double y);  /* r= real+i*imag */
+-
+-#ifdef HAVE_INLINE
+-INLINE_FUN gsl_complex
+-gsl_complex_rect (double x, double y)
+-{                               /* return z = x + i y */
+-  gsl_complex z;
+-  GSL_SET_COMPLEX (&z, x, y);
+-  return z;
+-}
+-#endif
+-
+-#define GSL_COMPLEX_ONE (gsl_complex_rect(1.0,0.0))
+-#define GSL_COMPLEX_ZERO (gsl_complex_rect(0.0,0.0))
+-#define GSL_COMPLEX_NEGONE (gsl_complex_rect(-1.0,0.0))
+-
+-/* Properties of complex numbers */
+-
+-double gsl_complex_arg (gsl_complex z); /* return arg(z), -pi< arg(z) <=+pi */
+-double gsl_complex_abs (gsl_complex z);   /* return |z|   */
+-double gsl_complex_abs2 (gsl_complex z);  /* return |z|^2 */
+-double gsl_complex_logabs (gsl_complex z); /* return log|z| */
+-
+-/* Complex arithmetic operators */
+-
+-gsl_complex gsl_complex_add (gsl_complex a, gsl_complex b);  /* r=a+b */
+-gsl_complex gsl_complex_sub (gsl_complex a, gsl_complex b);  /* r=a-b */
+-gsl_complex gsl_complex_mul (gsl_complex a, gsl_complex b);  /* r=a*b */
+-gsl_complex gsl_complex_div (gsl_complex a, gsl_complex b);  /* r=a/b */
+-                                                           
+-gsl_complex gsl_complex_add_real (gsl_complex a, double x);  /* r=a+x */
+-gsl_complex gsl_complex_sub_real (gsl_complex a, double x);  /* r=a-x */
+-gsl_complex gsl_complex_mul_real (gsl_complex a, double x);  /* r=a*x */
+-gsl_complex gsl_complex_div_real (gsl_complex a, double x);  /* r=a/x */
+-
+-gsl_complex gsl_complex_add_imag (gsl_complex a, double y);  /* r=a+iy */
+-gsl_complex gsl_complex_sub_imag (gsl_complex a, double y);  /* r=a-iy */
+-gsl_complex gsl_complex_mul_imag (gsl_complex a, double y);  /* r=a*iy */
+-gsl_complex gsl_complex_div_imag (gsl_complex a, double y);  /* r=a/iy */
+-
+-gsl_complex gsl_complex_conjugate (gsl_complex z);  /* r=conj(z) */
+-gsl_complex gsl_complex_inverse (gsl_complex a);    /* r=1/a */
+-gsl_complex gsl_complex_negative (gsl_complex a);    /* r=-a */
+-
+-/* Elementary Complex Functions */
+-
+-gsl_complex gsl_complex_sqrt (gsl_complex z);  /* r=sqrt(z) */
+-gsl_complex gsl_complex_sqrt_real (double x);  /* r=sqrt(x) (x<0 ok) */
+-
+-gsl_complex gsl_complex_pow (gsl_complex a, gsl_complex b);  /* r=a^b */
+-gsl_complex gsl_complex_pow_real (gsl_complex a, double b);  /* r=a^b */
+-
+-gsl_complex gsl_complex_exp (gsl_complex a);    /* r=exp(a) */
+-gsl_complex gsl_complex_log (gsl_complex a);    /* r=log(a) (base e) */
+-gsl_complex gsl_complex_log10 (gsl_complex a);  /* r=log10(a) (base 10) */
+-gsl_complex gsl_complex_log_b (gsl_complex a, gsl_complex b);   /* r=log_b(a) (base=b) */
+-
+-/* Complex Trigonometric Functions */
+-
+-gsl_complex gsl_complex_sin (gsl_complex a);  /* r=sin(a) */
+-gsl_complex gsl_complex_cos (gsl_complex a);  /* r=cos(a) */
+-gsl_complex gsl_complex_sec (gsl_complex a);  /* r=sec(a) */
+-gsl_complex gsl_complex_csc (gsl_complex a);  /* r=csc(a) */
+-gsl_complex gsl_complex_tan (gsl_complex a);  /* r=tan(a) */
+-gsl_complex gsl_complex_cot (gsl_complex a);  /* r=cot(a) */
+-
+-/* Inverse Complex Trigonometric Functions */
+-
+-gsl_complex gsl_complex_arcsin (gsl_complex a);  /* r=arcsin(a) */
+-gsl_complex gsl_complex_arcsin_real (double a);  /* r=arcsin(a) */
+-gsl_complex gsl_complex_arccos (gsl_complex a);  /* r=arccos(a) */
+-gsl_complex gsl_complex_arccos_real (double a);  /* r=arccos(a) */
+-gsl_complex gsl_complex_arcsec (gsl_complex a);  /* r=arcsec(a) */
+-gsl_complex gsl_complex_arcsec_real (double a);  /* r=arcsec(a) */
+-gsl_complex gsl_complex_arccsc (gsl_complex a);  /* r=arccsc(a) */
+-gsl_complex gsl_complex_arccsc_real (double a);  /* r=arccsc(a) */
+-gsl_complex gsl_complex_arctan (gsl_complex a);  /* r=arctan(a) */
+-gsl_complex gsl_complex_arccot (gsl_complex a);  /* r=arccot(a) */
+-
+-/* Complex Hyperbolic Functions */
+-
+-gsl_complex gsl_complex_sinh (gsl_complex a);  /* r=sinh(a) */
+-gsl_complex gsl_complex_cosh (gsl_complex a);  /* r=coshh(a) */
+-gsl_complex gsl_complex_sech (gsl_complex a);  /* r=sech(a) */
+-gsl_complex gsl_complex_csch (gsl_complex a);  /* r=csch(a) */
+-gsl_complex gsl_complex_tanh (gsl_complex a);  /* r=tanh(a) */
+-gsl_complex gsl_complex_coth (gsl_complex a);  /* r=coth(a) */
+-
+-/* Inverse Complex Hyperbolic Functions */
+-
+-gsl_complex gsl_complex_arcsinh (gsl_complex a);  /* r=arcsinh(a) */
+-gsl_complex gsl_complex_arccosh (gsl_complex a);  /* r=arccosh(a) */
+-gsl_complex gsl_complex_arccosh_real (double a);  /* r=arccosh(a) */
+-gsl_complex gsl_complex_arcsech (gsl_complex a);  /* r=arcsech(a) */
+-gsl_complex gsl_complex_arccsch (gsl_complex a);  /* r=arccsch(a) */
+-gsl_complex gsl_complex_arctanh (gsl_complex a);  /* r=arctanh(a) */
+-gsl_complex gsl_complex_arctanh_real (double a);  /* r=arctanh(a) */
+-gsl_complex gsl_complex_arccoth (gsl_complex a);  /* r=arccoth(a) */
+-
+-__END_DECLS
+-
+-#endif /* __GSL_COMPLEX_MATH_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_long.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_long.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_long.h	(revision 14079)
+@@ -1,230 +0,0 @@
+-/* vector/gsl_vector_long.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_VECTOR_LONG_H__
+-#define __GSL_VECTOR_LONG_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_types.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_inline.h>
+-#include <gsl/gsl_check_range.h>
+-#include <gsl/gsl_block_long.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-typedef struct 
+-{
+-  size_t size;
+-  size_t stride;
+-  long *data;
+-  gsl_block_long *block;
+-  int owner;
+-} 
+-gsl_vector_long;
+-
+-typedef struct
+-{
+-  gsl_vector_long vector;
+-} _gsl_vector_long_view;
+-
+-typedef _gsl_vector_long_view gsl_vector_long_view;
+-
+-typedef struct
+-{
+-  gsl_vector_long vector;
+-} _gsl_vector_long_const_view;
+-
+-typedef const _gsl_vector_long_const_view gsl_vector_long_const_view;
+-
+-
+-/* Allocation */
+-
+-gsl_vector_long *gsl_vector_long_alloc (const size_t n);
+-gsl_vector_long *gsl_vector_long_calloc (const size_t n);
+-
+-gsl_vector_long *gsl_vector_long_alloc_from_block (gsl_block_long * b,
+-                                                     const size_t offset, 
+-                                                     const size_t n, 
+-                                                     const size_t stride);
+-
+-gsl_vector_long *gsl_vector_long_alloc_from_vector (gsl_vector_long * v,
+-                                                      const size_t offset, 
+-                                                      const size_t n, 
+-                                                      const size_t stride);
+-
+-void gsl_vector_long_free (gsl_vector_long * v);
+-
+-/* Views */
+-
+-_gsl_vector_long_view 
+-gsl_vector_long_view_array (long *v, size_t n);
+-
+-_gsl_vector_long_view 
+-gsl_vector_long_view_array_with_stride (long *base,
+-                                         size_t stride,
+-                                         size_t n);
+-
+-_gsl_vector_long_const_view 
+-gsl_vector_long_const_view_array (const long *v, size_t n);
+-
+-_gsl_vector_long_const_view 
+-gsl_vector_long_const_view_array_with_stride (const long *base,
+-                                               size_t stride,
+-                                               size_t n);
+-
+-_gsl_vector_long_view 
+-gsl_vector_long_subvector (gsl_vector_long *v, 
+-                            size_t i, 
+-                            size_t n);
+-
+-_gsl_vector_long_view 
+-gsl_vector_long_subvector_with_stride (gsl_vector_long *v, 
+-                                        size_t i,
+-                                        size_t stride,
+-                                        size_t n);
+-
+-_gsl_vector_long_const_view 
+-gsl_vector_long_const_subvector (const gsl_vector_long *v, 
+-                                  size_t i, 
+-                                  size_t n);
+-
+-_gsl_vector_long_const_view 
+-gsl_vector_long_const_subvector_with_stride (const gsl_vector_long *v, 
+-                                              size_t i, 
+-                                              size_t stride,
+-                                              size_t n);
+-
+-/* Operations */
+-
+-void gsl_vector_long_set_zero (gsl_vector_long * v);
+-void gsl_vector_long_set_all (gsl_vector_long * v, long x);
+-int gsl_vector_long_set_basis (gsl_vector_long * v, size_t i);
+-
+-int gsl_vector_long_fread (FILE * stream, gsl_vector_long * v);
+-int gsl_vector_long_fwrite (FILE * stream, const gsl_vector_long * v);
+-int gsl_vector_long_fscanf (FILE * stream, gsl_vector_long * v);
+-int gsl_vector_long_fprintf (FILE * stream, const gsl_vector_long * v,
+-                              const char *format);
+-
+-int gsl_vector_long_memcpy (gsl_vector_long * dest, const gsl_vector_long * src);
+-
+-int gsl_vector_long_reverse (gsl_vector_long * v);
+-
+-int gsl_vector_long_swap (gsl_vector_long * v, gsl_vector_long * w);
+-int gsl_vector_long_swap_elements (gsl_vector_long * v, const size_t i, const size_t j);
+-
+-long gsl_vector_long_max (const gsl_vector_long * v);
+-long gsl_vector_long_min (const gsl_vector_long * v);
+-void gsl_vector_long_minmax (const gsl_vector_long * v, long * min_out, long * max_out);
+-
+-size_t gsl_vector_long_max_index (const gsl_vector_long * v);
+-size_t gsl_vector_long_min_index (const gsl_vector_long * v);
+-void gsl_vector_long_minmax_index (const gsl_vector_long * v, size_t * imin, size_t * imax);
+-
+-int gsl_vector_long_add (gsl_vector_long * a, const gsl_vector_long * b);
+-int gsl_vector_long_sub (gsl_vector_long * a, const gsl_vector_long * b);
+-int gsl_vector_long_mul (gsl_vector_long * a, const gsl_vector_long * b);
+-int gsl_vector_long_div (gsl_vector_long * a, const gsl_vector_long * b);
+-int gsl_vector_long_scale (gsl_vector_long * a, const double x);
+-int gsl_vector_long_add_constant (gsl_vector_long * a, const double x);
+-
+-int gsl_vector_long_equal (const gsl_vector_long * u, 
+-                            const gsl_vector_long * v);
+-
+-int gsl_vector_long_isnull (const gsl_vector_long * v);
+-int gsl_vector_long_ispos (const gsl_vector_long * v);
+-int gsl_vector_long_isneg (const gsl_vector_long * v);
+-int gsl_vector_long_isnonneg (const gsl_vector_long * v);
+-
+-INLINE_DECL long gsl_vector_long_get (const gsl_vector_long * v, const size_t i);
+-INLINE_DECL void gsl_vector_long_set (gsl_vector_long * v, const size_t i, long x);
+-INLINE_DECL long * gsl_vector_long_ptr (gsl_vector_long * v, const size_t i);
+-INLINE_DECL const long * gsl_vector_long_const_ptr (const gsl_vector_long * v, const size_t i);
+-
+-#ifdef HAVE_INLINE
+-
+-INLINE_FUN
+-long
+-gsl_vector_long_get (const gsl_vector_long * v, const size_t i)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(i >= v->size))
+-    {
+-      GSL_ERROR_VAL ("index out of range", GSL_EINVAL, 0);
+-    }
+-#endif
+-  return v->data[i * v->stride];
+-}
+-
+-INLINE_FUN
+-void
+-gsl_vector_long_set (gsl_vector_long * v, const size_t i, long x)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(i >= v->size))
+-    {
+-      GSL_ERROR_VOID ("index out of range", GSL_EINVAL);
+-    }
+-#endif
+-  v->data[i * v->stride] = x;
+-}
+-
+-INLINE_FUN
+-long *
+-gsl_vector_long_ptr (gsl_vector_long * v, const size_t i)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(i >= v->size))
+-    {
+-      GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
+-    }
+-#endif
+-  return (long *) (v->data + i * v->stride);
+-}
+-
+-INLINE_FUN
+-const long *
+-gsl_vector_long_const_ptr (const gsl_vector_long * v, const size_t i)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(i >= v->size))
+-    {
+-      GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
+-    }
+-#endif
+-  return (const long *) (v->data + i * v->stride);
+-}
+-#endif /* HAVE_INLINE */
+-
+-__END_DECLS
+-
+-#endif /* __GSL_VECTOR_LONG_H__ */
+-
+-
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute.h	(revision 14079)
+@@ -1,24 +0,0 @@
+-#ifndef __GSL_PERMUTE_H__
+-#define __GSL_PERMUTE_H__
+-
+-#include <gsl/gsl_permute_complex_long_double.h>
+-#include <gsl/gsl_permute_complex_double.h>
+-#include <gsl/gsl_permute_complex_float.h>
+-
+-#include <gsl/gsl_permute_long_double.h>
+-#include <gsl/gsl_permute_double.h>
+-#include <gsl/gsl_permute_float.h>
+-
+-#include <gsl/gsl_permute_ulong.h>
+-#include <gsl/gsl_permute_long.h>
+-
+-#include <gsl/gsl_permute_uint.h>
+-#include <gsl/gsl_permute_int.h>
+-
+-#include <gsl/gsl_permute_ushort.h>
+-#include <gsl/gsl_permute_short.h>
+-
+-#include <gsl/gsl_permute_uchar.h>
+-#include <gsl/gsl_permute_char.h>
+-
+-#endif /* __GSL_PERMUTE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_long.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_long.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_long.h	(revision 14079)
+@@ -1,45 +0,0 @@
+-/* permutation/gsl_permute_vector_long.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_PERMUTE_VECTOR_LONG_H__
+-#define __GSL_PERMUTE_VECTOR_LONG_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_permutation.h>
+-#include <gsl/gsl_vector_long.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-int gsl_permute_vector_long (const gsl_permutation * p, gsl_vector_long * v);
+-int gsl_permute_vector_long_inverse (const gsl_permutation * p, gsl_vector_long * v);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_PERMUTE_VECTOR_LONG_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_short.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_short.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_short.h	(revision 14079)
+@@ -1,45 +0,0 @@
+-/* permutation/gsl_permute_vector_short.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_PERMUTE_VECTOR_SHORT_H__
+-#define __GSL_PERMUTE_VECTOR_SHORT_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_permutation.h>
+-#include <gsl/gsl_vector_short.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-int gsl_permute_vector_short (const gsl_permutation * p, gsl_vector_short * v);
+-int gsl_permute_vector_short_inverse (const gsl_permutation * p, gsl_vector_short * v);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_PERMUTE_VECTOR_SHORT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_ushort.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_ushort.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_ushort.h	(revision 14079)
+@@ -1,44 +0,0 @@
+-/* permutation/gsl_permute_ushort.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_PERMUTE_USHORT_H__
+-#define __GSL_PERMUTE_USHORT_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_permutation.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-int gsl_permute_ushort (const size_t * p, unsigned short * data, const size_t stride, const size_t n);
+-int gsl_permute_ushort_inverse (const size_t * p, unsigned short * data, const size_t stride, const size_t n);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_PERMUTE_USHORT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_complex_double.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_complex_double.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_complex_double.h	(revision 14079)
+@@ -1,351 +0,0 @@
+-/* matrix/gsl_matrix_complex_double.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_MATRIX_COMPLEX_DOUBLE_H__
+-#define __GSL_MATRIX_COMPLEX_DOUBLE_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_types.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_complex.h>
+-#include <gsl/gsl_check_range.h>
+-#include <gsl/gsl_vector_complex_double.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-typedef struct 
+-{
+-  size_t size1;
+-  size_t size2;
+-  size_t tda;
+-  double * data;
+-  gsl_block_complex * block;
+-  int owner;
+-} gsl_matrix_complex ;
+-
+-typedef struct
+-{
+-  gsl_matrix_complex matrix;
+-} _gsl_matrix_complex_view;
+-
+-typedef _gsl_matrix_complex_view gsl_matrix_complex_view;
+-
+-typedef struct
+-{
+-  gsl_matrix_complex matrix;
+-} _gsl_matrix_complex_const_view;
+-
+-typedef const _gsl_matrix_complex_const_view gsl_matrix_complex_const_view;
+-
+-
+-/* Allocation */
+-
+-gsl_matrix_complex * 
+-gsl_matrix_complex_alloc (const size_t n1, const size_t n2);
+-
+-gsl_matrix_complex * 
+-gsl_matrix_complex_calloc (const size_t n1, const size_t n2);
+-
+-gsl_matrix_complex * 
+-gsl_matrix_complex_alloc_from_block (gsl_block_complex * b, 
+-                                           const size_t offset, 
+-                                           const size_t n1, const size_t n2, const size_t d2);
+-
+-gsl_matrix_complex * 
+-gsl_matrix_complex_alloc_from_matrix (gsl_matrix_complex * b,
+-                                            const size_t k1, const size_t k2,
+-                                            const size_t n1, const size_t n2);
+-
+-gsl_vector_complex * 
+-gsl_vector_complex_alloc_row_from_matrix (gsl_matrix_complex * m,
+-                                                const size_t i);
+-
+-gsl_vector_complex * 
+-gsl_vector_complex_alloc_col_from_matrix (gsl_matrix_complex * m,
+-                                                const size_t j);
+-
+-void gsl_matrix_complex_free (gsl_matrix_complex * m);
+-
+-/* Views */
+-
+-_gsl_matrix_complex_view 
+-gsl_matrix_complex_submatrix (gsl_matrix_complex * m, 
+-                            const size_t i, const size_t j, 
+-                            const size_t n1, const size_t n2);
+-
+-_gsl_vector_complex_view 
+-gsl_matrix_complex_row (gsl_matrix_complex * m, const size_t i);
+-
+-_gsl_vector_complex_view 
+-gsl_matrix_complex_column (gsl_matrix_complex * m, const size_t j);
+-
+-_gsl_vector_complex_view 
+-gsl_matrix_complex_diagonal (gsl_matrix_complex * m);
+-
+-_gsl_vector_complex_view 
+-gsl_matrix_complex_subdiagonal (gsl_matrix_complex * m, const size_t k);
+-
+-_gsl_vector_complex_view 
+-gsl_matrix_complex_superdiagonal (gsl_matrix_complex * m, const size_t k);
+-
+-_gsl_vector_complex_view
+-gsl_matrix_complex_subrow (gsl_matrix_complex * m,
+-                                 const size_t i, const size_t offset,
+-                                 const size_t n);
+-
+-_gsl_vector_complex_view
+-gsl_matrix_complex_subcolumn (gsl_matrix_complex * m,
+-                                    const size_t j, const size_t offset,
+-                                    const size_t n);
+-
+-_gsl_matrix_complex_view
+-gsl_matrix_complex_view_array (double * base,
+-                             const size_t n1, 
+-                             const size_t n2);
+-
+-_gsl_matrix_complex_view
+-gsl_matrix_complex_view_array_with_tda (double * base, 
+-                                      const size_t n1, 
+-                                      const size_t n2,
+-                                      const size_t tda);
+-
+-_gsl_matrix_complex_view
+-gsl_matrix_complex_view_vector (gsl_vector_complex * v,
+-                              const size_t n1, 
+-                              const size_t n2);
+-
+-_gsl_matrix_complex_view
+-gsl_matrix_complex_view_vector_with_tda (gsl_vector_complex * v,
+-                                       const size_t n1, 
+-                                       const size_t n2,
+-                                       const size_t tda);
+-
+-
+-_gsl_matrix_complex_const_view 
+-gsl_matrix_complex_const_submatrix (const gsl_matrix_complex * m, 
+-                                  const size_t i, const size_t j, 
+-                                  const size_t n1, const size_t n2);
+-
+-_gsl_vector_complex_const_view 
+-gsl_matrix_complex_const_row (const gsl_matrix_complex * m, 
+-                            const size_t i);
+-
+-_gsl_vector_complex_const_view 
+-gsl_matrix_complex_const_column (const gsl_matrix_complex * m, 
+-                               const size_t j);
+-
+-_gsl_vector_complex_const_view
+-gsl_matrix_complex_const_diagonal (const gsl_matrix_complex * m);
+-
+-_gsl_vector_complex_const_view 
+-gsl_matrix_complex_const_subdiagonal (const gsl_matrix_complex * m, 
+-                                    const size_t k);
+-
+-_gsl_vector_complex_const_view 
+-gsl_matrix_complex_const_superdiagonal (const gsl_matrix_complex * m, 
+-                                      const size_t k);
+-
+-_gsl_vector_complex_const_view
+-gsl_matrix_complex_const_subrow (const gsl_matrix_complex * m,
+-                                       const size_t i, const size_t offset,
+-                                       const size_t n);
+-
+-_gsl_vector_complex_const_view
+-gsl_matrix_complex_const_subcolumn (const gsl_matrix_complex * m,
+-                                          const size_t j, const size_t offset,
+-                                          const size_t n);
+-
+-_gsl_matrix_complex_const_view
+-gsl_matrix_complex_const_view_array (const double * base,
+-                                   const size_t n1, 
+-                                   const size_t n2);
+-
+-_gsl_matrix_complex_const_view
+-gsl_matrix_complex_const_view_array_with_tda (const double * base, 
+-                                            const size_t n1, 
+-                                            const size_t n2,
+-                                            const size_t tda);
+-
+-_gsl_matrix_complex_const_view
+-gsl_matrix_complex_const_view_vector (const gsl_vector_complex * v,
+-                                    const size_t n1, 
+-                                    const size_t n2);
+-
+-_gsl_matrix_complex_const_view
+-gsl_matrix_complex_const_view_vector_with_tda (const gsl_vector_complex * v,
+-                                             const size_t n1, 
+-                                             const size_t n2,
+-                                             const size_t tda);
+-
+-/* Operations */
+-
+-void gsl_matrix_complex_set_zero (gsl_matrix_complex * m);
+-void gsl_matrix_complex_set_identity (gsl_matrix_complex * m);
+-void gsl_matrix_complex_set_all (gsl_matrix_complex * m, gsl_complex x);
+-
+-int gsl_matrix_complex_fread (FILE * stream, gsl_matrix_complex * m) ;
+-int gsl_matrix_complex_fwrite (FILE * stream, const gsl_matrix_complex * m) ;
+-int gsl_matrix_complex_fscanf (FILE * stream, gsl_matrix_complex * m);
+-int gsl_matrix_complex_fprintf (FILE * stream, const gsl_matrix_complex * m, const char * format);
+-
+-int gsl_matrix_complex_memcpy(gsl_matrix_complex * dest, const gsl_matrix_complex * src);
+-int gsl_matrix_complex_swap(gsl_matrix_complex * m1, gsl_matrix_complex * m2);
+-
+-int gsl_matrix_complex_swap_rows(gsl_matrix_complex * m, const size_t i, const size_t j);
+-int gsl_matrix_complex_swap_columns(gsl_matrix_complex * m, const size_t i, const size_t j);
+-int gsl_matrix_complex_swap_rowcol(gsl_matrix_complex * m, const size_t i, const size_t j);
+-
+-int gsl_matrix_complex_transpose (gsl_matrix_complex * m);
+-int gsl_matrix_complex_transpose_memcpy (gsl_matrix_complex * dest, const gsl_matrix_complex * src);
+-
+-int gsl_matrix_complex_equal (const gsl_matrix_complex * a, const gsl_matrix_complex * b);
+-
+-int gsl_matrix_complex_isnull (const gsl_matrix_complex * m);
+-int gsl_matrix_complex_ispos (const gsl_matrix_complex * m);
+-int gsl_matrix_complex_isneg (const gsl_matrix_complex * m);
+-int gsl_matrix_complex_isnonneg (const gsl_matrix_complex * m);
+-
+-int gsl_matrix_complex_add (gsl_matrix_complex * a, const gsl_matrix_complex * b);
+-int gsl_matrix_complex_sub (gsl_matrix_complex * a, const gsl_matrix_complex * b);
+-int gsl_matrix_complex_mul_elements (gsl_matrix_complex * a, const gsl_matrix_complex * b);
+-int gsl_matrix_complex_div_elements (gsl_matrix_complex * a, const gsl_matrix_complex * b);
+-int gsl_matrix_complex_scale (gsl_matrix_complex * a, const gsl_complex x);
+-int gsl_matrix_complex_add_constant (gsl_matrix_complex * a, const gsl_complex x);
+-int gsl_matrix_complex_add_diagonal (gsl_matrix_complex * a, const gsl_complex x);
+-
+-/***********************************************************************/
+-/* The functions below are obsolete                                    */
+-/***********************************************************************/
+-int gsl_matrix_complex_get_row(gsl_vector_complex * v, const gsl_matrix_complex * m, const size_t i);
+-int gsl_matrix_complex_get_col(gsl_vector_complex * v, const gsl_matrix_complex * m, const size_t j);
+-int gsl_matrix_complex_set_row(gsl_matrix_complex * m, const size_t i, const gsl_vector_complex * v);
+-int gsl_matrix_complex_set_col(gsl_matrix_complex * m, const size_t j, const gsl_vector_complex * v);
+-/***********************************************************************/
+-
+-/* inline functions if you are using GCC */
+-
+-INLINE_DECL gsl_complex gsl_matrix_complex_get(const gsl_matrix_complex * m, const size_t i, const size_t j);
+-INLINE_DECL void gsl_matrix_complex_set(gsl_matrix_complex * m, const size_t i, const size_t j, const gsl_complex x);
+-
+-INLINE_DECL gsl_complex * gsl_matrix_complex_ptr(gsl_matrix_complex * m, const size_t i, const size_t j);
+-INLINE_DECL const gsl_complex * gsl_matrix_complex_const_ptr(const gsl_matrix_complex * m, const size_t i, const size_t j);
+-
+-#ifdef HAVE_INLINE
+-
+-INLINE_FUN 
+-gsl_complex
+-gsl_matrix_complex_get(const gsl_matrix_complex * m, 
+-                     const size_t i, const size_t j)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(1)) 
+-    {
+-      gsl_complex zero = {{0,0}};
+-
+-      if (i >= m->size1)
+-        {
+-          GSL_ERROR_VAL("first index out of range", GSL_EINVAL, zero) ;
+-        }
+-      else if (j >= m->size2)
+-        {
+-          GSL_ERROR_VAL("second index out of range", GSL_EINVAL, zero) ;
+-        }
+-    }
+-#endif
+-  return *(gsl_complex *)(m->data + 2*(i * m->tda + j)) ;
+-} 
+-
+-INLINE_FUN 
+-void
+-gsl_matrix_complex_set(gsl_matrix_complex * m, 
+-                     const size_t i, const size_t j, const gsl_complex x)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(1)) 
+-    {
+-      if (i >= m->size1)
+-        {
+-          GSL_ERROR_VOID("first index out of range", GSL_EINVAL) ;
+-        }
+-      else if (j >= m->size2)
+-        {
+-          GSL_ERROR_VOID("second index out of range", GSL_EINVAL) ;
+-        }
+-    }
+-#endif
+-  *(gsl_complex *)(m->data + 2*(i * m->tda + j)) = x ;
+-}
+-
+-INLINE_FUN 
+-gsl_complex *
+-gsl_matrix_complex_ptr(gsl_matrix_complex * m, 
+-                             const size_t i, const size_t j)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(1)) 
+-    {
+-      if (i >= m->size1)
+-        {
+-          GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
+-        }
+-      else if (j >= m->size2)
+-        {
+-          GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
+-        }
+-    }
+-#endif
+-  return (gsl_complex *)(m->data + 2*(i * m->tda + j)) ;
+-} 
+-
+-INLINE_FUN 
+-const gsl_complex *
+-gsl_matrix_complex_const_ptr(const gsl_matrix_complex * m, 
+-                                   const size_t i, const size_t j)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(1)) 
+-    {
+-      if (i >= m->size1)
+-        {
+-          GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
+-        }
+-      else if (j >= m->size2)
+-        {
+-          GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
+-        }
+-    }
+-#endif
+-  return (const gsl_complex *)(m->data + 2*(i * m->tda + j)) ;
+-} 
+-
+-#endif /* HAVE_INLINE */
+-
+-__END_DECLS
+-
+-#endif /* __GSL_MATRIX_COMPLEX_DOUBLE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_hyperg.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_hyperg.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_hyperg.h	(revision 14079)
+@@ -1,154 +0,0 @@
+-/* specfunc/gsl_sf_hyperg.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-/* Author:  G. Jungman */
+-
+-#ifndef __GSL_SF_HYPERG_H__
+-#define __GSL_SF_HYPERG_H__
+-
+-#include <gsl/gsl_sf_result.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-
+-/* Hypergeometric function related to Bessel functions
+- * 0F1[c,x] =
+- *            Gamma[c]    x^(1/2(1-c)) I_{c-1}(2 Sqrt[x])
+- *            Gamma[c] (-x)^(1/2(1-c)) J_{c-1}(2 Sqrt[-x])
+- *
+- * exceptions: GSL_EOVRFLW, GSL_EUNDRFLW
+- */
+-int gsl_sf_hyperg_0F1_e(double c, double x, gsl_sf_result * result);
+-double gsl_sf_hyperg_0F1(const double c, const double x);
+-
+-
+-/* Confluent hypergeometric function  for integer parameters.
+- * 1F1[m,n,x] = M(m,n,x)
+- *
+- * exceptions: 
+- */
+-int gsl_sf_hyperg_1F1_int_e(const int m, const int n, const double x, gsl_sf_result * result);
+-double gsl_sf_hyperg_1F1_int(const int m, const int n, double x);
+-
+-
+-/* Confluent hypergeometric function.
+- * 1F1[a,b,x] = M(a,b,x)
+- *
+- * exceptions:
+- */
+-int gsl_sf_hyperg_1F1_e(const double a, const double b, const double x, gsl_sf_result * result);
+-double gsl_sf_hyperg_1F1(double a, double b, double x);
+-
+-
+-/* Confluent hypergeometric function for integer parameters.
+- * U(m,n,x)
+- *
+- * exceptions:
+- */
+-int gsl_sf_hyperg_U_int_e(const int m, const int n, const double x, gsl_sf_result * result);
+-double gsl_sf_hyperg_U_int(const int m, const int n, const double x);
+-
+-
+-/* Confluent hypergeometric function for integer parameters.
+- * U(m,n,x)
+- *
+- * exceptions:
+- */
+-int gsl_sf_hyperg_U_int_e10_e(const int m, const int n, const double x, gsl_sf_result_e10 * result);
+-
+-
+-/* Confluent hypergeometric function.
+- * U(a,b,x)
+- *
+- * exceptions:
+- */
+-int gsl_sf_hyperg_U_e(const double a, const double b, const double x, gsl_sf_result * result);
+-double gsl_sf_hyperg_U(const double a, const double b, const double x);
+-
+-
+-/* Confluent hypergeometric function.
+- * U(a,b,x)
+- *
+- * exceptions:
+- */
+-int gsl_sf_hyperg_U_e10_e(const double a, const double b, const double x, gsl_sf_result_e10 * result);
+-
+-
+-/* Gauss hypergeometric function 2F1[a,b,c,x]
+- * |x| < 1
+- *
+- * exceptions:
+- */
+-int gsl_sf_hyperg_2F1_e(double a, double b, const double c, const double x, gsl_sf_result * result);
+-double gsl_sf_hyperg_2F1(double a, double b, double c, double x);
+-
+-
+-/* Gauss hypergeometric function
+- * 2F1[aR + I aI, aR - I aI, c, x]
+- * |x| < 1
+- *
+- * exceptions:
+- */
+-int gsl_sf_hyperg_2F1_conj_e(const double aR, const double aI, const double c, const double x, gsl_sf_result * result);
+-double gsl_sf_hyperg_2F1_conj(double aR, double aI, double c, double x);
+-
+-
+-/* Renormalized Gauss hypergeometric function
+- * 2F1[a,b,c,x] / Gamma[c]
+- * |x| < 1
+- *
+- * exceptions:
+- */
+-int gsl_sf_hyperg_2F1_renorm_e(const double a, const double b, const double c, const double x, gsl_sf_result * result);
+-double gsl_sf_hyperg_2F1_renorm(double a, double b, double c, double x);
+-
+-
+-/* Renormalized Gauss hypergeometric function
+- * 2F1[aR + I aI, aR - I aI, c, x] / Gamma[c]
+- * |x| < 1
+- *
+- * exceptions:
+- */
+-int gsl_sf_hyperg_2F1_conj_renorm_e(const double aR, const double aI, const double c, const double x, gsl_sf_result * result);
+-double gsl_sf_hyperg_2F1_conj_renorm(double aR, double aI, double c, double x);
+-
+-
+-/* Mysterious hypergeometric function. The series representation
+- * is a divergent hypergeometric series. However, for x < 0 we
+- * have 2F0(a,b,x) = (-1/x)^a U(a,1+a-b,-1/x)
+- *
+- * exceptions: GSL_EDOM
+- */
+-int     gsl_sf_hyperg_2F0_e(const double a, const double b, const double x, gsl_sf_result * result);
+-double     gsl_sf_hyperg_2F0(const double a, const double b, const double x);
+-
+-
+-__END_DECLS
+-
+-#endif /* __GSL_SF_HYPERG_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_ushort.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_ushort.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_ushort.h	(revision 14079)
+@@ -1,50 +0,0 @@
+-/* sort/gsl_sort_ushort.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_SORT_USHORT_H__
+-#define __GSL_SORT_USHORT_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_permutation.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-void gsl_sort_ushort (unsigned short * data, const size_t stride, const size_t n);
+-void gsl_sort_ushort_index (size_t * p, const unsigned short * data, const size_t stride, const size_t n);
+-
+-int gsl_sort_ushort_smallest (unsigned short * dest, const size_t k, const unsigned short * src, const size_t stride, const size_t n);
+-int gsl_sort_ushort_smallest_index (size_t * p, const size_t k, const unsigned short * src, const size_t stride, const size_t n);
+-
+-int gsl_sort_ushort_largest (unsigned short * dest, const size_t k, const unsigned short * src, const size_t stride, const size_t n);
+-int gsl_sort_ushort_largest_index (size_t * p, const size_t k, const unsigned short * src, const size_t stride, const size_t n);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_SORT_USHORT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_ushort.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_ushort.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_ushort.h	(revision 14079)
+@@ -1,79 +0,0 @@
+-/* statistics/gsl_statistics_ushort.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_STATISTICS_USHORT_H__
+-#define __GSL_STATISTICS_USHORT_H__
+-
+-#include <stddef.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-double gsl_stats_ushort_mean (const unsigned short data[], const size_t stride, const size_t n);
+-double gsl_stats_ushort_variance (const unsigned short data[], const size_t stride, const size_t n);
+-double gsl_stats_ushort_sd (const unsigned short data[], const size_t stride, const size_t n);
+-double gsl_stats_ushort_variance_with_fixed_mean (const unsigned short data[], const size_t stride, const size_t n, const double mean);
+-double gsl_stats_ushort_sd_with_fixed_mean (const unsigned short data[], const size_t stride, const size_t n, const double mean);
+-double gsl_stats_ushort_tss (const unsigned short data[], const size_t stride, const size_t n);
+-double gsl_stats_ushort_tss_m (const unsigned short data[], const size_t stride, const size_t n, const double mean);
+-
+-double gsl_stats_ushort_absdev (const unsigned short data[], const size_t stride, const size_t n);
+-double gsl_stats_ushort_skew (const unsigned short data[], const size_t stride, const size_t n);
+-double gsl_stats_ushort_kurtosis (const unsigned short data[], const size_t stride, const size_t n);
+-double gsl_stats_ushort_lag1_autocorrelation (const unsigned short data[], const size_t stride, const size_t n);
+-
+-double gsl_stats_ushort_covariance (const unsigned short data1[], const size_t stride1,const unsigned short data2[], const size_t stride2, const size_t n);
+-double gsl_stats_ushort_correlation (const unsigned short data1[], const size_t stride1,const unsigned short data2[], const size_t stride2, const size_t n);
+-
+-double gsl_stats_ushort_variance_m (const unsigned short data[], const size_t stride, const size_t n, const double mean);
+-double gsl_stats_ushort_sd_m (const unsigned short data[], const size_t stride, const size_t n, const double mean);
+-double gsl_stats_ushort_absdev_m (const unsigned short data[], const size_t stride, const size_t n, const double mean);
+-double gsl_stats_ushort_skew_m_sd (const unsigned short data[], const size_t stride, const size_t n, const double mean, const double sd);
+-double gsl_stats_ushort_kurtosis_m_sd (const unsigned short data[], const size_t stride, const size_t n, const double mean, const double sd);
+-double gsl_stats_ushort_lag1_autocorrelation_m (const unsigned short data[], const size_t stride, const size_t n, const double mean);
+-
+-double gsl_stats_ushort_covariance_m (const unsigned short data1[], const size_t stride1,const unsigned short data2[], const size_t stride2, const size_t n, const double mean1, const double mean2);
+-
+-
+-double gsl_stats_ushort_pvariance (const unsigned short data1[], const size_t stride1, const size_t n1, const unsigned short data2[], const size_t stride2, const size_t n2);
+-double gsl_stats_ushort_ttest (const unsigned short data1[], const size_t stride1, const size_t n1, const unsigned short data2[], const size_t stride2, const size_t n2);
+-
+-unsigned short gsl_stats_ushort_max (const unsigned short data[], const size_t stride, const size_t n);
+-unsigned short gsl_stats_ushort_min (const unsigned short data[], const size_t stride, const size_t n);
+-void gsl_stats_ushort_minmax (unsigned short * min, unsigned short * max, const unsigned short data[], const size_t stride, const size_t n);
+-
+-size_t gsl_stats_ushort_max_index (const unsigned short data[], const size_t stride, const size_t n);
+-size_t gsl_stats_ushort_min_index (const unsigned short data[], const size_t stride, const size_t n);
+-void gsl_stats_ushort_minmax_index (size_t * min_index, size_t * max_index, const unsigned short data[], const size_t stride, const size_t n);
+-
+-double gsl_stats_ushort_median_from_sorted_data (const unsigned short sorted_data[], const size_t stride, const size_t n) ;
+-double gsl_stats_ushort_quantile_from_sorted_data (const unsigned short sorted_data[], const size_t stride, const size_t n, const double f) ;
+-
+-__END_DECLS
+-
+-#endif /* __GSL_STATISTICS_USHORT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_int.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_int.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_int.h	(revision 14079)
+@@ -1,50 +0,0 @@
+-/* sort/gsl_sort_int.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_SORT_INT_H__
+-#define __GSL_SORT_INT_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_permutation.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-void gsl_sort_int (int * data, const size_t stride, const size_t n);
+-void gsl_sort_int_index (size_t * p, const int * data, const size_t stride, const size_t n);
+-
+-int gsl_sort_int_smallest (int * dest, const size_t k, const int * src, const size_t stride, const size_t n);
+-int gsl_sort_int_smallest_index (size_t * p, const size_t k, const int * src, const size_t stride, const size_t n);
+-
+-int gsl_sort_int_largest (int * dest, const size_t k, const int * src, const size_t stride, const size_t n);
+-int gsl_sort_int_largest_index (size_t * p, const size_t k, const int * src, const size_t stride, const size_t n);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_SORT_INT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_complex_long_double.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_complex_long_double.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_complex_long_double.h	(revision 14079)
+@@ -1,251 +0,0 @@
+-/* vector/gsl_vector_complex_long_double.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_VECTOR_COMPLEX_LONG_DOUBLE_H__
+-#define __GSL_VECTOR_COMPLEX_LONG_DOUBLE_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_types.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_complex.h>
+-#include <gsl/gsl_check_range.h>
+-#include <gsl/gsl_vector_long_double.h>
+-#include <gsl/gsl_vector_complex.h>
+-#include <gsl/gsl_block_complex_long_double.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-typedef struct 
+-{
+-  size_t size;
+-  size_t stride;
+-  long double *data;
+-  gsl_block_complex_long_double *block;
+-  int owner;
+-} gsl_vector_complex_long_double;
+-
+-typedef struct
+-{
+-  gsl_vector_complex_long_double vector;
+-} _gsl_vector_complex_long_double_view;
+-
+-typedef _gsl_vector_complex_long_double_view gsl_vector_complex_long_double_view;
+-
+-typedef struct
+-{
+-  gsl_vector_complex_long_double vector;
+-} _gsl_vector_complex_long_double_const_view;
+-
+-typedef const _gsl_vector_complex_long_double_const_view gsl_vector_complex_long_double_const_view;
+-
+-/* Allocation */
+-
+-gsl_vector_complex_long_double *gsl_vector_complex_long_double_alloc (const size_t n);
+-gsl_vector_complex_long_double *gsl_vector_complex_long_double_calloc (const size_t n);
+-
+-gsl_vector_complex_long_double *
+-gsl_vector_complex_long_double_alloc_from_block (gsl_block_complex_long_double * b, 
+-                                           const size_t offset, 
+-                                           const size_t n, 
+-                                           const size_t stride);
+-
+-gsl_vector_complex_long_double *
+-gsl_vector_complex_long_double_alloc_from_vector (gsl_vector_complex_long_double * v, 
+-                                             const size_t offset, 
+-                                             const size_t n, 
+-                                             const size_t stride);
+-
+-void gsl_vector_complex_long_double_free (gsl_vector_complex_long_double * v);
+-
+-/* Views */
+-
+-_gsl_vector_complex_long_double_view
+-gsl_vector_complex_long_double_view_array (long double *base,
+-                                     size_t n);
+-
+-_gsl_vector_complex_long_double_view
+-gsl_vector_complex_long_double_view_array_with_stride (long double *base,
+-                                                 size_t stride,
+-                                                 size_t n);
+-
+-_gsl_vector_complex_long_double_const_view
+-gsl_vector_complex_long_double_const_view_array (const long double *base,
+-                                           size_t n);
+-
+-_gsl_vector_complex_long_double_const_view
+-gsl_vector_complex_long_double_const_view_array_with_stride (const long double *base,
+-                                                       size_t stride,
+-                                                       size_t n);
+-
+-_gsl_vector_complex_long_double_view
+-gsl_vector_complex_long_double_subvector (gsl_vector_complex_long_double *base,
+-                                         size_t i, 
+-                                         size_t n);
+-
+-
+-_gsl_vector_complex_long_double_view 
+-gsl_vector_complex_long_double_subvector_with_stride (gsl_vector_complex_long_double *v, 
+-                                                size_t i, 
+-                                                size_t stride, 
+-                                                size_t n);
+-
+-_gsl_vector_complex_long_double_const_view
+-gsl_vector_complex_long_double_const_subvector (const gsl_vector_complex_long_double *base,
+-                                               size_t i, 
+-                                               size_t n);
+-
+-
+-_gsl_vector_complex_long_double_const_view 
+-gsl_vector_complex_long_double_const_subvector_with_stride (const gsl_vector_complex_long_double *v, 
+-                                                      size_t i, 
+-                                                      size_t stride, 
+-                                                      size_t n);
+-
+-_gsl_vector_long_double_view
+-gsl_vector_complex_long_double_real (gsl_vector_complex_long_double *v);
+-
+-_gsl_vector_long_double_view 
+-gsl_vector_complex_long_double_imag (gsl_vector_complex_long_double *v);
+-
+-_gsl_vector_long_double_const_view
+-gsl_vector_complex_long_double_const_real (const gsl_vector_complex_long_double *v);
+-
+-_gsl_vector_long_double_const_view 
+-gsl_vector_complex_long_double_const_imag (const gsl_vector_complex_long_double *v);
+-
+-
+-/* Operations */
+-
+-void gsl_vector_complex_long_double_set_zero (gsl_vector_complex_long_double * v);
+-void gsl_vector_complex_long_double_set_all (gsl_vector_complex_long_double * v,
+-                                       gsl_complex_long_double z);
+-int gsl_vector_complex_long_double_set_basis (gsl_vector_complex_long_double * v, size_t i);
+-
+-int gsl_vector_complex_long_double_fread (FILE * stream,
+-                                    gsl_vector_complex_long_double * v);
+-int gsl_vector_complex_long_double_fwrite (FILE * stream,
+-                                     const gsl_vector_complex_long_double * v);
+-int gsl_vector_complex_long_double_fscanf (FILE * stream,
+-                                     gsl_vector_complex_long_double * v);
+-int gsl_vector_complex_long_double_fprintf (FILE * stream,
+-                                      const gsl_vector_complex_long_double * v,
+-                                      const char *format);
+-
+-int gsl_vector_complex_long_double_memcpy (gsl_vector_complex_long_double * dest, const gsl_vector_complex_long_double * src);
+-
+-int gsl_vector_complex_long_double_reverse (gsl_vector_complex_long_double * v);
+-
+-int gsl_vector_complex_long_double_swap (gsl_vector_complex_long_double * v, gsl_vector_complex_long_double * w);
+-int gsl_vector_complex_long_double_swap_elements (gsl_vector_complex_long_double * v, const size_t i, const size_t j);
+-
+-int gsl_vector_complex_long_double_equal (const gsl_vector_complex_long_double * u, 
+-                                    const gsl_vector_complex_long_double * v);
+-
+-int gsl_vector_complex_long_double_isnull (const gsl_vector_complex_long_double * v);
+-int gsl_vector_complex_long_double_ispos (const gsl_vector_complex_long_double * v);
+-int gsl_vector_complex_long_double_isneg (const gsl_vector_complex_long_double * v);
+-int gsl_vector_complex_long_double_isnonneg (const gsl_vector_complex_long_double * v);
+-
+-int gsl_vector_complex_long_double_add (gsl_vector_complex_long_double * a, const gsl_vector_complex_long_double * b);
+-int gsl_vector_complex_long_double_sub (gsl_vector_complex_long_double * a, const gsl_vector_complex_long_double * b);
+-int gsl_vector_complex_long_double_mul (gsl_vector_complex_long_double * a, const gsl_vector_complex_long_double * b);
+-int gsl_vector_complex_long_double_div (gsl_vector_complex_long_double * a, const gsl_vector_complex_long_double * b);
+-int gsl_vector_complex_long_double_scale (gsl_vector_complex_long_double * a, const gsl_complex_long_double x);
+-int gsl_vector_complex_long_double_add_constant (gsl_vector_complex_long_double * a, const gsl_complex_long_double x);
+-
+-INLINE_DECL gsl_complex_long_double gsl_vector_complex_long_double_get (const gsl_vector_complex_long_double * v, const size_t i);
+-INLINE_DECL void gsl_vector_complex_long_double_set (gsl_vector_complex_long_double * v, const size_t i, gsl_complex_long_double z);
+-INLINE_DECL gsl_complex_long_double *gsl_vector_complex_long_double_ptr (gsl_vector_complex_long_double * v, const size_t i);
+-INLINE_DECL const gsl_complex_long_double *gsl_vector_complex_long_double_const_ptr (const gsl_vector_complex_long_double * v, const size_t i);
+-
+-#ifdef HAVE_INLINE
+-
+-INLINE_FUN
+-gsl_complex_long_double
+-gsl_vector_complex_long_double_get (const gsl_vector_complex_long_double * v,
+-                              const size_t i)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(i >= v->size))
+-    {
+-      gsl_complex_long_double zero = {{0, 0}};
+-      GSL_ERROR_VAL ("index out of range", GSL_EINVAL, zero);
+-    }
+-#endif
+-  return *GSL_COMPLEX_LONG_DOUBLE_AT (v, i);
+-}
+-
+-INLINE_FUN
+-void
+-gsl_vector_complex_long_double_set (gsl_vector_complex_long_double * v,
+-                              const size_t i, gsl_complex_long_double z)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(i >= v->size))
+-    {
+-      GSL_ERROR_VOID ("index out of range", GSL_EINVAL);
+-    }
+-#endif
+-  *GSL_COMPLEX_LONG_DOUBLE_AT (v, i) = z;
+-}
+-
+-INLINE_FUN
+-gsl_complex_long_double *
+-gsl_vector_complex_long_double_ptr (gsl_vector_complex_long_double * v,
+-                              const size_t i)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(i >= v->size))
+-    {
+-      GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
+-    }
+-#endif
+-  return GSL_COMPLEX_LONG_DOUBLE_AT (v, i);
+-}
+-
+-INLINE_FUN
+-const gsl_complex_long_double *
+-gsl_vector_complex_long_double_const_ptr (const gsl_vector_complex_long_double * v,
+-                                    const size_t i)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(i >= v->size))
+-    {
+-      GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
+-    }
+-#endif
+-  return GSL_COMPLEX_LONG_DOUBLE_AT (v, i);
+-}
+-
+-
+-#endif /* HAVE_INLINE */
+-
+-__END_DECLS
+-
+-#endif /* __GSL_VECTOR_COMPLEX_LONG_DOUBLE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector.h	(revision 14079)
+@@ -1,24 +0,0 @@
+-#ifndef __GSL_PERMUTE_VECTOR_H__
+-#define __GSL_PERMUTE_VECTOR_H__
+-
+-#include <gsl/gsl_permute_vector_complex_long_double.h>
+-#include <gsl/gsl_permute_vector_complex_double.h>
+-#include <gsl/gsl_permute_vector_complex_float.h>
+-
+-#include <gsl/gsl_permute_vector_long_double.h>
+-#include <gsl/gsl_permute_vector_double.h>
+-#include <gsl/gsl_permute_vector_float.h>
+-
+-#include <gsl/gsl_permute_vector_ulong.h>
+-#include <gsl/gsl_permute_vector_long.h>
+-
+-#include <gsl/gsl_permute_vector_uint.h>
+-#include <gsl/gsl_permute_vector_int.h>
+-
+-#include <gsl/gsl_permute_vector_ushort.h>
+-#include <gsl/gsl_permute_vector_short.h>
+-
+-#include <gsl/gsl_permute_vector_uchar.h>
+-#include <gsl/gsl_permute_vector_char.h>
+-
+-#endif /* __GSL_PERMUTE_VECTOR_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_long_double.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_long_double.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_long_double.h	(revision 14079)
+@@ -1,99 +0,0 @@
+-/* statistics/gsl_statistics_long_double.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_STATISTICS_LONG_DOUBLE_H__
+-#define __GSL_STATISTICS_LONG_DOUBLE_H__
+-
+-#include <stddef.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-double gsl_stats_long_double_mean (const long double data[], const size_t stride, const size_t n);
+-double gsl_stats_long_double_variance (const long double data[], const size_t stride, const size_t n);
+-double gsl_stats_long_double_sd (const long double data[], const size_t stride, const size_t n);
+-double gsl_stats_long_double_variance_with_fixed_mean (const long double data[], const size_t stride, const size_t n, const double mean);
+-double gsl_stats_long_double_sd_with_fixed_mean (const long double data[], const size_t stride, const size_t n, const double mean);
+-double gsl_stats_long_double_tss (const long double data[], const size_t stride, const size_t n);
+-double gsl_stats_long_double_tss_m (const long double data[], const size_t stride, const size_t n, const double mean);
+-
+-double gsl_stats_long_double_absdev (const long double data[], const size_t stride, const size_t n);
+-double gsl_stats_long_double_skew (const long double data[], const size_t stride, const size_t n);
+-double gsl_stats_long_double_kurtosis (const long double data[], const size_t stride, const size_t n);
+-double gsl_stats_long_double_lag1_autocorrelation (const long double data[], const size_t stride, const size_t n);
+-
+-double gsl_stats_long_double_covariance (const long double data1[], const size_t stride1,const long double data2[], const size_t stride2, const size_t n);
+-double gsl_stats_long_double_correlation (const long double data1[], const size_t stride1,const long double data2[], const size_t stride2, const size_t n);
+-
+-double gsl_stats_long_double_variance_m (const long double data[], const size_t stride, const size_t n, const double mean);
+-double gsl_stats_long_double_sd_m (const long double data[], const size_t stride, const size_t n, const double mean);
+-double gsl_stats_long_double_absdev_m (const long double data[], const size_t stride, const size_t n, const double mean);
+-double gsl_stats_long_double_skew_m_sd (const long double data[], const size_t stride, const size_t n, const double mean, const double sd);
+-double gsl_stats_long_double_kurtosis_m_sd (const long double data[], const size_t stride, const size_t n, const double mean, const double sd);
+-double gsl_stats_long_double_lag1_autocorrelation_m (const long double data[], const size_t stride, const size_t n, const double mean);
+-
+-double gsl_stats_long_double_covariance_m (const long double data1[], const size_t stride1,const long double data2[], const size_t stride2, const size_t n, const double mean1, const double mean2);
+-
+-/* DEFINED FOR FLOATING POINT TYPES ONLY */
+-
+-double gsl_stats_long_double_wmean (const long double w[], const size_t wstride, const long double data[], const size_t stride, const size_t n);
+-double gsl_stats_long_double_wvariance (const long double w[], const size_t wstride, const long double data[], const size_t stride, const size_t n);
+-double gsl_stats_long_double_wsd (const long double w[], const size_t wstride, const long double data[], const size_t stride, const size_t n);
+-double gsl_stats_long_double_wvariance_with_fixed_mean (const long double w[], const size_t wstride, const long double data[], const size_t stride, const size_t n, const double mean);
+-double gsl_stats_long_double_wsd_with_fixed_mean (const long double w[], const size_t wstride, const long double data[], const size_t stride, const size_t n, const double mean);
+-double gsl_stats_long_double_wtss (const long double w[], const size_t wstride, const long double data[], const size_t stride, const size_t n);
+-double gsl_stats_long_double_wtss_m (const long double w[], const size_t wstride, const long double data[], const size_t stride, const size_t n, const double wmean);
+-double gsl_stats_long_double_wabsdev (const long double w[], const size_t wstride, const long double data[], const size_t stride, const size_t n);
+-double gsl_stats_long_double_wskew (const long double w[], const size_t wstride, const long double data[], const size_t stride, const size_t n);
+-double gsl_stats_long_double_wkurtosis (const long double w[], const size_t wstride, const long double data[], const size_t stride, const size_t n);
+-
+-double gsl_stats_long_double_wvariance_m (const long double w[], const size_t wstride, const long double data[], const size_t stride, const size_t n, const double wmean);
+-double gsl_stats_long_double_wsd_m (const long double w[], const size_t wstride, const long double data[], const size_t stride, const size_t n, const double wmean);
+-double gsl_stats_long_double_wabsdev_m (const long double w[], const size_t wstride, const long double data[], const size_t stride, const size_t n, const double wmean);
+-double gsl_stats_long_double_wskew_m_sd (const long double w[], const size_t wstride, const long double data[], const size_t stride, const size_t n, const double wmean, const double wsd);
+-double gsl_stats_long_double_wkurtosis_m_sd (const long double w[], const size_t wstride, const long double data[], const size_t stride, const size_t n, const double wmean, const double wsd);
+-
+-/* END OF FLOATING POINT TYPES */
+-
+-double gsl_stats_long_double_pvariance (const long double data1[], const size_t stride1, const size_t n1, const long double data2[], const size_t stride2, const size_t n2);
+-double gsl_stats_long_double_ttest (const long double data1[], const size_t stride1, const size_t n1, const long double data2[], const size_t stride2, const size_t n2);
+-
+-long double gsl_stats_long_double_max (const long double data[], const size_t stride, const size_t n);
+-long double gsl_stats_long_double_min (const long double data[], const size_t stride, const size_t n);
+-void gsl_stats_long_double_minmax (long double * min, long double * max, const long double data[], const size_t stride, const size_t n);
+-
+-size_t gsl_stats_long_double_max_index (const long double data[], const size_t stride, const size_t n);
+-size_t gsl_stats_long_double_min_index (const long double data[], const size_t stride, const size_t n);
+-void gsl_stats_long_double_minmax_index (size_t * min_index, size_t * max_index, const long double data[], const size_t stride, const size_t n);
+-
+-double gsl_stats_long_double_median_from_sorted_data (const long double sorted_data[], const size_t stride, const size_t n) ;
+-double gsl_stats_long_double_quantile_from_sorted_data (const long double sorted_data[], const size_t stride, const size_t n, const double f) ;
+-
+-__END_DECLS
+-
+-#endif /* __GSL_STATISTICS_LONG_DOUBLE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_complex_long_double.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_complex_long_double.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_complex_long_double.h	(revision 14079)
+@@ -1,351 +0,0 @@
+-/* matrix/gsl_matrix_complex_long_double.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_MATRIX_COMPLEX_LONG_DOUBLE_H__
+-#define __GSL_MATRIX_COMPLEX_LONG_DOUBLE_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_types.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_complex.h>
+-#include <gsl/gsl_check_range.h>
+-#include <gsl/gsl_vector_complex_long_double.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-typedef struct 
+-{
+-  size_t size1;
+-  size_t size2;
+-  size_t tda;
+-  long double * data;
+-  gsl_block_complex_long_double * block;
+-  int owner;
+-} gsl_matrix_complex_long_double ;
+-
+-typedef struct
+-{
+-  gsl_matrix_complex_long_double matrix;
+-} _gsl_matrix_complex_long_double_view;
+-
+-typedef _gsl_matrix_complex_long_double_view gsl_matrix_complex_long_double_view;
+-
+-typedef struct
+-{
+-  gsl_matrix_complex_long_double matrix;
+-} _gsl_matrix_complex_long_double_const_view;
+-
+-typedef const _gsl_matrix_complex_long_double_const_view gsl_matrix_complex_long_double_const_view;
+-
+-
+-/* Allocation */
+-
+-gsl_matrix_complex_long_double * 
+-gsl_matrix_complex_long_double_alloc (const size_t n1, const size_t n2);
+-
+-gsl_matrix_complex_long_double * 
+-gsl_matrix_complex_long_double_calloc (const size_t n1, const size_t n2);
+-
+-gsl_matrix_complex_long_double * 
+-gsl_matrix_complex_long_double_alloc_from_block (gsl_block_complex_long_double * b, 
+-                                           const size_t offset, 
+-                                           const size_t n1, const size_t n2, const size_t d2);
+-
+-gsl_matrix_complex_long_double * 
+-gsl_matrix_complex_long_double_alloc_from_matrix (gsl_matrix_complex_long_double * b,
+-                                            const size_t k1, const size_t k2,
+-                                            const size_t n1, const size_t n2);
+-
+-gsl_vector_complex_long_double * 
+-gsl_vector_complex_long_double_alloc_row_from_matrix (gsl_matrix_complex_long_double * m,
+-                                                const size_t i);
+-
+-gsl_vector_complex_long_double * 
+-gsl_vector_complex_long_double_alloc_col_from_matrix (gsl_matrix_complex_long_double * m,
+-                                                const size_t j);
+-
+-void gsl_matrix_complex_long_double_free (gsl_matrix_complex_long_double * m);
+-
+-/* Views */
+-
+-_gsl_matrix_complex_long_double_view 
+-gsl_matrix_complex_long_double_submatrix (gsl_matrix_complex_long_double * m, 
+-                            const size_t i, const size_t j, 
+-                            const size_t n1, const size_t n2);
+-
+-_gsl_vector_complex_long_double_view 
+-gsl_matrix_complex_long_double_row (gsl_matrix_complex_long_double * m, const size_t i);
+-
+-_gsl_vector_complex_long_double_view 
+-gsl_matrix_complex_long_double_column (gsl_matrix_complex_long_double * m, const size_t j);
+-
+-_gsl_vector_complex_long_double_view 
+-gsl_matrix_complex_long_double_diagonal (gsl_matrix_complex_long_double * m);
+-
+-_gsl_vector_complex_long_double_view 
+-gsl_matrix_complex_long_double_subdiagonal (gsl_matrix_complex_long_double * m, const size_t k);
+-
+-_gsl_vector_complex_long_double_view 
+-gsl_matrix_complex_long_double_superdiagonal (gsl_matrix_complex_long_double * m, const size_t k);
+-
+-_gsl_vector_complex_long_double_view
+-gsl_matrix_complex_long_double_subrow (gsl_matrix_complex_long_double * m,
+-                                 const size_t i, const size_t offset,
+-                                 const size_t n);
+-
+-_gsl_vector_complex_long_double_view
+-gsl_matrix_complex_long_double_subcolumn (gsl_matrix_complex_long_double * m,
+-                                    const size_t j, const size_t offset,
+-                                    const size_t n);
+-
+-_gsl_matrix_complex_long_double_view
+-gsl_matrix_complex_long_double_view_array (long double * base,
+-                             const size_t n1, 
+-                             const size_t n2);
+-
+-_gsl_matrix_complex_long_double_view
+-gsl_matrix_complex_long_double_view_array_with_tda (long double * base, 
+-                                      const size_t n1, 
+-                                      const size_t n2,
+-                                      const size_t tda);
+-
+-_gsl_matrix_complex_long_double_view
+-gsl_matrix_complex_long_double_view_vector (gsl_vector_complex_long_double * v,
+-                              const size_t n1, 
+-                              const size_t n2);
+-
+-_gsl_matrix_complex_long_double_view
+-gsl_matrix_complex_long_double_view_vector_with_tda (gsl_vector_complex_long_double * v,
+-                                       const size_t n1, 
+-                                       const size_t n2,
+-                                       const size_t tda);
+-
+-
+-_gsl_matrix_complex_long_double_const_view 
+-gsl_matrix_complex_long_double_const_submatrix (const gsl_matrix_complex_long_double * m, 
+-                                  const size_t i, const size_t j, 
+-                                  const size_t n1, const size_t n2);
+-
+-_gsl_vector_complex_long_double_const_view 
+-gsl_matrix_complex_long_double_const_row (const gsl_matrix_complex_long_double * m, 
+-                            const size_t i);
+-
+-_gsl_vector_complex_long_double_const_view 
+-gsl_matrix_complex_long_double_const_column (const gsl_matrix_complex_long_double * m, 
+-                               const size_t j);
+-
+-_gsl_vector_complex_long_double_const_view
+-gsl_matrix_complex_long_double_const_diagonal (const gsl_matrix_complex_long_double * m);
+-
+-_gsl_vector_complex_long_double_const_view 
+-gsl_matrix_complex_long_double_const_subdiagonal (const gsl_matrix_complex_long_double * m, 
+-                                    const size_t k);
+-
+-_gsl_vector_complex_long_double_const_view 
+-gsl_matrix_complex_long_double_const_superdiagonal (const gsl_matrix_complex_long_double * m, 
+-                                      const size_t k);
+-
+-_gsl_vector_complex_long_double_const_view
+-gsl_matrix_complex_long_double_const_subrow (const gsl_matrix_complex_long_double * m,
+-                                       const size_t i, const size_t offset,
+-                                       const size_t n);
+-
+-_gsl_vector_complex_long_double_const_view
+-gsl_matrix_complex_long_double_const_subcolumn (const gsl_matrix_complex_long_double * m,
+-                                          const size_t j, const size_t offset,
+-                                          const size_t n);
+-
+-_gsl_matrix_complex_long_double_const_view
+-gsl_matrix_complex_long_double_const_view_array (const long double * base,
+-                                   const size_t n1, 
+-                                   const size_t n2);
+-
+-_gsl_matrix_complex_long_double_const_view
+-gsl_matrix_complex_long_double_const_view_array_with_tda (const long double * base, 
+-                                            const size_t n1, 
+-                                            const size_t n2,
+-                                            const size_t tda);
+-
+-_gsl_matrix_complex_long_double_const_view
+-gsl_matrix_complex_long_double_const_view_vector (const gsl_vector_complex_long_double * v,
+-                                    const size_t n1, 
+-                                    const size_t n2);
+-
+-_gsl_matrix_complex_long_double_const_view
+-gsl_matrix_complex_long_double_const_view_vector_with_tda (const gsl_vector_complex_long_double * v,
+-                                             const size_t n1, 
+-                                             const size_t n2,
+-                                             const size_t tda);
+-
+-/* Operations */
+-
+-void gsl_matrix_complex_long_double_set_zero (gsl_matrix_complex_long_double * m);
+-void gsl_matrix_complex_long_double_set_identity (gsl_matrix_complex_long_double * m);
+-void gsl_matrix_complex_long_double_set_all (gsl_matrix_complex_long_double * m, gsl_complex_long_double x);
+-
+-int gsl_matrix_complex_long_double_fread (FILE * stream, gsl_matrix_complex_long_double * m) ;
+-int gsl_matrix_complex_long_double_fwrite (FILE * stream, const gsl_matrix_complex_long_double * m) ;
+-int gsl_matrix_complex_long_double_fscanf (FILE * stream, gsl_matrix_complex_long_double * m);
+-int gsl_matrix_complex_long_double_fprintf (FILE * stream, const gsl_matrix_complex_long_double * m, const char * format);
+-
+-int gsl_matrix_complex_long_double_memcpy(gsl_matrix_complex_long_double * dest, const gsl_matrix_complex_long_double * src);
+-int gsl_matrix_complex_long_double_swap(gsl_matrix_complex_long_double * m1, gsl_matrix_complex_long_double * m2);
+-
+-int gsl_matrix_complex_long_double_swap_rows(gsl_matrix_complex_long_double * m, const size_t i, const size_t j);
+-int gsl_matrix_complex_long_double_swap_columns(gsl_matrix_complex_long_double * m, const size_t i, const size_t j);
+-int gsl_matrix_complex_long_double_swap_rowcol(gsl_matrix_complex_long_double * m, const size_t i, const size_t j);
+-
+-int gsl_matrix_complex_long_double_transpose (gsl_matrix_complex_long_double * m);
+-int gsl_matrix_complex_long_double_transpose_memcpy (gsl_matrix_complex_long_double * dest, const gsl_matrix_complex_long_double * src);
+-
+-int gsl_matrix_complex_long_double_equal (const gsl_matrix_complex_long_double * a, const gsl_matrix_complex_long_double * b);
+-
+-int gsl_matrix_complex_long_double_isnull (const gsl_matrix_complex_long_double * m);
+-int gsl_matrix_complex_long_double_ispos (const gsl_matrix_complex_long_double * m);
+-int gsl_matrix_complex_long_double_isneg (const gsl_matrix_complex_long_double * m);
+-int gsl_matrix_complex_long_double_isnonneg (const gsl_matrix_complex_long_double * m);
+-
+-int gsl_matrix_complex_long_double_add (gsl_matrix_complex_long_double * a, const gsl_matrix_complex_long_double * b);
+-int gsl_matrix_complex_long_double_sub (gsl_matrix_complex_long_double * a, const gsl_matrix_complex_long_double * b);
+-int gsl_matrix_complex_long_double_mul_elements (gsl_matrix_complex_long_double * a, const gsl_matrix_complex_long_double * b);
+-int gsl_matrix_complex_long_double_div_elements (gsl_matrix_complex_long_double * a, const gsl_matrix_complex_long_double * b);
+-int gsl_matrix_complex_long_double_scale (gsl_matrix_complex_long_double * a, const gsl_complex_long_double x);
+-int gsl_matrix_complex_long_double_add_constant (gsl_matrix_complex_long_double * a, const gsl_complex_long_double x);
+-int gsl_matrix_complex_long_double_add_diagonal (gsl_matrix_complex_long_double * a, const gsl_complex_long_double x);
+-
+-/***********************************************************************/
+-/* The functions below are obsolete                                    */
+-/***********************************************************************/
+-int gsl_matrix_complex_long_double_get_row(gsl_vector_complex_long_double * v, const gsl_matrix_complex_long_double * m, const size_t i);
+-int gsl_matrix_complex_long_double_get_col(gsl_vector_complex_long_double * v, const gsl_matrix_complex_long_double * m, const size_t j);
+-int gsl_matrix_complex_long_double_set_row(gsl_matrix_complex_long_double * m, const size_t i, const gsl_vector_complex_long_double * v);
+-int gsl_matrix_complex_long_double_set_col(gsl_matrix_complex_long_double * m, const size_t j, const gsl_vector_complex_long_double * v);
+-/***********************************************************************/
+-
+-/* inline functions if you are using GCC */
+-
+-INLINE_DECL gsl_complex_long_double gsl_matrix_complex_long_double_get(const gsl_matrix_complex_long_double * m, const size_t i, const size_t j);
+-INLINE_DECL void gsl_matrix_complex_long_double_set(gsl_matrix_complex_long_double * m, const size_t i, const size_t j, const gsl_complex_long_double x);
+-
+-INLINE_DECL gsl_complex_long_double * gsl_matrix_complex_long_double_ptr(gsl_matrix_complex_long_double * m, const size_t i, const size_t j);
+-INLINE_DECL const gsl_complex_long_double * gsl_matrix_complex_long_double_const_ptr(const gsl_matrix_complex_long_double * m, const size_t i, const size_t j);
+-
+-#ifdef HAVE_INLINE
+-
+-INLINE_FUN 
+-gsl_complex_long_double
+-gsl_matrix_complex_long_double_get(const gsl_matrix_complex_long_double * m, 
+-                     const size_t i, const size_t j)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(1)) 
+-    {
+-      gsl_complex_long_double zero = {{0,0}};
+-
+-      if (i >= m->size1)
+-        {
+-          GSL_ERROR_VAL("first index out of range", GSL_EINVAL, zero) ;
+-        }
+-      else if (j >= m->size2)
+-        {
+-          GSL_ERROR_VAL("second index out of range", GSL_EINVAL, zero) ;
+-        }
+-    }
+-#endif
+-  return *(gsl_complex_long_double *)(m->data + 2*(i * m->tda + j)) ;
+-} 
+-
+-INLINE_FUN 
+-void
+-gsl_matrix_complex_long_double_set(gsl_matrix_complex_long_double * m, 
+-                     const size_t i, const size_t j, const gsl_complex_long_double x)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(1)) 
+-    {
+-      if (i >= m->size1)
+-        {
+-          GSL_ERROR_VOID("first index out of range", GSL_EINVAL) ;
+-        }
+-      else if (j >= m->size2)
+-        {
+-          GSL_ERROR_VOID("second index out of range", GSL_EINVAL) ;
+-        }
+-    }
+-#endif
+-  *(gsl_complex_long_double *)(m->data + 2*(i * m->tda + j)) = x ;
+-}
+-
+-INLINE_FUN 
+-gsl_complex_long_double *
+-gsl_matrix_complex_long_double_ptr(gsl_matrix_complex_long_double * m, 
+-                             const size_t i, const size_t j)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(1)) 
+-    {
+-      if (i >= m->size1)
+-        {
+-          GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
+-        }
+-      else if (j >= m->size2)
+-        {
+-          GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
+-        }
+-    }
+-#endif
+-  return (gsl_complex_long_double *)(m->data + 2*(i * m->tda + j)) ;
+-} 
+-
+-INLINE_FUN 
+-const gsl_complex_long_double *
+-gsl_matrix_complex_long_double_const_ptr(const gsl_matrix_complex_long_double * m, 
+-                                   const size_t i, const size_t j)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(1)) 
+-    {
+-      if (i >= m->size1)
+-        {
+-          GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
+-        }
+-      else if (j >= m->size2)
+-        {
+-          GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
+-        }
+-    }
+-#endif
+-  return (const gsl_complex_long_double *)(m->data + 2*(i * m->tda + j)) ;
+-} 
+-
+-#endif /* HAVE_INLINE */
+-
+-__END_DECLS
+-
+-#endif /* __GSL_MATRIX_COMPLEX_LONG_DOUBLE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_blas_types.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_blas_types.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_blas_types.h	(revision 14079)
+@@ -1,54 +0,0 @@
+-/* blas/gsl_blas_types.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-/*
+- * Author:  G. Jungman
+- */
+-/* Based on draft BLAST C interface specification  [Jul 7 1998]
+- */
+-#ifndef __GSL_BLAS_TYPES_H__
+-#define __GSL_BLAS_TYPES_H__
+-
+-#include <gsl/gsl_cblas.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-typedef  CBLAS_INDEX  CBLAS_INDEX_t;
+-typedef  enum CBLAS_ORDER       CBLAS_ORDER_t;
+-typedef  enum CBLAS_TRANSPOSE   CBLAS_TRANSPOSE_t;
+-typedef  enum CBLAS_UPLO        CBLAS_UPLO_t;
+-typedef  enum CBLAS_DIAG        CBLAS_DIAG_t;
+-typedef  enum CBLAS_SIDE        CBLAS_SIDE_t;
+-
+-/* typedef  gsl_complex  COMPLEX; */
+-
+-__END_DECLS
+-
+-
+-#endif /* __GSL_BLAS_TYPES_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_ulong.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_ulong.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_ulong.h	(revision 14079)
+@@ -1,230 +0,0 @@
+-/* vector/gsl_vector_ulong.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_VECTOR_ULONG_H__
+-#define __GSL_VECTOR_ULONG_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_types.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_inline.h>
+-#include <gsl/gsl_check_range.h>
+-#include <gsl/gsl_block_ulong.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-typedef struct 
+-{
+-  size_t size;
+-  size_t stride;
+-  unsigned long *data;
+-  gsl_block_ulong *block;
+-  int owner;
+-} 
+-gsl_vector_ulong;
+-
+-typedef struct
+-{
+-  gsl_vector_ulong vector;
+-} _gsl_vector_ulong_view;
+-
+-typedef _gsl_vector_ulong_view gsl_vector_ulong_view;
+-
+-typedef struct
+-{
+-  gsl_vector_ulong vector;
+-} _gsl_vector_ulong_const_view;
+-
+-typedef const _gsl_vector_ulong_const_view gsl_vector_ulong_const_view;
+-
+-
+-/* Allocation */
+-
+-gsl_vector_ulong *gsl_vector_ulong_alloc (const size_t n);
+-gsl_vector_ulong *gsl_vector_ulong_calloc (const size_t n);
+-
+-gsl_vector_ulong *gsl_vector_ulong_alloc_from_block (gsl_block_ulong * b,
+-                                                     const size_t offset, 
+-                                                     const size_t n, 
+-                                                     const size_t stride);
+-
+-gsl_vector_ulong *gsl_vector_ulong_alloc_from_vector (gsl_vector_ulong * v,
+-                                                      const size_t offset, 
+-                                                      const size_t n, 
+-                                                      const size_t stride);
+-
+-void gsl_vector_ulong_free (gsl_vector_ulong * v);
+-
+-/* Views */
+-
+-_gsl_vector_ulong_view 
+-gsl_vector_ulong_view_array (unsigned long *v, size_t n);
+-
+-_gsl_vector_ulong_view 
+-gsl_vector_ulong_view_array_with_stride (unsigned long *base,
+-                                         size_t stride,
+-                                         size_t n);
+-
+-_gsl_vector_ulong_const_view 
+-gsl_vector_ulong_const_view_array (const unsigned long *v, size_t n);
+-
+-_gsl_vector_ulong_const_view 
+-gsl_vector_ulong_const_view_array_with_stride (const unsigned long *base,
+-                                               size_t stride,
+-                                               size_t n);
+-
+-_gsl_vector_ulong_view 
+-gsl_vector_ulong_subvector (gsl_vector_ulong *v, 
+-                            size_t i, 
+-                            size_t n);
+-
+-_gsl_vector_ulong_view 
+-gsl_vector_ulong_subvector_with_stride (gsl_vector_ulong *v, 
+-                                        size_t i,
+-                                        size_t stride,
+-                                        size_t n);
+-
+-_gsl_vector_ulong_const_view 
+-gsl_vector_ulong_const_subvector (const gsl_vector_ulong *v, 
+-                                  size_t i, 
+-                                  size_t n);
+-
+-_gsl_vector_ulong_const_view 
+-gsl_vector_ulong_const_subvector_with_stride (const gsl_vector_ulong *v, 
+-                                              size_t i, 
+-                                              size_t stride,
+-                                              size_t n);
+-
+-/* Operations */
+-
+-void gsl_vector_ulong_set_zero (gsl_vector_ulong * v);
+-void gsl_vector_ulong_set_all (gsl_vector_ulong * v, unsigned long x);
+-int gsl_vector_ulong_set_basis (gsl_vector_ulong * v, size_t i);
+-
+-int gsl_vector_ulong_fread (FILE * stream, gsl_vector_ulong * v);
+-int gsl_vector_ulong_fwrite (FILE * stream, const gsl_vector_ulong * v);
+-int gsl_vector_ulong_fscanf (FILE * stream, gsl_vector_ulong * v);
+-int gsl_vector_ulong_fprintf (FILE * stream, const gsl_vector_ulong * v,
+-                              const char *format);
+-
+-int gsl_vector_ulong_memcpy (gsl_vector_ulong * dest, const gsl_vector_ulong * src);
+-
+-int gsl_vector_ulong_reverse (gsl_vector_ulong * v);
+-
+-int gsl_vector_ulong_swap (gsl_vector_ulong * v, gsl_vector_ulong * w);
+-int gsl_vector_ulong_swap_elements (gsl_vector_ulong * v, const size_t i, const size_t j);
+-
+-unsigned long gsl_vector_ulong_max (const gsl_vector_ulong * v);
+-unsigned long gsl_vector_ulong_min (const gsl_vector_ulong * v);
+-void gsl_vector_ulong_minmax (const gsl_vector_ulong * v, unsigned long * min_out, unsigned long * max_out);
+-
+-size_t gsl_vector_ulong_max_index (const gsl_vector_ulong * v);
+-size_t gsl_vector_ulong_min_index (const gsl_vector_ulong * v);
+-void gsl_vector_ulong_minmax_index (const gsl_vector_ulong * v, size_t * imin, size_t * imax);
+-
+-int gsl_vector_ulong_add (gsl_vector_ulong * a, const gsl_vector_ulong * b);
+-int gsl_vector_ulong_sub (gsl_vector_ulong * a, const gsl_vector_ulong * b);
+-int gsl_vector_ulong_mul (gsl_vector_ulong * a, const gsl_vector_ulong * b);
+-int gsl_vector_ulong_div (gsl_vector_ulong * a, const gsl_vector_ulong * b);
+-int gsl_vector_ulong_scale (gsl_vector_ulong * a, const double x);
+-int gsl_vector_ulong_add_constant (gsl_vector_ulong * a, const double x);
+-
+-int gsl_vector_ulong_equal (const gsl_vector_ulong * u, 
+-                            const gsl_vector_ulong * v);
+-
+-int gsl_vector_ulong_isnull (const gsl_vector_ulong * v);
+-int gsl_vector_ulong_ispos (const gsl_vector_ulong * v);
+-int gsl_vector_ulong_isneg (const gsl_vector_ulong * v);
+-int gsl_vector_ulong_isnonneg (const gsl_vector_ulong * v);
+-
+-INLINE_DECL unsigned long gsl_vector_ulong_get (const gsl_vector_ulong * v, const size_t i);
+-INLINE_DECL void gsl_vector_ulong_set (gsl_vector_ulong * v, const size_t i, unsigned long x);
+-INLINE_DECL unsigned long * gsl_vector_ulong_ptr (gsl_vector_ulong * v, const size_t i);
+-INLINE_DECL const unsigned long * gsl_vector_ulong_const_ptr (const gsl_vector_ulong * v, const size_t i);
+-
+-#ifdef HAVE_INLINE
+-
+-INLINE_FUN
+-unsigned long
+-gsl_vector_ulong_get (const gsl_vector_ulong * v, const size_t i)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(i >= v->size))
+-    {
+-      GSL_ERROR_VAL ("index out of range", GSL_EINVAL, 0);
+-    }
+-#endif
+-  return v->data[i * v->stride];
+-}
+-
+-INLINE_FUN
+-void
+-gsl_vector_ulong_set (gsl_vector_ulong * v, const size_t i, unsigned long x)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(i >= v->size))
+-    {
+-      GSL_ERROR_VOID ("index out of range", GSL_EINVAL);
+-    }
+-#endif
+-  v->data[i * v->stride] = x;
+-}
+-
+-INLINE_FUN
+-unsigned long *
+-gsl_vector_ulong_ptr (gsl_vector_ulong * v, const size_t i)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(i >= v->size))
+-    {
+-      GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
+-    }
+-#endif
+-  return (unsigned long *) (v->data + i * v->stride);
+-}
+-
+-INLINE_FUN
+-const unsigned long *
+-gsl_vector_ulong_const_ptr (const gsl_vector_ulong * v, const size_t i)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(i >= v->size))
+-    {
+-      GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
+-    }
+-#endif
+-  return (const unsigned long *) (v->data + i * v->stride);
+-}
+-#endif /* HAVE_INLINE */
+-
+-__END_DECLS
+-
+-#endif /* __GSL_VECTOR_ULONG_H__ */
+-
+-
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_wavelet.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_wavelet.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_wavelet.h	(revision 14079)
+@@ -1,108 +0,0 @@
+-/* wavelet/gsl_wavelet.h
+- * 
+- * Copyright (C) 2004 Ivo Alxneit
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_WAVELET_H__
+-#define __GSL_WAVELET_H__
+-#include <stdlib.h>
+-#include <gsl/gsl_types.h>
+-#include <gsl/gsl_errno.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS          /* empty */
+-# define __END_DECLS            /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-#ifndef GSL_DISABLE_DEPRECATED
+-typedef enum {
+-  forward = 1, backward = -1,
+-  gsl_wavelet_forward = 1, gsl_wavelet_backward = -1
+-} 
+-gsl_wavelet_direction;
+-#else
+-typedef enum {
+-  gsl_wavelet_forward = 1, gsl_wavelet_backward = -1
+-} 
+-gsl_wavelet_direction;
+-#endif
+-
+-typedef struct
+-{
+-  const char *name;
+-  int (*init) (const double **h1, const double **g1,
+-               const double **h2, const double **g2, size_t * nc,
+-               size_t * offset, size_t member);
+-}
+-gsl_wavelet_type;
+-
+-typedef struct
+-{
+-  const gsl_wavelet_type *type;
+-  const double *h1;
+-  const double *g1;
+-  const double *h2;
+-  const double *g2;
+-  size_t nc;
+-  size_t offset;
+-}
+-gsl_wavelet;
+-
+-typedef struct
+-{
+-  double *scratch;
+-  size_t n;
+-}
+-gsl_wavelet_workspace;
+-
+-GSL_VAR const gsl_wavelet_type *gsl_wavelet_daubechies;
+-GSL_VAR const gsl_wavelet_type *gsl_wavelet_daubechies_centered;
+-GSL_VAR const gsl_wavelet_type *gsl_wavelet_haar;
+-GSL_VAR const gsl_wavelet_type *gsl_wavelet_haar_centered;
+-GSL_VAR const gsl_wavelet_type *gsl_wavelet_bspline;
+-GSL_VAR const gsl_wavelet_type *gsl_wavelet_bspline_centered;
+-
+-gsl_wavelet *gsl_wavelet_alloc (const gsl_wavelet_type * T, size_t k);
+-void gsl_wavelet_free (gsl_wavelet * w);
+-const char *gsl_wavelet_name (const gsl_wavelet * w);
+-
+-gsl_wavelet_workspace *gsl_wavelet_workspace_alloc (size_t n);
+-void gsl_wavelet_workspace_free (gsl_wavelet_workspace * work);
+-
+-int gsl_wavelet_transform (const gsl_wavelet * w, 
+-                           double *data, size_t stride, size_t n,
+-                           gsl_wavelet_direction dir, 
+-                           gsl_wavelet_workspace * work);
+-
+-int gsl_wavelet_transform_forward (const gsl_wavelet * w, 
+-                                   double *data, size_t stride, size_t n, 
+-                                   gsl_wavelet_workspace * work);
+-
+-int gsl_wavelet_transform_inverse (const gsl_wavelet * w, 
+-                                    double *data, size_t stride, size_t n, 
+-                                    gsl_wavelet_workspace * work);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_WAVELET_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_coupling.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_coupling.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_coupling.h	(revision 14079)
+@@ -1,125 +0,0 @@
+-/* specfunc/gsl_sf_coupling.h
+- * 
+- * Copyright (C) 1996,1997,1998,1999,2000,2001,2002 Gerard Jungman
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-/* Author:  G. Jungman */
+-
+-#ifndef __GSL_SF_COUPLING_H__
+-#define __GSL_SF_COUPLING_H__
+-
+-#include <gsl/gsl_sf_result.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-
+-/* 3j Symbols:  / ja jb jc \
+- *              \ ma mb mc /
+- *
+- * exceptions: GSL_EDOM, GSL_EOVRFLW
+- */
+-int gsl_sf_coupling_3j_e(int two_ja, int two_jb, int two_jc,
+-                            int two_ma, int two_mb, int two_mc,
+-                            gsl_sf_result * result
+-                            );
+-double gsl_sf_coupling_3j(int two_ja, int two_jb, int two_jc,
+-                          int two_ma, int two_mb, int two_mc
+-                          );
+-
+-
+-/* 6j Symbols:  / ja jb jc \
+- *              \ jd je jf /
+- *
+- * exceptions: GSL_EDOM, GSL_EOVRFLW
+- */
+-int gsl_sf_coupling_6j_e(int two_ja, int two_jb, int two_jc,
+-                         int two_jd, int two_je, int two_jf,
+-                         gsl_sf_result * result
+-                         );
+-double gsl_sf_coupling_6j(int two_ja, int two_jb, int two_jc,
+-                          int two_jd, int two_je, int two_jf
+-                          );
+-
+-/* Racah W coefficients:
+- *
+- *   W(a b c d; e f) = (-1)^{a+b+c+d} / a b e \
+- *                                    \ d c f /
+- *
+- * exceptions: GSL_EDOM, GSL_EOVRFLW
+- */
+-int gsl_sf_coupling_RacahW_e(int two_ja, int two_jb, int two_jc,
+-                             int two_jd, int two_je, int two_jf,
+-                             gsl_sf_result * result
+-                             );
+-double gsl_sf_coupling_RacahW(int two_ja, int two_jb, int two_jc,
+-                              int two_jd, int two_je, int two_jf
+-                              );
+-
+-
+-/* 9j Symbols:  / ja jb jc \
+- *              | jd je jf |
+- *              \ jg jh ji /
+- *
+- * exceptions: GSL_EDOM, GSL_EOVRFLW
+- */
+-int gsl_sf_coupling_9j_e(int two_ja, int two_jb, int two_jc,
+-                         int two_jd, int two_je, int two_jf,
+-                         int two_jg, int two_jh, int two_ji,
+-                         gsl_sf_result * result
+-                         );
+-double gsl_sf_coupling_9j(int two_ja, int two_jb, int two_jc,
+-                          int two_jd, int two_je, int two_jf,
+-                          int two_jg, int two_jh, int two_ji
+-                          );
+-
+-
+-/* INCORRECT version of 6j Symbols:
+- * This function actually calculates
+- *              / ja jb je \
+- *              \ jd jc jf /
+- * It represents the original implementation,
+- * which had the above permutation of the
+- * arguments. This was wrong and confusing,
+- * and I had to fix it. Sorry for the trouble.
+- * [GJ] Tue Nov 26 12:53:39 MST 2002
+- *
+- * exceptions: GSL_EDOM, GSL_EOVRFLW
+- */
+-#ifndef GSL_DISABLE_DEPRECATED
+-int gsl_sf_coupling_6j_INCORRECT_e(int two_ja, int two_jb, int two_jc,
+-                                   int two_jd, int two_je, int two_jf,
+-                                   gsl_sf_result * result
+-                                   );
+-double gsl_sf_coupling_6j_INCORRECT(int two_ja, int two_jb, int two_jc,
+-                                    int two_jd, int two_je, int two_jf
+-                                    );
+-#endif /* !GSL_DISABLE_DEPRECATED */
+-
+-
+-__END_DECLS
+-
+-#endif /* __GSL_SF_COUPLING_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf.h	(revision 14079)
+@@ -1,39 +0,0 @@
+-/* Author:  G. Jungman */
+-
+-#ifndef __GSL_SF_H__
+-#define __GSL_SF_H__
+-
+-#include <gsl/gsl_sf_result.h>
+-
+-#include <gsl/gsl_sf_airy.h>
+-#include <gsl/gsl_sf_bessel.h>
+-#include <gsl/gsl_sf_clausen.h>
+-#include <gsl/gsl_sf_coupling.h>
+-#include <gsl/gsl_sf_coulomb.h>
+-#include <gsl/gsl_sf_dawson.h>
+-#include <gsl/gsl_sf_debye.h>
+-#include <gsl/gsl_sf_dilog.h>
+-#include <gsl/gsl_sf_elementary.h>
+-#include <gsl/gsl_sf_ellint.h>
+-#include <gsl/gsl_sf_elljac.h>
+-#include <gsl/gsl_sf_erf.h>
+-#include <gsl/gsl_sf_exp.h>
+-#include <gsl/gsl_sf_expint.h>
+-#include <gsl/gsl_sf_fermi_dirac.h>
+-#include <gsl/gsl_sf_gamma.h>
+-#include <gsl/gsl_sf_gegenbauer.h>
+-#include <gsl/gsl_sf_hyperg.h>
+-#include <gsl/gsl_sf_laguerre.h>
+-#include <gsl/gsl_sf_lambert.h>
+-#include <gsl/gsl_sf_legendre.h>
+-#include <gsl/gsl_sf_log.h>
+-#include <gsl/gsl_sf_mathieu.h>
+-#include <gsl/gsl_sf_pow_int.h>
+-#include <gsl/gsl_sf_psi.h>
+-#include <gsl/gsl_sf_synchrotron.h>
+-#include <gsl/gsl_sf_transport.h>
+-#include <gsl/gsl_sf_trig.h>
+-#include <gsl/gsl_sf_zeta.h>
+-
+-
+-#endif /* __GSL_SF_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector.h	(revision 14079)
+@@ -1,20 +0,0 @@
+-#ifndef __GSL_SORT_VECTOR_H__
+-#define __GSL_SORT_VECTOR_H__
+-
+-#include <gsl/gsl_sort_vector_long_double.h>
+-#include <gsl/gsl_sort_vector_double.h>
+-#include <gsl/gsl_sort_vector_float.h>
+-
+-#include <gsl/gsl_sort_vector_ulong.h>
+-#include <gsl/gsl_sort_vector_long.h>
+-
+-#include <gsl/gsl_sort_vector_uint.h>
+-#include <gsl/gsl_sort_vector_int.h>
+-
+-#include <gsl/gsl_sort_vector_ushort.h>
+-#include <gsl/gsl_sort_vector_short.h>
+-
+-#include <gsl/gsl_sort_vector_uchar.h>
+-#include <gsl/gsl_sort_vector_char.h>
+-
+-#endif /* __GSL_SORT_VECTOR_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_short.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_short.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_short.h	(revision 14079)
+@@ -1,65 +0,0 @@
+-/* block/gsl_block_short.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_BLOCK_SHORT_H__
+-#define __GSL_BLOCK_SHORT_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-struct gsl_block_short_struct
+-{
+-  size_t size;
+-  short *data;
+-};
+-
+-typedef struct gsl_block_short_struct gsl_block_short;
+-
+-gsl_block_short *gsl_block_short_alloc (const size_t n);
+-gsl_block_short *gsl_block_short_calloc (const size_t n);
+-void gsl_block_short_free (gsl_block_short * b);
+-
+-int gsl_block_short_fread (FILE * stream, gsl_block_short * b);
+-int gsl_block_short_fwrite (FILE * stream, const gsl_block_short * b);
+-int gsl_block_short_fscanf (FILE * stream, gsl_block_short * b);
+-int gsl_block_short_fprintf (FILE * stream, const gsl_block_short * b, const char *format);
+-
+-int gsl_block_short_raw_fread (FILE * stream, short * b, const size_t n, const size_t stride);
+-int gsl_block_short_raw_fwrite (FILE * stream, const short * b, const size_t n, const size_t stride);
+-int gsl_block_short_raw_fscanf (FILE * stream, short * b, const size_t n, const size_t stride);
+-int gsl_block_short_raw_fprintf (FILE * stream, const short * b, const size_t n, const size_t stride, const char *format);
+-
+-size_t gsl_block_short_size (const gsl_block_short * b);
+-short * gsl_block_short_data (const gsl_block_short * b);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_BLOCK_SHORT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_ushort.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_ushort.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_vector_ushort.h	(revision 14079)
+@@ -1,51 +0,0 @@
+-/* sort/gsl_sort_vector_ushort.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_SORT_VECTOR_USHORT_H__
+-#define __GSL_SORT_VECTOR_USHORT_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_permutation.h>
+-#include <gsl/gsl_vector_ushort.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-void gsl_sort_vector_ushort (gsl_vector_ushort * v);
+-int gsl_sort_vector_ushort_index (gsl_permutation * p, const gsl_vector_ushort * v);
+-
+-int gsl_sort_vector_ushort_smallest (unsigned short * dest, const size_t k, const gsl_vector_ushort * v);
+-int gsl_sort_vector_ushort_largest (unsigned short * dest, const size_t k, const gsl_vector_ushort * v);
+-
+-int gsl_sort_vector_ushort_smallest_index (size_t * p, const size_t k, const gsl_vector_ushort * v);
+-int gsl_sort_vector_ushort_largest_index (size_t * p, const size_t k, const gsl_vector_ushort * v);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_SORT_VECTOR_USHORT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_multiroots.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_multiroots.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_multiroots.h	(revision 14079)
+@@ -1,177 +0,0 @@
+-/* multiroots/gsl_multiroots.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_MULTIROOTS_H__
+-#define __GSL_MULTIROOTS_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_types.h>
+-#include <gsl/gsl_math.h>
+-#include <gsl/gsl_vector.h>
+-#include <gsl/gsl_matrix.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-/* Definition of vector-valued functions with parameters based on gsl_vector */
+-
+-struct gsl_multiroot_function_struct
+-{
+-  int (* f) (const gsl_vector * x, void * params, gsl_vector * f);
+-  size_t n;
+-  void * params;
+-};
+-
+-typedef struct gsl_multiroot_function_struct gsl_multiroot_function ;
+-
+-#define GSL_MULTIROOT_FN_EVAL(F,x,y) (*((F)->f))(x,(F)->params,(y))
+-
+-int gsl_multiroot_fdjacobian (gsl_multiroot_function * F,
+-                              const gsl_vector * x, const gsl_vector * f,
+-                              double epsrel, gsl_matrix * jacobian);
+-
+-
+-typedef struct
+-  {
+-    const char *name;
+-    size_t size;
+-    int (*alloc) (void *state, size_t n);
+-    int (*set) (void *state, gsl_multiroot_function * function, gsl_vector * x, gsl_vector * f, gsl_vector * dx);
+-    int (*iterate) (void *state, gsl_multiroot_function * function, gsl_vector * x, gsl_vector * f, gsl_vector * dx);
+-    void (*free) (void *state);
+-  }
+-gsl_multiroot_fsolver_type;
+-
+-typedef struct
+-  {
+-    const gsl_multiroot_fsolver_type * type;
+-    gsl_multiroot_function * function ;
+-    gsl_vector * x ;
+-    gsl_vector * f ;
+-    gsl_vector * dx ;
+-    void *state;
+-  }
+-gsl_multiroot_fsolver;
+-
+-gsl_multiroot_fsolver * 
+-gsl_multiroot_fsolver_alloc (const gsl_multiroot_fsolver_type * T, 
+-                                     size_t n); 
+-
+-void gsl_multiroot_fsolver_free (gsl_multiroot_fsolver * s);
+-
+-int gsl_multiroot_fsolver_set (gsl_multiroot_fsolver * s, 
+-                               gsl_multiroot_function * f, 
+-                               const gsl_vector * x);
+-
+-int gsl_multiroot_fsolver_iterate (gsl_multiroot_fsolver * s);
+-
+-const char * gsl_multiroot_fsolver_name (const gsl_multiroot_fsolver * s);
+-gsl_vector * gsl_multiroot_fsolver_root (const gsl_multiroot_fsolver * s);
+-gsl_vector * gsl_multiroot_fsolver_dx (const gsl_multiroot_fsolver * s);
+-gsl_vector * gsl_multiroot_fsolver_f (const gsl_multiroot_fsolver * s);
+-
+-/* Definition of vector-valued functions and gradient with parameters
+-   based on gsl_vector */
+-
+-struct gsl_multiroot_function_fdf_struct
+-{
+-  int (* f) (const gsl_vector * x, void * params, gsl_vector * f);
+-  int (* df) (const gsl_vector * x, void * params, gsl_matrix * df);
+-  int (* fdf) (const gsl_vector * x, void * params, gsl_vector * f, gsl_matrix *df);
+-  size_t n;
+-  void * params;
+-};
+-
+-typedef struct gsl_multiroot_function_fdf_struct gsl_multiroot_function_fdf ;
+-
+-#define GSL_MULTIROOT_FN_EVAL_F(F,x,y) ((*((F)->f))(x,(F)->params,(y)))
+-#define GSL_MULTIROOT_FN_EVAL_DF(F,x,dy) ((*((F)->df))(x,(F)->params,(dy)))
+-#define GSL_MULTIROOT_FN_EVAL_F_DF(F,x,y,dy) ((*((F)->fdf))(x,(F)->params,(y),(dy)))
+-
+-typedef struct
+-  {
+-    const char *name;
+-    size_t size;
+-    int (*alloc) (void *state, size_t n);
+-    int (*set) (void *state, gsl_multiroot_function_fdf * fdf, gsl_vector * x, gsl_vector * f, gsl_matrix * J, gsl_vector * dx);
+-    int (*iterate) (void *state, gsl_multiroot_function_fdf * fdf, gsl_vector * x, gsl_vector * f, gsl_matrix * J, gsl_vector * dx);
+-    void (*free) (void *state);
+-  }
+-gsl_multiroot_fdfsolver_type;
+-
+-typedef struct
+-  {
+-    const gsl_multiroot_fdfsolver_type * type;
+-    gsl_multiroot_function_fdf * fdf ;
+-    gsl_vector * x;
+-    gsl_vector * f;
+-    gsl_matrix * J;
+-    gsl_vector * dx;
+-    void *state;
+-  }
+-gsl_multiroot_fdfsolver;
+-
+-gsl_multiroot_fdfsolver *
+-gsl_multiroot_fdfsolver_alloc (const gsl_multiroot_fdfsolver_type * T,
+-                                      size_t n);
+-
+-int
+-gsl_multiroot_fdfsolver_set (gsl_multiroot_fdfsolver * s, 
+-                             gsl_multiroot_function_fdf * fdf,
+-                             const gsl_vector * x);
+-
+-int
+-gsl_multiroot_fdfsolver_iterate (gsl_multiroot_fdfsolver * s);
+-
+-void
+-gsl_multiroot_fdfsolver_free (gsl_multiroot_fdfsolver * s);
+-
+-const char * gsl_multiroot_fdfsolver_name (const gsl_multiroot_fdfsolver * s);
+-gsl_vector * gsl_multiroot_fdfsolver_root (const gsl_multiroot_fdfsolver * s);
+-gsl_vector * gsl_multiroot_fdfsolver_dx (const gsl_multiroot_fdfsolver * s);
+-gsl_vector * gsl_multiroot_fdfsolver_f (const gsl_multiroot_fdfsolver * s);
+-
+-int gsl_multiroot_test_delta (const gsl_vector * dx, const gsl_vector * x, 
+-                              double epsabs, double epsrel);
+-
+-int gsl_multiroot_test_residual (const gsl_vector * f, double epsabs);
+-
+-GSL_VAR const gsl_multiroot_fsolver_type * gsl_multiroot_fsolver_dnewton;
+-GSL_VAR const gsl_multiroot_fsolver_type * gsl_multiroot_fsolver_broyden;
+-GSL_VAR const gsl_multiroot_fsolver_type * gsl_multiroot_fsolver_hybrid;
+-GSL_VAR const gsl_multiroot_fsolver_type * gsl_multiroot_fsolver_hybrids;
+-
+-GSL_VAR const gsl_multiroot_fdfsolver_type * gsl_multiroot_fdfsolver_newton;
+-GSL_VAR const gsl_multiroot_fdfsolver_type * gsl_multiroot_fdfsolver_gnewton;
+-GSL_VAR const gsl_multiroot_fdfsolver_type * gsl_multiroot_fdfsolver_hybridj;
+-GSL_VAR const gsl_multiroot_fdfsolver_type * gsl_multiroot_fdfsolver_hybridsj;
+-
+-
+-__END_DECLS
+-
+-#endif /* __GSL_MULTIROOTS_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_elljac.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_elljac.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_elljac.h	(revision 14079)
+@@ -1,48 +0,0 @@
+-/* specfunc/gsl_sf_elljac.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-/* Author:  G. Jungman */
+-
+-#ifndef __GSL_SF_ELLJAC_H__
+-#define __GSL_SF_ELLJAC_H__
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-
+-/* Jacobian elliptic functions sn, dn, cn,
+- * by descending Landen transformations
+- *
+- * exceptions: GSL_EDOM
+- */
+-int gsl_sf_elljac_e(double u, double m, double * sn, double * cn, double * dn);
+-
+-
+-__END_DECLS
+-
+-#endif /* __GSL_SF_ELLJAC_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_cblas.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_cblas.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_cblas.h	(revision 14079)
+@@ -1,606 +0,0 @@
+-/* blas/gsl_cblas.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-/* This is a copy of the CBLAS standard header.
+- * We carry this around so we do not have to
+- * break our model for flexible BLAS functionality.
+- */
+-
+-#ifndef __GSL_CBLAS_H__
+-#define __GSL_CBLAS_H__
+-#include <stddef.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-#define __BEGIN_DECLS extern "C" {
+-#define __END_DECLS }
+-#else
+-#define __BEGIN_DECLS           /* empty */
+-#define __END_DECLS             /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-/*
+- * Enumerated and derived types
+- */
+-#define CBLAS_INDEX size_t  /* this may vary between platforms */
+-
+-enum CBLAS_ORDER {CblasRowMajor=101, CblasColMajor=102};
+-enum CBLAS_TRANSPOSE {CblasNoTrans=111, CblasTrans=112, CblasConjTrans=113};
+-enum CBLAS_UPLO {CblasUpper=121, CblasLower=122};
+-enum CBLAS_DIAG {CblasNonUnit=131, CblasUnit=132};
+-enum CBLAS_SIDE {CblasLeft=141, CblasRight=142};
+-
+-/*
+- * ===========================================================================
+- * Prototypes for level 1 BLAS functions (complex are recast as routines)
+- * ===========================================================================
+- */
+-float  cblas_sdsdot(const int N, const float alpha, const float *X,
+-                    const int incX, const float *Y, const int incY);
+-double cblas_dsdot(const int N, const float *X, const int incX, const float *Y,
+-                   const int incY);
+-float  cblas_sdot(const int N, const float  *X, const int incX,
+-                  const float  *Y, const int incY);
+-double cblas_ddot(const int N, const double *X, const int incX,
+-                  const double *Y, const int incY);
+-
+-/*
+- * Functions having prefixes Z and C only
+- */
+-void   cblas_cdotu_sub(const int N, const void *X, const int incX,
+-                       const void *Y, const int incY, void *dotu);
+-void   cblas_cdotc_sub(const int N, const void *X, const int incX,
+-                       const void *Y, const int incY, void *dotc);
+-
+-void   cblas_zdotu_sub(const int N, const void *X, const int incX,
+-                       const void *Y, const int incY, void *dotu);
+-void   cblas_zdotc_sub(const int N, const void *X, const int incX,
+-                       const void *Y, const int incY, void *dotc);
+-
+-
+-/*
+- * Functions having prefixes S D SC DZ
+- */
+-float  cblas_snrm2(const int N, const float *X, const int incX);
+-float  cblas_sasum(const int N, const float *X, const int incX);
+-
+-double cblas_dnrm2(const int N, const double *X, const int incX);
+-double cblas_dasum(const int N, const double *X, const int incX);
+-
+-float  cblas_scnrm2(const int N, const void *X, const int incX);
+-float  cblas_scasum(const int N, const void *X, const int incX);
+-
+-double cblas_dznrm2(const int N, const void *X, const int incX);
+-double cblas_dzasum(const int N, const void *X, const int incX);
+-
+-
+-/*
+- * Functions having standard 4 prefixes (S D C Z)
+- */
+-CBLAS_INDEX cblas_isamax(const int N, const float  *X, const int incX);
+-CBLAS_INDEX cblas_idamax(const int N, const double *X, const int incX);
+-CBLAS_INDEX cblas_icamax(const int N, const void   *X, const int incX);
+-CBLAS_INDEX cblas_izamax(const int N, const void   *X, const int incX);
+-
+-/*
+- * ===========================================================================
+- * Prototypes for level 1 BLAS routines
+- * ===========================================================================
+- */
+-
+-/* 
+- * Routines with standard 4 prefixes (s, d, c, z)
+- */
+-void cblas_sswap(const int N, float *X, const int incX, 
+-                 float *Y, const int incY);
+-void cblas_scopy(const int N, const float *X, const int incX, 
+-                 float *Y, const int incY);
+-void cblas_saxpy(const int N, const float alpha, const float *X,
+-                 const int incX, float *Y, const int incY);
+-
+-void cblas_dswap(const int N, double *X, const int incX, 
+-                 double *Y, const int incY);
+-void cblas_dcopy(const int N, const double *X, const int incX, 
+-                 double *Y, const int incY);
+-void cblas_daxpy(const int N, const double alpha, const double *X,
+-                 const int incX, double *Y, const int incY);
+-
+-void cblas_cswap(const int N, void *X, const int incX, 
+-                 void *Y, const int incY);
+-void cblas_ccopy(const int N, const void *X, const int incX, 
+-                 void *Y, const int incY);
+-void cblas_caxpy(const int N, const void *alpha, const void *X,
+-                 const int incX, void *Y, const int incY);
+-
+-void cblas_zswap(const int N, void *X, const int incX, 
+-                 void *Y, const int incY);
+-void cblas_zcopy(const int N, const void *X, const int incX, 
+-                 void *Y, const int incY);
+-void cblas_zaxpy(const int N, const void *alpha, const void *X,
+-                 const int incX, void *Y, const int incY);
+-
+-
+-/* 
+- * Routines with S and D prefix only
+- */
+-void cblas_srotg(float *a, float *b, float *c, float *s);
+-void cblas_srotmg(float *d1, float *d2, float *b1, const float b2, float *P);
+-void cblas_srot(const int N, float *X, const int incX,
+-                float *Y, const int incY, const float c, const float s);
+-void cblas_srotm(const int N, float *X, const int incX,
+-                float *Y, const int incY, const float *P);
+-
+-void cblas_drotg(double *a, double *b, double *c, double *s);
+-void cblas_drotmg(double *d1, double *d2, double *b1, const double b2, double *P);
+-void cblas_drot(const int N, double *X, const int incX,
+-                double *Y, const int incY, const double c, const double  s);
+-void cblas_drotm(const int N, double *X, const int incX,
+-                double *Y, const int incY, const double *P);
+-
+-
+-/* 
+- * Routines with S D C Z CS and ZD prefixes
+- */
+-void cblas_sscal(const int N, const float alpha, float *X, const int incX);
+-void cblas_dscal(const int N, const double alpha, double *X, const int incX);
+-void cblas_cscal(const int N, const void *alpha, void *X, const int incX);
+-void cblas_zscal(const int N, const void *alpha, void *X, const int incX);
+-void cblas_csscal(const int N, const float alpha, void *X, const int incX);
+-void cblas_zdscal(const int N, const double alpha, void *X, const int incX);
+-
+-/*
+- * ===========================================================================
+- * Prototypes for level 2 BLAS
+- * ===========================================================================
+- */
+-
+-/* 
+- * Routines with standard 4 prefixes (S, D, C, Z)
+- */
+-void cblas_sgemv(const enum CBLAS_ORDER order,
+-                 const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
+-                 const float alpha, const float *A, const int lda,
+-                 const float *X, const int incX, const float beta,
+-                 float *Y, const int incY);
+-void cblas_sgbmv(const enum CBLAS_ORDER order,
+-                 const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
+-                 const int KL, const int KU, const float alpha,
+-                 const float *A, const int lda, const float *X,
+-                 const int incX, const float beta, float *Y, const int incY);
+-void cblas_strmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+-                 const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
+-                 const int N, const float *A, const int lda, 
+-                 float *X, const int incX);
+-void cblas_stbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+-                 const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
+-                 const int N, const int K, const float *A, const int lda, 
+-                 float *X, const int incX);
+-void cblas_stpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+-                 const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
+-                 const int N, const float *Ap, float *X, const int incX);
+-void cblas_strsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+-                 const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
+-                 const int N, const float *A, const int lda, float *X,
+-                 const int incX);
+-void cblas_stbsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+-                 const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
+-                 const int N, const int K, const float *A, const int lda,
+-                 float *X, const int incX);
+-void cblas_stpsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+-                 const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
+-                 const int N, const float *Ap, float *X, const int incX);
+-
+-void cblas_dgemv(const enum CBLAS_ORDER order,
+-                 const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
+-                 const double alpha, const double *A, const int lda,
+-                 const double *X, const int incX, const double beta,
+-                 double *Y, const int incY);
+-void cblas_dgbmv(const enum CBLAS_ORDER order,
+-                 const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
+-                 const int KL, const int KU, const double alpha,
+-                 const double *A, const int lda, const double *X,
+-                 const int incX, const double beta, double *Y, const int incY);
+-void cblas_dtrmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+-                 const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
+-                 const int N, const double *A, const int lda, 
+-                 double *X, const int incX);
+-void cblas_dtbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+-                 const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
+-                 const int N, const int K, const double *A, const int lda, 
+-                 double *X, const int incX);
+-void cblas_dtpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+-                 const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
+-                 const int N, const double *Ap, double *X, const int incX);
+-void cblas_dtrsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+-                 const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
+-                 const int N, const double *A, const int lda, double *X,
+-                 const int incX);
+-void cblas_dtbsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+-                 const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
+-                 const int N, const int K, const double *A, const int lda,
+-                 double *X, const int incX);
+-void cblas_dtpsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+-                 const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
+-                 const int N, const double *Ap, double *X, const int incX);
+-
+-void cblas_cgemv(const enum CBLAS_ORDER order,
+-                 const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
+-                 const void *alpha, const void *A, const int lda,
+-                 const void *X, const int incX, const void *beta,
+-                 void *Y, const int incY);
+-void cblas_cgbmv(const enum CBLAS_ORDER order,
+-                 const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
+-                 const int KL, const int KU, const void *alpha,
+-                 const void *A, const int lda, const void *X,
+-                 const int incX, const void *beta, void *Y, const int incY);
+-void cblas_ctrmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+-                 const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
+-                 const int N, const void *A, const int lda, 
+-                 void *X, const int incX);
+-void cblas_ctbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+-                 const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
+-                 const int N, const int K, const void *A, const int lda, 
+-                 void *X, const int incX);
+-void cblas_ctpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+-                 const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
+-                 const int N, const void *Ap, void *X, const int incX);
+-void cblas_ctrsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+-                 const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
+-                 const int N, const void *A, const int lda, void *X,
+-                 const int incX);
+-void cblas_ctbsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+-                 const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
+-                 const int N, const int K, const void *A, const int lda,
+-                 void *X, const int incX);
+-void cblas_ctpsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+-                 const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
+-                 const int N, const void *Ap, void *X, const int incX);
+-
+-void cblas_zgemv(const enum CBLAS_ORDER order,
+-                 const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
+-                 const void *alpha, const void *A, const int lda,
+-                 const void *X, const int incX, const void *beta,
+-                 void *Y, const int incY);
+-void cblas_zgbmv(const enum CBLAS_ORDER order,
+-                 const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
+-                 const int KL, const int KU, const void *alpha,
+-                 const void *A, const int lda, const void *X,
+-                 const int incX, const void *beta, void *Y, const int incY);
+-void cblas_ztrmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+-                 const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
+-                 const int N, const void *A, const int lda, 
+-                 void *X, const int incX);
+-void cblas_ztbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+-                 const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
+-                 const int N, const int K, const void *A, const int lda, 
+-                 void *X, const int incX);
+-void cblas_ztpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+-                 const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
+-                 const int N, const void *Ap, void *X, const int incX);
+-void cblas_ztrsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+-                 const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
+-                 const int N, const void *A, const int lda, void *X,
+-                 const int incX);
+-void cblas_ztbsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+-                 const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
+-                 const int N, const int K, const void *A, const int lda,
+-                 void *X, const int incX);
+-void cblas_ztpsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+-                 const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
+-                 const int N, const void *Ap, void *X, const int incX);
+-
+-
+-/* 
+- * Routines with S and D prefixes only
+- */
+-void cblas_ssymv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+-                 const int N, const float alpha, const float *A,
+-                 const int lda, const float *X, const int incX,
+-                 const float beta, float *Y, const int incY);
+-void cblas_ssbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+-                 const int N, const int K, const float alpha, const float *A,
+-                 const int lda, const float *X, const int incX,
+-                 const float beta, float *Y, const int incY);
+-void cblas_sspmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+-                 const int N, const float alpha, const float *Ap,
+-                 const float *X, const int incX,
+-                 const float beta, float *Y, const int incY);
+-void cblas_sger(const enum CBLAS_ORDER order, const int M, const int N,
+-                const float alpha, const float *X, const int incX,
+-                const float *Y, const int incY, float *A, const int lda);
+-void cblas_ssyr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+-                const int N, const float alpha, const float *X,
+-                const int incX, float *A, const int lda);
+-void cblas_sspr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+-                const int N, const float alpha, const float *X,
+-                const int incX, float *Ap);
+-void cblas_ssyr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+-                const int N, const float alpha, const float *X,
+-                const int incX, const float *Y, const int incY, float *A,
+-                const int lda);
+-void cblas_sspr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+-                const int N, const float alpha, const float *X,
+-                const int incX, const float *Y, const int incY, float *A);
+-
+-void cblas_dsymv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+-                 const int N, const double alpha, const double *A,
+-                 const int lda, const double *X, const int incX,
+-                 const double beta, double *Y, const int incY);
+-void cblas_dsbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+-                 const int N, const int K, const double alpha, const double *A,
+-                 const int lda, const double *X, const int incX,
+-                 const double beta, double *Y, const int incY);
+-void cblas_dspmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+-                 const int N, const double alpha, const double *Ap,
+-                 const double *X, const int incX,
+-                 const double beta, double *Y, const int incY);
+-void cblas_dger(const enum CBLAS_ORDER order, const int M, const int N,
+-                const double alpha, const double *X, const int incX,
+-                const double *Y, const int incY, double *A, const int lda);
+-void cblas_dsyr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+-                const int N, const double alpha, const double *X,
+-                const int incX, double *A, const int lda);
+-void cblas_dspr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+-                const int N, const double alpha, const double *X,
+-                const int incX, double *Ap);
+-void cblas_dsyr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+-                const int N, const double alpha, const double *X,
+-                const int incX, const double *Y, const int incY, double *A,
+-                const int lda);
+-void cblas_dspr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+-                const int N, const double alpha, const double *X,
+-                const int incX, const double *Y, const int incY, double *A);
+-
+-
+-/* 
+- * Routines with C and Z prefixes only
+- */
+-void cblas_chemv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+-                 const int N, const void *alpha, const void *A,
+-                 const int lda, const void *X, const int incX,
+-                 const void *beta, void *Y, const int incY);
+-void cblas_chbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+-                 const int N, const int K, const void *alpha, const void *A,
+-                 const int lda, const void *X, const int incX,
+-                 const void *beta, void *Y, const int incY);
+-void cblas_chpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+-                 const int N, const void *alpha, const void *Ap,
+-                 const void *X, const int incX,
+-                 const void *beta, void *Y, const int incY);
+-void cblas_cgeru(const enum CBLAS_ORDER order, const int M, const int N,
+-                 const void *alpha, const void *X, const int incX,
+-                 const void *Y, const int incY, void *A, const int lda);
+-void cblas_cgerc(const enum CBLAS_ORDER order, const int M, const int N,
+-                 const void *alpha, const void *X, const int incX,
+-                 const void *Y, const int incY, void *A, const int lda);
+-void cblas_cher(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+-                const int N, const float alpha, const void *X, const int incX,
+-                void *A, const int lda);
+-void cblas_chpr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+-                const int N, const float alpha, const void *X,
+-                const int incX, void *A);
+-void cblas_cher2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N,
+-                const void *alpha, const void *X, const int incX,
+-                const void *Y, const int incY, void *A, const int lda);
+-void cblas_chpr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N,
+-                const void *alpha, const void *X, const int incX,
+-                const void *Y, const int incY, void *Ap);
+-
+-void cblas_zhemv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+-                 const int N, const void *alpha, const void *A,
+-                 const int lda, const void *X, const int incX,
+-                 const void *beta, void *Y, const int incY);
+-void cblas_zhbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+-                 const int N, const int K, const void *alpha, const void *A,
+-                 const int lda, const void *X, const int incX,
+-                 const void *beta, void *Y, const int incY);
+-void cblas_zhpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+-                 const int N, const void *alpha, const void *Ap,
+-                 const void *X, const int incX,
+-                 const void *beta, void *Y, const int incY);
+-void cblas_zgeru(const enum CBLAS_ORDER order, const int M, const int N,
+-                 const void *alpha, const void *X, const int incX,
+-                 const void *Y, const int incY, void *A, const int lda);
+-void cblas_zgerc(const enum CBLAS_ORDER order, const int M, const int N,
+-                 const void *alpha, const void *X, const int incX,
+-                 const void *Y, const int incY, void *A, const int lda);
+-void cblas_zher(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+-                const int N, const double alpha, const void *X, const int incX,
+-                void *A, const int lda);
+-void cblas_zhpr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+-                const int N, const double alpha, const void *X,
+-                const int incX, void *A);
+-void cblas_zher2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N,
+-                const void *alpha, const void *X, const int incX,
+-                const void *Y, const int incY, void *A, const int lda);
+-void cblas_zhpr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N,
+-                const void *alpha, const void *X, const int incX,
+-                const void *Y, const int incY, void *Ap);
+-
+-/*
+- * ===========================================================================
+- * Prototypes for level 3 BLAS
+- * ===========================================================================
+- */
+-
+-/* 
+- * Routines with standard 4 prefixes (S, D, C, Z)
+- */
+-void cblas_sgemm(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA,
+-                 const enum CBLAS_TRANSPOSE TransB, const int M, const int N,
+-                 const int K, const float alpha, const float *A,
+-                 const int lda, const float *B, const int ldb,
+-                 const float beta, float *C, const int ldc);
+-void cblas_ssymm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
+-                 const enum CBLAS_UPLO Uplo, const int M, const int N,
+-                 const float alpha, const float *A, const int lda,
+-                 const float *B, const int ldb, const float beta,
+-                 float *C, const int ldc);
+-void cblas_ssyrk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
+-                 const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
+-                 const float alpha, const float *A, const int lda,
+-                 const float beta, float *C, const int ldc);
+-void cblas_ssyr2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
+-                  const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
+-                  const float alpha, const float *A, const int lda,
+-                  const float *B, const int ldb, const float beta,
+-                  float *C, const int ldc);
+-void cblas_strmm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
+-                 const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
+-                 const enum CBLAS_DIAG Diag, const int M, const int N,
+-                 const float alpha, const float *A, const int lda,
+-                 float *B, const int ldb);
+-void cblas_strsm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
+-                 const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
+-                 const enum CBLAS_DIAG Diag, const int M, const int N,
+-                 const float alpha, const float *A, const int lda,
+-                 float *B, const int ldb);
+-
+-void cblas_dgemm(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA,
+-                 const enum CBLAS_TRANSPOSE TransB, const int M, const int N,
+-                 const int K, const double alpha, const double *A,
+-                 const int lda, const double *B, const int ldb,
+-                 const double beta, double *C, const int ldc);
+-void cblas_dsymm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
+-                 const enum CBLAS_UPLO Uplo, const int M, const int N,
+-                 const double alpha, const double *A, const int lda,
+-                 const double *B, const int ldb, const double beta,
+-                 double *C, const int ldc);
+-void cblas_dsyrk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
+-                 const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
+-                 const double alpha, const double *A, const int lda,
+-                 const double beta, double *C, const int ldc);
+-void cblas_dsyr2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
+-                  const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
+-                  const double alpha, const double *A, const int lda,
+-                  const double *B, const int ldb, const double beta,
+-                  double *C, const int ldc);
+-void cblas_dtrmm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
+-                 const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
+-                 const enum CBLAS_DIAG Diag, const int M, const int N,
+-                 const double alpha, const double *A, const int lda,
+-                 double *B, const int ldb);
+-void cblas_dtrsm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
+-                 const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
+-                 const enum CBLAS_DIAG Diag, const int M, const int N,
+-                 const double alpha, const double *A, const int lda,
+-                 double *B, const int ldb);
+-
+-void cblas_cgemm(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA,
+-                 const enum CBLAS_TRANSPOSE TransB, const int M, const int N,
+-                 const int K, const void *alpha, const void *A,
+-                 const int lda, const void *B, const int ldb,
+-                 const void *beta, void *C, const int ldc);
+-void cblas_csymm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
+-                 const enum CBLAS_UPLO Uplo, const int M, const int N,
+-                 const void *alpha, const void *A, const int lda,
+-                 const void *B, const int ldb, const void *beta,
+-                 void *C, const int ldc);
+-void cblas_csyrk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
+-                 const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
+-                 const void *alpha, const void *A, const int lda,
+-                 const void *beta, void *C, const int ldc);
+-void cblas_csyr2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
+-                  const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
+-                  const void *alpha, const void *A, const int lda,
+-                  const void *B, const int ldb, const void *beta,
+-                  void *C, const int ldc);
+-void cblas_ctrmm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
+-                 const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
+-                 const enum CBLAS_DIAG Diag, const int M, const int N,
+-                 const void *alpha, const void *A, const int lda,
+-                 void *B, const int ldb);
+-void cblas_ctrsm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
+-                 const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
+-                 const enum CBLAS_DIAG Diag, const int M, const int N,
+-                 const void *alpha, const void *A, const int lda,
+-                 void *B, const int ldb);
+-
+-void cblas_zgemm(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA,
+-                 const enum CBLAS_TRANSPOSE TransB, const int M, const int N,
+-                 const int K, const void *alpha, const void *A,
+-                 const int lda, const void *B, const int ldb,
+-                 const void *beta, void *C, const int ldc);
+-void cblas_zsymm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
+-                 const enum CBLAS_UPLO Uplo, const int M, const int N,
+-                 const void *alpha, const void *A, const int lda,
+-                 const void *B, const int ldb, const void *beta,
+-                 void *C, const int ldc);
+-void cblas_zsyrk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
+-                 const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
+-                 const void *alpha, const void *A, const int lda,
+-                 const void *beta, void *C, const int ldc);
+-void cblas_zsyr2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
+-                  const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
+-                  const void *alpha, const void *A, const int lda,
+-                  const void *B, const int ldb, const void *beta,
+-                  void *C, const int ldc);
+-void cblas_ztrmm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
+-                 const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
+-                 const enum CBLAS_DIAG Diag, const int M, const int N,
+-                 const void *alpha, const void *A, const int lda,
+-                 void *B, const int ldb);
+-void cblas_ztrsm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
+-                 const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
+-                 const enum CBLAS_DIAG Diag, const int M, const int N,
+-                 const void *alpha, const void *A, const int lda,
+-                 void *B, const int ldb);
+-
+-
+-/* 
+- * Routines with prefixes C and Z only
+- */
+-void cblas_chemm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
+-                 const enum CBLAS_UPLO Uplo, const int M, const int N,
+-                 const void *alpha, const void *A, const int lda,
+-                 const void *B, const int ldb, const void *beta,
+-                 void *C, const int ldc);
+-void cblas_cherk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
+-                 const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
+-                 const float alpha, const void *A, const int lda,
+-                 const float beta, void *C, const int ldc);
+-void cblas_cher2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
+-                  const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
+-                  const void *alpha, const void *A, const int lda,
+-                  const void *B, const int ldb, const float beta,
+-                  void *C, const int ldc);
+-
+-void cblas_zhemm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
+-                 const enum CBLAS_UPLO Uplo, const int M, const int N,
+-                 const void *alpha, const void *A, const int lda,
+-                 const void *B, const int ldb, const void *beta,
+-                 void *C, const int ldc);
+-void cblas_zherk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
+-                 const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
+-                 const double alpha, const void *A, const int lda,
+-                 const double beta, void *C, const int ldc);
+-void cblas_zher2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
+-                  const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
+-                  const void *alpha, const void *A, const int lda,
+-                  const void *B, const int ldb, const double beta,
+-                  void *C, const int ldc);
+-
+-void cblas_xerbla(int p, const char *rout, const char *form, ...);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_CBLAS_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_version.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_version.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_version.h	(revision 14079)
+@@ -1,26 +0,0 @@
+-#ifndef __GSL_VERSION_H__
+-#define __GSL_VERSION_H__
+-
+-#include <gsl/gsl_types.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-__BEGIN_DECLS
+-
+-
+-#define GSL_VERSION "1.15"
+-#define GSL_MAJOR_VERSION 1
+-#define GSL_MINOR_VERSION 15
+-
+-GSL_VAR const char * gsl_version;
+-
+-__END_DECLS
+-
+-#endif /* __GSL_VERSION_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_fft_halfcomplex_float.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_fft_halfcomplex_float.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_fft_halfcomplex_float.h	(revision 14079)
+@@ -1,86 +0,0 @@
+-/* fft/gsl_fft_halfcomplex_float.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_FFT_HALFCOMPLEX_FLOAT_H__
+-#define __GSL_FFT_HALFCOMPLEX_FLOAT_H__
+-
+-#include <stddef.h>
+-
+-#include <gsl/gsl_math.h>
+-#include <gsl/gsl_complex.h>
+-#include <gsl/gsl_fft.h>
+-#include <gsl/gsl_fft_real_float.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-int gsl_fft_halfcomplex_float_radix2_backward (float data[], const size_t stride, const size_t n);
+-int gsl_fft_halfcomplex_float_radix2_inverse (float data[], const size_t stride, const size_t n);
+-int gsl_fft_halfcomplex_float_radix2_transform (float data[], const size_t stride, const size_t n);
+-
+-typedef struct
+-  {
+-    size_t n;
+-    size_t nf;
+-    size_t factor[64];
+-    gsl_complex_float *twiddle[64];
+-    gsl_complex_float *trig;
+-  }
+-gsl_fft_halfcomplex_wavetable_float;
+-
+-
+-gsl_fft_halfcomplex_wavetable_float * gsl_fft_halfcomplex_wavetable_float_alloc (size_t n);
+-
+-void
+-gsl_fft_halfcomplex_wavetable_float_free (gsl_fft_halfcomplex_wavetable_float * wavetable);
+-
+-int gsl_fft_halfcomplex_float_backward (float data[], const size_t stride, const size_t n,
+-                                        const gsl_fft_halfcomplex_wavetable_float * wavetable,
+-                                        gsl_fft_real_workspace_float * work);
+-
+-int gsl_fft_halfcomplex_float_inverse (float data[], const size_t stride, const size_t n,
+-                                       const gsl_fft_halfcomplex_wavetable_float * wavetable,
+-                                       gsl_fft_real_workspace_float * work);
+-
+-int gsl_fft_halfcomplex_float_transform (float data[], const size_t stride, const size_t n,
+-                                         const gsl_fft_halfcomplex_wavetable_float * wavetable,
+-                                         gsl_fft_real_workspace_float * work);
+-
+-int
+-gsl_fft_halfcomplex_float_unpack (const float halfcomplex_coefficient[],
+-                                  float complex_coefficient[],
+-                                  const size_t stride, const size_t n);
+-
+-int
+-gsl_fft_halfcomplex_float_radix2_unpack (const float halfcomplex_coefficient[],
+-                                         float complex_coefficient[],
+-                                         const size_t stride, const size_t n);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_FFT_HALFCOMPLEX_FLOAT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_uint.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_uint.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_uint.h	(revision 14079)
+@@ -1,50 +0,0 @@
+-/* sort/gsl_sort_uint.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_SORT_UINT_H__
+-#define __GSL_SORT_UINT_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_permutation.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-void gsl_sort_uint (unsigned int * data, const size_t stride, const size_t n);
+-void gsl_sort_uint_index (size_t * p, const unsigned int * data, const size_t stride, const size_t n);
+-
+-int gsl_sort_uint_smallest (unsigned int * dest, const size_t k, const unsigned int * src, const size_t stride, const size_t n);
+-int gsl_sort_uint_smallest_index (size_t * p, const size_t k, const unsigned int * src, const size_t stride, const size_t n);
+-
+-int gsl_sort_uint_largest (unsigned int * dest, const size_t k, const unsigned int * src, const size_t stride, const size_t n);
+-int gsl_sort_uint_largest_index (size_t * p, const size_t k, const unsigned int * src, const size_t stride, const size_t n);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_SORT_UINT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_dilog.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_dilog.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_dilog.h	(revision 14079)
+@@ -1,130 +0,0 @@
+-/* specfunc/gsl_sf_dilog.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004 Gerard Jungman
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-/* Author:  G. Jungman */
+-
+-#ifndef __GSL_SF_DILOG_H__
+-#define __GSL_SF_DILOG_H__
+-
+-#include <gsl/gsl_sf_result.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-
+-/* Real part of DiLogarithm(x), for real argument.
+- * In Lewin's notation, this is Li_2(x).
+- *
+- *   Li_2(x) = - Re[ Integrate[ Log[1-s] / s, {s, 0, x}] ]
+- *
+- * The function in the complex plane has a branch point
+- * at z = 1; we place the cut in the conventional way,
+- * on [1, +infty). This means that the value for real x > 1
+- * is a matter of definition; however, this choice does not
+- * affect the real part and so is not relevant to the
+- * interpretation of this implemented function.
+- */
+-int     gsl_sf_dilog_e(const double x, gsl_sf_result * result);
+-double  gsl_sf_dilog(const double x);
+-
+-
+-/* DiLogarithm(z), for complex argument z = x + i y.
+- * Computes the principal branch.
+- *
+- * Recall that the branch cut is on the real axis with x > 1.
+- * The imaginary part of the computed value on the cut is given
+- * by -Pi*log(x), which is the limiting value taken approaching
+- * from y < 0. This is a conventional choice, though there is no
+- * true standardized choice.
+- *
+- * Note that there is no canonical way to lift the defining
+- * contour to the full Riemann surface because of the appearance
+- * of a "hidden branch point" at z = 0 on non-principal sheets.
+- * Experts will know the simple algebraic prescription for
+- * obtaining the sheet they want; non-experts will not want
+- * to know anything about it. This is why GSL chooses to compute
+- * only on the principal branch.
+- */
+-int
+-gsl_sf_complex_dilog_xy_e(
+-  const double x,
+-  const double y,
+-  gsl_sf_result * result_re,
+-  gsl_sf_result * result_im
+-  );
+-
+-
+-
+-/* DiLogarithm(z), for complex argument z = r Exp[i theta].
+- * Computes the principal branch, thereby assuming an
+- * implicit reduction of theta to the range (-2 pi, 2 pi).
+- *
+- * If theta is identically zero, the imaginary part is computed
+- * as if approaching from y > 0. For other values of theta no
+- * special consideration is given, since it is assumed that
+- * no other machine representations of multiples of pi will
+- * produce y = 0 precisely. This assumption depends on some
+- * subtle properties of the machine arithmetic, such as
+- * correct rounding and monotonicity of the underlying
+- * implementation of sin() and cos().
+- *
+- * This function is ok, but the interface is confusing since
+- * it makes it appear that the branch structure is resolved.
+- * Furthermore the handling of values close to the branch
+- * cut is subtle. Perhap this interface should be deprecated.
+- */
+-int
+-gsl_sf_complex_dilog_e(
+-  const double r,
+-  const double theta,
+-  gsl_sf_result * result_re,
+-  gsl_sf_result * result_im
+-  );
+-
+-
+-
+-/* Spence integral; spence(s) := Li_2(1-s)
+- *
+- * This function has a branch point at 0; we place the
+- * cut on (-infty,0). Because of our choice for the value
+- * of Li_2(z) on the cut, spence(s) is continuous as
+- * s approaches the cut from above. In other words,
+- * we define spence(x) = spence(x + i 0+).
+- */
+-int
+-gsl_sf_complex_spence_xy_e(
+-  const double x,
+-  const double y,
+-  gsl_sf_result * real_sp,
+-  gsl_sf_result * imag_sp
+-  );
+-
+-
+-__END_DECLS
+-
+-#endif /* __GSL_SF_DILOG_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_char.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_char.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_char.h	(revision 14079)
+@@ -1,79 +0,0 @@
+-/* statistics/gsl_statistics_char.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_STATISTICS_CHAR_H__
+-#define __GSL_STATISTICS_CHAR_H__
+-
+-#include <stddef.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-double gsl_stats_char_mean (const char data[], const size_t stride, const size_t n);
+-double gsl_stats_char_variance (const char data[], const size_t stride, const size_t n);
+-double gsl_stats_char_sd (const char data[], const size_t stride, const size_t n);
+-double gsl_stats_char_variance_with_fixed_mean (const char data[], const size_t stride, const size_t n, const double mean);
+-double gsl_stats_char_sd_with_fixed_mean (const char data[], const size_t stride, const size_t n, const double mean);
+-double gsl_stats_char_tss (const char data[], const size_t stride, const size_t n);
+-double gsl_stats_char_tss_m (const char data[], const size_t stride, const size_t n, const double mean);
+-
+-double gsl_stats_char_absdev (const char data[], const size_t stride, const size_t n);
+-double gsl_stats_char_skew (const char data[], const size_t stride, const size_t n);
+-double gsl_stats_char_kurtosis (const char data[], const size_t stride, const size_t n);
+-double gsl_stats_char_lag1_autocorrelation (const char data[], const size_t stride, const size_t n);
+-
+-double gsl_stats_char_covariance (const char data1[], const size_t stride1,const char data2[], const size_t stride2, const size_t n);
+-double gsl_stats_char_correlation (const char data1[], const size_t stride1,const char data2[], const size_t stride2, const size_t n);
+-
+-double gsl_stats_char_variance_m (const char data[], const size_t stride, const size_t n, const double mean);
+-double gsl_stats_char_sd_m (const char data[], const size_t stride, const size_t n, const double mean);
+-double gsl_stats_char_absdev_m (const char data[], const size_t stride, const size_t n, const double mean);
+-double gsl_stats_char_skew_m_sd (const char data[], const size_t stride, const size_t n, const double mean, const double sd);
+-double gsl_stats_char_kurtosis_m_sd (const char data[], const size_t stride, const size_t n, const double mean, const double sd);
+-double gsl_stats_char_lag1_autocorrelation_m (const char data[], const size_t stride, const size_t n, const double mean);
+-
+-double gsl_stats_char_covariance_m (const char data1[], const size_t stride1,const char data2[], const size_t stride2, const size_t n, const double mean1, const double mean2);
+-
+-
+-double gsl_stats_char_pvariance (const char data1[], const size_t stride1, const size_t n1, const char data2[], const size_t stride2, const size_t n2);
+-double gsl_stats_char_ttest (const char data1[], const size_t stride1, const size_t n1, const char data2[], const size_t stride2, const size_t n2);
+-
+-char gsl_stats_char_max (const char data[], const size_t stride, const size_t n);
+-char gsl_stats_char_min (const char data[], const size_t stride, const size_t n);
+-void gsl_stats_char_minmax (char * min, char * max, const char data[], const size_t stride, const size_t n);
+-
+-size_t gsl_stats_char_max_index (const char data[], const size_t stride, const size_t n);
+-size_t gsl_stats_char_min_index (const char data[], const size_t stride, const size_t n);
+-void gsl_stats_char_minmax_index (size_t * min_index, size_t * max_index, const char data[], const size_t stride, const size_t n);
+-
+-double gsl_stats_char_median_from_sorted_data (const char sorted_data[], const size_t stride, const size_t n) ;
+-double gsl_stats_char_quantile_from_sorted_data (const char sorted_data[], const size_t stride, const size_t n, const double f) ;
+-
+-__END_DECLS
+-
+-#endif /* __GSL_STATISTICS_CHAR_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_ieee_utils.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_ieee_utils.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_ieee_utils.h	(revision 14079)
+@@ -1,99 +0,0 @@
+-/* ieee-utils/gsl_ieee_utils.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_IEEE_UTILS_H__
+-#define __GSL_IEEE_UTILS_H__
+-#include <stdio.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-enum {
+-  GSL_IEEE_TYPE_NAN = 1,
+-  GSL_IEEE_TYPE_INF = 2,
+-  GSL_IEEE_TYPE_NORMAL = 3,
+-  GSL_IEEE_TYPE_DENORMAL = 4,
+-  GSL_IEEE_TYPE_ZERO = 5
+-} ;
+-
+-typedef struct  {
+-  int sign ;
+-  char mantissa[24] ; /* Actual bits are 0..22, element 23 is \0 */
+-  int exponent ;
+-  int type ;
+-} gsl_ieee_float_rep ;
+-
+-typedef struct  {
+-  int sign ;
+-  char mantissa[53] ; /* Actual bits are 0..51, element 52 is \0 */
+-  int exponent ;
+-  int type ;
+-} gsl_ieee_double_rep ;
+-
+-
+-void gsl_ieee_printf_float (const float * x) ;
+-void gsl_ieee_printf_double (const double * x) ;
+-
+-void gsl_ieee_fprintf_float (FILE * stream, const float * x) ;
+-void gsl_ieee_fprintf_double (FILE * stream, const double * x) ;
+-
+-void gsl_ieee_float_to_rep (const float * x, gsl_ieee_float_rep * r) ;
+-void gsl_ieee_double_to_rep (const double * x, gsl_ieee_double_rep * r) ;
+-
+-enum {
+-  GSL_IEEE_SINGLE_PRECISION = 1,
+-  GSL_IEEE_DOUBLE_PRECISION = 2,
+-  GSL_IEEE_EXTENDED_PRECISION = 3
+-} ;
+-
+-enum {
+-  GSL_IEEE_ROUND_TO_NEAREST = 1,
+-  GSL_IEEE_ROUND_DOWN = 2,
+-  GSL_IEEE_ROUND_UP = 3,
+-  GSL_IEEE_ROUND_TO_ZERO = 4
+-} ;
+-
+-enum {
+-  GSL_IEEE_MASK_INVALID = 1,
+-  GSL_IEEE_MASK_DENORMALIZED = 2,
+-  GSL_IEEE_MASK_DIVISION_BY_ZERO = 4,
+-  GSL_IEEE_MASK_OVERFLOW = 8,
+-  GSL_IEEE_MASK_UNDERFLOW = 16,
+-  GSL_IEEE_MASK_ALL = 31,
+-  GSL_IEEE_TRAP_INEXACT = 32
+-} ;
+-
+-void gsl_ieee_env_setup (void) ;
+-int gsl_ieee_read_mode_string (const char * description, int * precision,
+-                               int * rounding, int * exception_mask) ;
+-int gsl_ieee_set_mode (int precision, int rounding, int exception_mask) ;
+-
+-__END_DECLS
+-
+-#endif /* __GSL_IEEE_UTILS_H__ */
+-
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_float.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_float.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_float.h	(revision 14079)
+@@ -1,230 +0,0 @@
+-/* vector/gsl_vector_float.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_VECTOR_FLOAT_H__
+-#define __GSL_VECTOR_FLOAT_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_types.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_inline.h>
+-#include <gsl/gsl_check_range.h>
+-#include <gsl/gsl_block_float.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-typedef struct 
+-{
+-  size_t size;
+-  size_t stride;
+-  float *data;
+-  gsl_block_float *block;
+-  int owner;
+-} 
+-gsl_vector_float;
+-
+-typedef struct
+-{
+-  gsl_vector_float vector;
+-} _gsl_vector_float_view;
+-
+-typedef _gsl_vector_float_view gsl_vector_float_view;
+-
+-typedef struct
+-{
+-  gsl_vector_float vector;
+-} _gsl_vector_float_const_view;
+-
+-typedef const _gsl_vector_float_const_view gsl_vector_float_const_view;
+-
+-
+-/* Allocation */
+-
+-gsl_vector_float *gsl_vector_float_alloc (const size_t n);
+-gsl_vector_float *gsl_vector_float_calloc (const size_t n);
+-
+-gsl_vector_float *gsl_vector_float_alloc_from_block (gsl_block_float * b,
+-                                                     const size_t offset, 
+-                                                     const size_t n, 
+-                                                     const size_t stride);
+-
+-gsl_vector_float *gsl_vector_float_alloc_from_vector (gsl_vector_float * v,
+-                                                      const size_t offset, 
+-                                                      const size_t n, 
+-                                                      const size_t stride);
+-
+-void gsl_vector_float_free (gsl_vector_float * v);
+-
+-/* Views */
+-
+-_gsl_vector_float_view 
+-gsl_vector_float_view_array (float *v, size_t n);
+-
+-_gsl_vector_float_view 
+-gsl_vector_float_view_array_with_stride (float *base,
+-                                         size_t stride,
+-                                         size_t n);
+-
+-_gsl_vector_float_const_view 
+-gsl_vector_float_const_view_array (const float *v, size_t n);
+-
+-_gsl_vector_float_const_view 
+-gsl_vector_float_const_view_array_with_stride (const float *base,
+-                                               size_t stride,
+-                                               size_t n);
+-
+-_gsl_vector_float_view 
+-gsl_vector_float_subvector (gsl_vector_float *v, 
+-                            size_t i, 
+-                            size_t n);
+-
+-_gsl_vector_float_view 
+-gsl_vector_float_subvector_with_stride (gsl_vector_float *v, 
+-                                        size_t i,
+-                                        size_t stride,
+-                                        size_t n);
+-
+-_gsl_vector_float_const_view 
+-gsl_vector_float_const_subvector (const gsl_vector_float *v, 
+-                                  size_t i, 
+-                                  size_t n);
+-
+-_gsl_vector_float_const_view 
+-gsl_vector_float_const_subvector_with_stride (const gsl_vector_float *v, 
+-                                              size_t i, 
+-                                              size_t stride,
+-                                              size_t n);
+-
+-/* Operations */
+-
+-void gsl_vector_float_set_zero (gsl_vector_float * v);
+-void gsl_vector_float_set_all (gsl_vector_float * v, float x);
+-int gsl_vector_float_set_basis (gsl_vector_float * v, size_t i);
+-
+-int gsl_vector_float_fread (FILE * stream, gsl_vector_float * v);
+-int gsl_vector_float_fwrite (FILE * stream, const gsl_vector_float * v);
+-int gsl_vector_float_fscanf (FILE * stream, gsl_vector_float * v);
+-int gsl_vector_float_fprintf (FILE * stream, const gsl_vector_float * v,
+-                              const char *format);
+-
+-int gsl_vector_float_memcpy (gsl_vector_float * dest, const gsl_vector_float * src);
+-
+-int gsl_vector_float_reverse (gsl_vector_float * v);
+-
+-int gsl_vector_float_swap (gsl_vector_float * v, gsl_vector_float * w);
+-int gsl_vector_float_swap_elements (gsl_vector_float * v, const size_t i, const size_t j);
+-
+-float gsl_vector_float_max (const gsl_vector_float * v);
+-float gsl_vector_float_min (const gsl_vector_float * v);
+-void gsl_vector_float_minmax (const gsl_vector_float * v, float * min_out, float * max_out);
+-
+-size_t gsl_vector_float_max_index (const gsl_vector_float * v);
+-size_t gsl_vector_float_min_index (const gsl_vector_float * v);
+-void gsl_vector_float_minmax_index (const gsl_vector_float * v, size_t * imin, size_t * imax);
+-
+-int gsl_vector_float_add (gsl_vector_float * a, const gsl_vector_float * b);
+-int gsl_vector_float_sub (gsl_vector_float * a, const gsl_vector_float * b);
+-int gsl_vector_float_mul (gsl_vector_float * a, const gsl_vector_float * b);
+-int gsl_vector_float_div (gsl_vector_float * a, const gsl_vector_float * b);
+-int gsl_vector_float_scale (gsl_vector_float * a, const double x);
+-int gsl_vector_float_add_constant (gsl_vector_float * a, const double x);
+-
+-int gsl_vector_float_equal (const gsl_vector_float * u, 
+-                            const gsl_vector_float * v);
+-
+-int gsl_vector_float_isnull (const gsl_vector_float * v);
+-int gsl_vector_float_ispos (const gsl_vector_float * v);
+-int gsl_vector_float_isneg (const gsl_vector_float * v);
+-int gsl_vector_float_isnonneg (const gsl_vector_float * v);
+-
+-INLINE_DECL float gsl_vector_float_get (const gsl_vector_float * v, const size_t i);
+-INLINE_DECL void gsl_vector_float_set (gsl_vector_float * v, const size_t i, float x);
+-INLINE_DECL float * gsl_vector_float_ptr (gsl_vector_float * v, const size_t i);
+-INLINE_DECL const float * gsl_vector_float_const_ptr (const gsl_vector_float * v, const size_t i);
+-
+-#ifdef HAVE_INLINE
+-
+-INLINE_FUN
+-float
+-gsl_vector_float_get (const gsl_vector_float * v, const size_t i)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(i >= v->size))
+-    {
+-      GSL_ERROR_VAL ("index out of range", GSL_EINVAL, 0);
+-    }
+-#endif
+-  return v->data[i * v->stride];
+-}
+-
+-INLINE_FUN
+-void
+-gsl_vector_float_set (gsl_vector_float * v, const size_t i, float x)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(i >= v->size))
+-    {
+-      GSL_ERROR_VOID ("index out of range", GSL_EINVAL);
+-    }
+-#endif
+-  v->data[i * v->stride] = x;
+-}
+-
+-INLINE_FUN
+-float *
+-gsl_vector_float_ptr (gsl_vector_float * v, const size_t i)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(i >= v->size))
+-    {
+-      GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
+-    }
+-#endif
+-  return (float *) (v->data + i * v->stride);
+-}
+-
+-INLINE_FUN
+-const float *
+-gsl_vector_float_const_ptr (const gsl_vector_float * v, const size_t i)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(i >= v->size))
+-    {
+-      GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
+-    }
+-#endif
+-  return (const float *) (v->data + i * v->stride);
+-}
+-#endif /* HAVE_INLINE */
+-
+-__END_DECLS
+-
+-#endif /* __GSL_VECTOR_FLOAT_H__ */
+-
+-
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_uint.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_uint.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_uint.h	(revision 14079)
+@@ -1,65 +0,0 @@
+-/* block/gsl_block_uint.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_BLOCK_UINT_H__
+-#define __GSL_BLOCK_UINT_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-struct gsl_block_uint_struct
+-{
+-  size_t size;
+-  unsigned int *data;
+-};
+-
+-typedef struct gsl_block_uint_struct gsl_block_uint;
+-
+-gsl_block_uint *gsl_block_uint_alloc (const size_t n);
+-gsl_block_uint *gsl_block_uint_calloc (const size_t n);
+-void gsl_block_uint_free (gsl_block_uint * b);
+-
+-int gsl_block_uint_fread (FILE * stream, gsl_block_uint * b);
+-int gsl_block_uint_fwrite (FILE * stream, const gsl_block_uint * b);
+-int gsl_block_uint_fscanf (FILE * stream, gsl_block_uint * b);
+-int gsl_block_uint_fprintf (FILE * stream, const gsl_block_uint * b, const char *format);
+-
+-int gsl_block_uint_raw_fread (FILE * stream, unsigned int * b, const size_t n, const size_t stride);
+-int gsl_block_uint_raw_fwrite (FILE * stream, const unsigned int * b, const size_t n, const size_t stride);
+-int gsl_block_uint_raw_fscanf (FILE * stream, unsigned int * b, const size_t n, const size_t stride);
+-int gsl_block_uint_raw_fprintf (FILE * stream, const unsigned int * b, const size_t n, const size_t stride, const char *format);
+-
+-size_t gsl_block_uint_size (const gsl_block_uint * b);
+-unsigned int * gsl_block_uint_data (const gsl_block_uint * b);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_BLOCK_UINT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics.h	(revision 14079)
+@@ -1,20 +0,0 @@
+-#ifndef __GSL_STATISTICS_H__
+-#define __GSL_STATISTICS_H__
+-
+-#include <gsl/gsl_statistics_long_double.h>
+-#include <gsl/gsl_statistics_double.h>
+-#include <gsl/gsl_statistics_float.h>
+-
+-#include <gsl/gsl_statistics_ulong.h>
+-#include <gsl/gsl_statistics_long.h>
+-
+-#include <gsl/gsl_statistics_uint.h>
+-#include <gsl/gsl_statistics_int.h>
+-
+-#include <gsl/gsl_statistics_ushort.h>
+-#include <gsl/gsl_statistics_short.h>
+-
+-#include <gsl/gsl_statistics_uchar.h>
+-#include <gsl/gsl_statistics_char.h>
+-
+-#endif /* __GSL_STATISTICS_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_fft_complex_float.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_fft_complex_float.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_fft_complex_float.h	(revision 14079)
+@@ -1,139 +0,0 @@
+-/* fft/gsl_fft_complex_float.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_FFT_COMPLEX_FLOAT_H__
+-#define __GSL_FFT_COMPLEX_FLOAT_H__
+-
+-#include <stddef.h>
+-
+-#include <gsl/gsl_math.h>
+-#include <gsl/gsl_complex.h>
+-#include <gsl/gsl_fft.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-/*  Power of 2 routines  */
+-
+-
+-int gsl_fft_complex_float_radix2_forward (gsl_complex_packed_array_float data,
+-                                          const size_t stride,
+-                                          const size_t n);
+-
+-int gsl_fft_complex_float_radix2_backward (gsl_complex_packed_array_float data,
+-                                           const size_t stride,
+-                                           const size_t n);
+-
+-int gsl_fft_complex_float_radix2_inverse (gsl_complex_packed_array_float data,
+-                                          const size_t stride,
+-                                          const size_t n);
+-
+-int gsl_fft_complex_float_radix2_transform (gsl_complex_packed_array_float data,
+-                                            const size_t stride,
+-                                            const size_t n,
+-                                            const gsl_fft_direction sign);
+-
+-int gsl_fft_complex_float_radix2_dif_forward (gsl_complex_packed_array_float data,
+-                                              const size_t stride,
+-                                              const size_t n);
+-
+-int gsl_fft_complex_float_radix2_dif_backward (gsl_complex_packed_array_float data,
+-                                               const size_t stride,
+-                                               const size_t n);
+-
+-int gsl_fft_complex_float_radix2_dif_inverse (gsl_complex_packed_array_float data,
+-                                              const size_t stride,
+-                                              const size_t n);
+-
+-int gsl_fft_complex_float_radix2_dif_transform (gsl_complex_packed_array_float data,
+-                                                const size_t stride,
+-                                                const size_t n,
+-                                                const gsl_fft_direction sign);
+-
+-/*  Mixed Radix general-N routines  */
+-
+-typedef struct
+-  {
+-    size_t n;
+-    size_t nf;
+-    size_t factor[64];
+-    gsl_complex_float *twiddle[64];
+-    gsl_complex_float *trig;
+-  }
+-gsl_fft_complex_wavetable_float;
+-
+-typedef struct
+-{
+-    size_t n;
+-    float *scratch;
+-}
+-gsl_fft_complex_workspace_float;
+-
+-
+-gsl_fft_complex_wavetable_float *gsl_fft_complex_wavetable_float_alloc (size_t n);
+-
+-void gsl_fft_complex_wavetable_float_free (gsl_fft_complex_wavetable_float * wavetable);
+-
+-gsl_fft_complex_workspace_float *gsl_fft_complex_workspace_float_alloc (size_t n);
+-
+-void gsl_fft_complex_workspace_float_free (gsl_fft_complex_workspace_float * workspace);
+-
+-
+-int gsl_fft_complex_float_memcpy (gsl_fft_complex_wavetable_float * dest,
+-                               gsl_fft_complex_wavetable_float * src);
+-
+-
+-int gsl_fft_complex_float_forward (gsl_complex_packed_array_float data,
+-                                   const size_t stride,
+-                                   const size_t n,
+-                                   const gsl_fft_complex_wavetable_float * wavetable,
+-                                   gsl_fft_complex_workspace_float * work);
+-
+-int gsl_fft_complex_float_backward (gsl_complex_packed_array_float data,
+-                                    const size_t stride,
+-                                    const size_t n,
+-                                    const gsl_fft_complex_wavetable_float * wavetable,
+-                                    gsl_fft_complex_workspace_float * work);
+-
+-int gsl_fft_complex_float_inverse (gsl_complex_packed_array_float data,
+-                                   const size_t stride,
+-                                   const size_t n,
+-                                   const gsl_fft_complex_wavetable_float * wavetable,
+-                                   gsl_fft_complex_workspace_float * work);
+-
+-int gsl_fft_complex_float_transform (gsl_complex_packed_array_float data,
+-                                     const size_t stride, const size_t n,
+-                                     const gsl_fft_complex_wavetable_float * wavetable,
+-                                     gsl_fft_complex_workspace_float * work,
+-                                     const gsl_fft_direction sign);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_FFT_COMPLEX_FLOAT_H__ */
+-
+-
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_fermi_dirac.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_fermi_dirac.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sf_fermi_dirac.h	(revision 14079)
+@@ -1,126 +0,0 @@
+-/* specfunc/gsl_sf_fermi_dirac.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-/* Author:  G. Jungman */
+-
+-#ifndef __GSL_SF_FERMI_DIRAC_H__
+-#define __GSL_SF_FERMI_DIRAC_H__
+-
+-#include <gsl/gsl_sf_result.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-
+-/* Complete Fermi-Dirac Integrals:
+- *
+- *  F_j(x)   := 1/Gamma[j+1] Integral[ t^j /(Exp[t-x] + 1), {t,0,Infinity}]
+- *
+- *
+- * Incomplete Fermi-Dirac Integrals:
+- *
+- *  F_j(x,b) := 1/Gamma[j+1] Integral[ t^j /(Exp[t-x] + 1), {t,b,Infinity}]
+- */
+-
+-
+-/* Complete integral F_{-1}(x) = e^x / (1 + e^x)
+- *
+- * exceptions: GSL_EUNDRFLW
+- */
+-int     gsl_sf_fermi_dirac_m1_e(const double x, gsl_sf_result * result);
+-double     gsl_sf_fermi_dirac_m1(const double x);
+-
+-
+-/* Complete integral F_0(x) = ln(1 + e^x)
+- *
+- * exceptions: GSL_EUNDRFLW
+- */
+-int     gsl_sf_fermi_dirac_0_e(const double x, gsl_sf_result * result);
+-double     gsl_sf_fermi_dirac_0(const double x);
+-
+-
+-/* Complete integral F_1(x)
+- *
+- * exceptions: GSL_EUNDRFLW, GSL_EOVRFLW
+- */
+-int     gsl_sf_fermi_dirac_1_e(const double x, gsl_sf_result * result);
+-double     gsl_sf_fermi_dirac_1(const double x);
+-
+-
+-/* Complete integral F_2(x)
+- *
+- * exceptions: GSL_EUNDRFLW, GSL_EOVRFLW
+- */
+-int     gsl_sf_fermi_dirac_2_e(const double x, gsl_sf_result * result);
+-double     gsl_sf_fermi_dirac_2(const double x);
+-
+-
+-/* Complete integral F_j(x)
+- * for integer j
+- *
+- * exceptions: GSL_EUNDRFLW, GSL_EOVRFLW
+- */
+-int     gsl_sf_fermi_dirac_int_e(const int j, const double x, gsl_sf_result * result);
+-double     gsl_sf_fermi_dirac_int(const int j, const double x);
+-
+-
+-/* Complete integral F_{-1/2}(x)
+- *
+- * exceptions: GSL_EUNDRFLW, GSL_EOVRFLW
+- */
+-int     gsl_sf_fermi_dirac_mhalf_e(const double x, gsl_sf_result * result);
+-double     gsl_sf_fermi_dirac_mhalf(const double x);
+-
+-
+-/* Complete integral F_{1/2}(x)
+- *
+- * exceptions: GSL_EUNDRFLW, GSL_EOVRFLW
+- */
+-int     gsl_sf_fermi_dirac_half_e(const double x, gsl_sf_result * result);
+-double     gsl_sf_fermi_dirac_half(const double x);
+-
+-
+-/* Complete integral F_{3/2}(x)
+- *
+- * exceptions: GSL_EUNDRFLW, GSL_EOVRFLW
+- */
+-int     gsl_sf_fermi_dirac_3half_e(const double x, gsl_sf_result * result);
+-double     gsl_sf_fermi_dirac_3half(const double x);
+-
+-
+-/* Incomplete integral F_0(x,b) = ln(1 + e^(b-x)) - (b-x)
+- *
+- * exceptions: GSL_EUNDRFLW, GSL_EDOM
+- */
+-int     gsl_sf_fermi_dirac_inc_0_e(const double x, const double b, gsl_sf_result * result);
+-double     gsl_sf_fermi_dirac_inc_0(const double x, const double b);
+-
+-
+-__END_DECLS
+-
+-#endif /* __GSL_SF_FERMI_DIRAC_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_double.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_double.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_double.h	(revision 14079)
+@@ -1,230 +0,0 @@
+-/* vector/gsl_vector_double.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_VECTOR_DOUBLE_H__
+-#define __GSL_VECTOR_DOUBLE_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_types.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_inline.h>
+-#include <gsl/gsl_check_range.h>
+-#include <gsl/gsl_block_double.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-typedef struct 
+-{
+-  size_t size;
+-  size_t stride;
+-  double *data;
+-  gsl_block *block;
+-  int owner;
+-} 
+-gsl_vector;
+-
+-typedef struct
+-{
+-  gsl_vector vector;
+-} _gsl_vector_view;
+-
+-typedef _gsl_vector_view gsl_vector_view;
+-
+-typedef struct
+-{
+-  gsl_vector vector;
+-} _gsl_vector_const_view;
+-
+-typedef const _gsl_vector_const_view gsl_vector_const_view;
+-
+-
+-/* Allocation */
+-
+-gsl_vector *gsl_vector_alloc (const size_t n);
+-gsl_vector *gsl_vector_calloc (const size_t n);
+-
+-gsl_vector *gsl_vector_alloc_from_block (gsl_block * b,
+-                                                     const size_t offset, 
+-                                                     const size_t n, 
+-                                                     const size_t stride);
+-
+-gsl_vector *gsl_vector_alloc_from_vector (gsl_vector * v,
+-                                                      const size_t offset, 
+-                                                      const size_t n, 
+-                                                      const size_t stride);
+-
+-void gsl_vector_free (gsl_vector * v);
+-
+-/* Views */
+-
+-_gsl_vector_view 
+-gsl_vector_view_array (double *v, size_t n);
+-
+-_gsl_vector_view 
+-gsl_vector_view_array_with_stride (double *base,
+-                                         size_t stride,
+-                                         size_t n);
+-
+-_gsl_vector_const_view 
+-gsl_vector_const_view_array (const double *v, size_t n);
+-
+-_gsl_vector_const_view 
+-gsl_vector_const_view_array_with_stride (const double *base,
+-                                               size_t stride,
+-                                               size_t n);
+-
+-_gsl_vector_view 
+-gsl_vector_subvector (gsl_vector *v, 
+-                            size_t i, 
+-                            size_t n);
+-
+-_gsl_vector_view 
+-gsl_vector_subvector_with_stride (gsl_vector *v, 
+-                                        size_t i,
+-                                        size_t stride,
+-                                        size_t n);
+-
+-_gsl_vector_const_view 
+-gsl_vector_const_subvector (const gsl_vector *v, 
+-                                  size_t i, 
+-                                  size_t n);
+-
+-_gsl_vector_const_view 
+-gsl_vector_const_subvector_with_stride (const gsl_vector *v, 
+-                                              size_t i, 
+-                                              size_t stride,
+-                                              size_t n);
+-
+-/* Operations */
+-
+-void gsl_vector_set_zero (gsl_vector * v);
+-void gsl_vector_set_all (gsl_vector * v, double x);
+-int gsl_vector_set_basis (gsl_vector * v, size_t i);
+-
+-int gsl_vector_fread (FILE * stream, gsl_vector * v);
+-int gsl_vector_fwrite (FILE * stream, const gsl_vector * v);
+-int gsl_vector_fscanf (FILE * stream, gsl_vector * v);
+-int gsl_vector_fprintf (FILE * stream, const gsl_vector * v,
+-                              const char *format);
+-
+-int gsl_vector_memcpy (gsl_vector * dest, const gsl_vector * src);
+-
+-int gsl_vector_reverse (gsl_vector * v);
+-
+-int gsl_vector_swap (gsl_vector * v, gsl_vector * w);
+-int gsl_vector_swap_elements (gsl_vector * v, const size_t i, const size_t j);
+-
+-double gsl_vector_max (const gsl_vector * v);
+-double gsl_vector_min (const gsl_vector * v);
+-void gsl_vector_minmax (const gsl_vector * v, double * min_out, double * max_out);
+-
+-size_t gsl_vector_max_index (const gsl_vector * v);
+-size_t gsl_vector_min_index (const gsl_vector * v);
+-void gsl_vector_minmax_index (const gsl_vector * v, size_t * imin, size_t * imax);
+-
+-int gsl_vector_add (gsl_vector * a, const gsl_vector * b);
+-int gsl_vector_sub (gsl_vector * a, const gsl_vector * b);
+-int gsl_vector_mul (gsl_vector * a, const gsl_vector * b);
+-int gsl_vector_div (gsl_vector * a, const gsl_vector * b);
+-int gsl_vector_scale (gsl_vector * a, const double x);
+-int gsl_vector_add_constant (gsl_vector * a, const double x);
+-
+-int gsl_vector_equal (const gsl_vector * u, 
+-                            const gsl_vector * v);
+-
+-int gsl_vector_isnull (const gsl_vector * v);
+-int gsl_vector_ispos (const gsl_vector * v);
+-int gsl_vector_isneg (const gsl_vector * v);
+-int gsl_vector_isnonneg (const gsl_vector * v);
+-
+-INLINE_DECL double gsl_vector_get (const gsl_vector * v, const size_t i);
+-INLINE_DECL void gsl_vector_set (gsl_vector * v, const size_t i, double x);
+-INLINE_DECL double * gsl_vector_ptr (gsl_vector * v, const size_t i);
+-INLINE_DECL const double * gsl_vector_const_ptr (const gsl_vector * v, const size_t i);
+-
+-#ifdef HAVE_INLINE
+-
+-INLINE_FUN
+-double
+-gsl_vector_get (const gsl_vector * v, const size_t i)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(i >= v->size))
+-    {
+-      GSL_ERROR_VAL ("index out of range", GSL_EINVAL, 0);
+-    }
+-#endif
+-  return v->data[i * v->stride];
+-}
+-
+-INLINE_FUN
+-void
+-gsl_vector_set (gsl_vector * v, const size_t i, double x)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(i >= v->size))
+-    {
+-      GSL_ERROR_VOID ("index out of range", GSL_EINVAL);
+-    }
+-#endif
+-  v->data[i * v->stride] = x;
+-}
+-
+-INLINE_FUN
+-double *
+-gsl_vector_ptr (gsl_vector * v, const size_t i)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(i >= v->size))
+-    {
+-      GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
+-    }
+-#endif
+-  return (double *) (v->data + i * v->stride);
+-}
+-
+-INLINE_FUN
+-const double *
+-gsl_vector_const_ptr (const gsl_vector * v, const size_t i)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(i >= v->size))
+-    {
+-      GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
+-    }
+-#endif
+-  return (const double *) (v->data + i * v->stride);
+-}
+-#endif /* HAVE_INLINE */
+-
+-__END_DECLS
+-
+-#endif /* __GSL_VECTOR_DOUBLE_H__ */
+-
+-
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_long_double.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_long_double.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_long_double.h	(revision 14079)
+@@ -1,50 +0,0 @@
+-/* sort/gsl_sort_long_double.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_SORT_LONG_DOUBLE_H__
+-#define __GSL_SORT_LONG_DOUBLE_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_permutation.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-void gsl_sort_long_double (long double * data, const size_t stride, const size_t n);
+-void gsl_sort_long_double_index (size_t * p, const long double * data, const size_t stride, const size_t n);
+-
+-int gsl_sort_long_double_smallest (long double * dest, const size_t k, const long double * src, const size_t stride, const size_t n);
+-int gsl_sort_long_double_smallest_index (size_t * p, const size_t k, const long double * src, const size_t stride, const size_t n);
+-
+-int gsl_sort_long_double_largest (long double * dest, const size_t k, const long double * src, const size_t stride, const size_t n);
+-int gsl_sort_long_double_largest_index (size_t * p, const size_t k, const long double * src, const size_t stride, const size_t n);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_SORT_LONG_DOUBLE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_const_mksa.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_const_mksa.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_const_mksa.h	(revision 14079)
+@@ -1,126 +0,0 @@
+-/* const/gsl_const_mksa.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+- * 2006, 2007, 2008, 2009 Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_CONST_MKSA__
+-#define __GSL_CONST_MKSA__
+-
+-#define GSL_CONST_MKSA_SPEED_OF_LIGHT (2.99792458e8) /* m / s */
+-#define GSL_CONST_MKSA_GRAVITATIONAL_CONSTANT (6.673e-11) /* m^3 / kg s^2 */
+-#define GSL_CONST_MKSA_PLANCKS_CONSTANT_H (6.62606896e-34) /* kg m^2 / s */
+-#define GSL_CONST_MKSA_PLANCKS_CONSTANT_HBAR (1.05457162825e-34) /* kg m^2 / s */
+-#define GSL_CONST_MKSA_ASTRONOMICAL_UNIT (1.49597870691e11) /* m */
+-#define GSL_CONST_MKSA_LIGHT_YEAR (9.46053620707e15) /* m */
+-#define GSL_CONST_MKSA_PARSEC (3.08567758135e16) /* m */
+-#define GSL_CONST_MKSA_GRAV_ACCEL (9.80665e0) /* m / s^2 */
+-#define GSL_CONST_MKSA_ELECTRON_VOLT (1.602176487e-19) /* kg m^2 / s^2 */
+-#define GSL_CONST_MKSA_MASS_ELECTRON (9.10938188e-31) /* kg */
+-#define GSL_CONST_MKSA_MASS_MUON (1.88353109e-28) /* kg */
+-#define GSL_CONST_MKSA_MASS_PROTON (1.67262158e-27) /* kg */
+-#define GSL_CONST_MKSA_MASS_NEUTRON (1.67492716e-27) /* kg */
+-#define GSL_CONST_MKSA_RYDBERG (2.17987196968e-18) /* kg m^2 / s^2 */
+-#define GSL_CONST_MKSA_BOLTZMANN (1.3806504e-23) /* kg m^2 / K s^2 */
+-#define GSL_CONST_MKSA_MOLAR_GAS (8.314472e0) /* kg m^2 / K mol s^2 */
+-#define GSL_CONST_MKSA_STANDARD_GAS_VOLUME (2.2710981e-2) /* m^3 / mol */
+-#define GSL_CONST_MKSA_MINUTE (6e1) /* s */
+-#define GSL_CONST_MKSA_HOUR (3.6e3) /* s */
+-#define GSL_CONST_MKSA_DAY (8.64e4) /* s */
+-#define GSL_CONST_MKSA_WEEK (6.048e5) /* s */
+-#define GSL_CONST_MKSA_INCH (2.54e-2) /* m */
+-#define GSL_CONST_MKSA_FOOT (3.048e-1) /* m */
+-#define GSL_CONST_MKSA_YARD (9.144e-1) /* m */
+-#define GSL_CONST_MKSA_MILE (1.609344e3) /* m */
+-#define GSL_CONST_MKSA_NAUTICAL_MILE (1.852e3) /* m */
+-#define GSL_CONST_MKSA_FATHOM (1.8288e0) /* m */
+-#define GSL_CONST_MKSA_MIL (2.54e-5) /* m */
+-#define GSL_CONST_MKSA_POINT (3.52777777778e-4) /* m */
+-#define GSL_CONST_MKSA_TEXPOINT (3.51459803515e-4) /* m */
+-#define GSL_CONST_MKSA_MICRON (1e-6) /* m */
+-#define GSL_CONST_MKSA_ANGSTROM (1e-10) /* m */
+-#define GSL_CONST_MKSA_HECTARE (1e4) /* m^2 */
+-#define GSL_CONST_MKSA_ACRE (4.04685642241e3) /* m^2 */
+-#define GSL_CONST_MKSA_BARN (1e-28) /* m^2 */
+-#define GSL_CONST_MKSA_LITER (1e-3) /* m^3 */
+-#define GSL_CONST_MKSA_US_GALLON (3.78541178402e-3) /* m^3 */
+-#define GSL_CONST_MKSA_QUART (9.46352946004e-4) /* m^3 */
+-#define GSL_CONST_MKSA_PINT (4.73176473002e-4) /* m^3 */
+-#define GSL_CONST_MKSA_CUP (2.36588236501e-4) /* m^3 */
+-#define GSL_CONST_MKSA_FLUID_OUNCE (2.95735295626e-5) /* m^3 */
+-#define GSL_CONST_MKSA_TABLESPOON (1.47867647813e-5) /* m^3 */
+-#define GSL_CONST_MKSA_TEASPOON (4.92892159375e-6) /* m^3 */
+-#define GSL_CONST_MKSA_CANADIAN_GALLON (4.54609e-3) /* m^3 */
+-#define GSL_CONST_MKSA_UK_GALLON (4.546092e-3) /* m^3 */
+-#define GSL_CONST_MKSA_MILES_PER_HOUR (4.4704e-1) /* m / s */
+-#define GSL_CONST_MKSA_KILOMETERS_PER_HOUR (2.77777777778e-1) /* m / s */
+-#define GSL_CONST_MKSA_KNOT (5.14444444444e-1) /* m / s */
+-#define GSL_CONST_MKSA_POUND_MASS (4.5359237e-1) /* kg */
+-#define GSL_CONST_MKSA_OUNCE_MASS (2.8349523125e-2) /* kg */
+-#define GSL_CONST_MKSA_TON (9.0718474e2) /* kg */
+-#define GSL_CONST_MKSA_METRIC_TON (1e3) /* kg */
+-#define GSL_CONST_MKSA_UK_TON (1.0160469088e3) /* kg */
+-#define GSL_CONST_MKSA_TROY_OUNCE (3.1103475e-2) /* kg */
+-#define GSL_CONST_MKSA_CARAT (2e-4) /* kg */
+-#define GSL_CONST_MKSA_UNIFIED_ATOMIC_MASS (1.660538782e-27) /* kg */
+-#define GSL_CONST_MKSA_GRAM_FORCE (9.80665e-3) /* kg m / s^2 */
+-#define GSL_CONST_MKSA_POUND_FORCE (4.44822161526e0) /* kg m / s^2 */
+-#define GSL_CONST_MKSA_KILOPOUND_FORCE (4.44822161526e3) /* kg m / s^2 */
+-#define GSL_CONST_MKSA_POUNDAL (1.38255e-1) /* kg m / s^2 */
+-#define GSL_CONST_MKSA_CALORIE (4.1868e0) /* kg m^2 / s^2 */
+-#define GSL_CONST_MKSA_BTU (1.05505585262e3) /* kg m^2 / s^2 */
+-#define GSL_CONST_MKSA_THERM (1.05506e8) /* kg m^2 / s^2 */
+-#define GSL_CONST_MKSA_HORSEPOWER (7.457e2) /* kg m^2 / s^3 */
+-#define GSL_CONST_MKSA_BAR (1e5) /* kg / m s^2 */
+-#define GSL_CONST_MKSA_STD_ATMOSPHERE (1.01325e5) /* kg / m s^2 */
+-#define GSL_CONST_MKSA_TORR (1.33322368421e2) /* kg / m s^2 */
+-#define GSL_CONST_MKSA_METER_OF_MERCURY (1.33322368421e5) /* kg / m s^2 */
+-#define GSL_CONST_MKSA_INCH_OF_MERCURY (3.38638815789e3) /* kg / m s^2 */
+-#define GSL_CONST_MKSA_INCH_OF_WATER (2.490889e2) /* kg / m s^2 */
+-#define GSL_CONST_MKSA_PSI (6.89475729317e3) /* kg / m s^2 */
+-#define GSL_CONST_MKSA_POISE (1e-1) /* kg m^-1 s^-1 */
+-#define GSL_CONST_MKSA_STOKES (1e-4) /* m^2 / s */
+-#define GSL_CONST_MKSA_STILB (1e4) /* cd / m^2 */
+-#define GSL_CONST_MKSA_LUMEN (1e0) /* cd sr */
+-#define GSL_CONST_MKSA_LUX (1e0) /* cd sr / m^2 */
+-#define GSL_CONST_MKSA_PHOT (1e4) /* cd sr / m^2 */
+-#define GSL_CONST_MKSA_FOOTCANDLE (1.076e1) /* cd sr / m^2 */
+-#define GSL_CONST_MKSA_LAMBERT (1e4) /* cd sr / m^2 */
+-#define GSL_CONST_MKSA_FOOTLAMBERT (1.07639104e1) /* cd sr / m^2 */
+-#define GSL_CONST_MKSA_CURIE (3.7e10) /* 1 / s */
+-#define GSL_CONST_MKSA_ROENTGEN (2.58e-4) /* A s / kg */
+-#define GSL_CONST_MKSA_RAD (1e-2) /* m^2 / s^2 */
+-#define GSL_CONST_MKSA_SOLAR_MASS (1.98892e30) /* kg */
+-#define GSL_CONST_MKSA_BOHR_RADIUS (5.291772083e-11) /* m */
+-#define GSL_CONST_MKSA_NEWTON (1e0) /* kg m / s^2 */
+-#define GSL_CONST_MKSA_DYNE (1e-5) /* kg m / s^2 */
+-#define GSL_CONST_MKSA_JOULE (1e0) /* kg m^2 / s^2 */
+-#define GSL_CONST_MKSA_ERG (1e-7) /* kg m^2 / s^2 */
+-#define GSL_CONST_MKSA_STEFAN_BOLTZMANN_CONSTANT (5.67040047374e-8) /* kg / K^4 s^3 */
+-#define GSL_CONST_MKSA_THOMSON_CROSS_SECTION (6.65245893699e-29) /* m^2 */
+-#define GSL_CONST_MKSA_BOHR_MAGNETON (9.27400899e-24) /* A m^2 */
+-#define GSL_CONST_MKSA_NUCLEAR_MAGNETON (5.05078317e-27) /* A m^2 */
+-#define GSL_CONST_MKSA_ELECTRON_MAGNETIC_MOMENT (9.28476362e-24) /* A m^2 */
+-#define GSL_CONST_MKSA_PROTON_MAGNETIC_MOMENT (1.410606633e-26) /* A m^2 */
+-#define GSL_CONST_MKSA_FARADAY (9.64853429775e4) /* A s / mol */
+-#define GSL_CONST_MKSA_ELECTRON_CHARGE (1.602176487e-19) /* A s */
+-#define GSL_CONST_MKSA_VACUUM_PERMITTIVITY (8.854187817e-12) /* A^2 s^4 / kg m^3 */
+-#define GSL_CONST_MKSA_VACUUM_PERMEABILITY (1.25663706144e-6) /* kg m / A^2 s^2 */
+-#define GSL_CONST_MKSA_DEBYE (3.33564095198e-30) /* A s^2 / m^2 */
+-#define GSL_CONST_MKSA_GAUSS (1e-4) /* kg / A s^2 */
+-
+-#endif /* __GSL_CONST_MKSA__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_uint.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_uint.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_uint.h	(revision 14079)
+@@ -1,350 +0,0 @@
+-/* matrix/gsl_matrix_uint.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_MATRIX_UINT_H__
+-#define __GSL_MATRIX_UINT_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_types.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_inline.h>
+-#include <gsl/gsl_check_range.h>
+-#include <gsl/gsl_vector_uint.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-typedef struct 
+-{
+-  size_t size1;
+-  size_t size2;
+-  size_t tda;
+-  unsigned int * data;
+-  gsl_block_uint * block;
+-  int owner;
+-} gsl_matrix_uint;
+-
+-typedef struct
+-{
+-  gsl_matrix_uint matrix;
+-} _gsl_matrix_uint_view;
+-
+-typedef _gsl_matrix_uint_view gsl_matrix_uint_view;
+-
+-typedef struct
+-{
+-  gsl_matrix_uint matrix;
+-} _gsl_matrix_uint_const_view;
+-
+-typedef const _gsl_matrix_uint_const_view gsl_matrix_uint_const_view;
+-
+-/* Allocation */
+-
+-gsl_matrix_uint * 
+-gsl_matrix_uint_alloc (const size_t n1, const size_t n2);
+-
+-gsl_matrix_uint * 
+-gsl_matrix_uint_calloc (const size_t n1, const size_t n2);
+-
+-gsl_matrix_uint * 
+-gsl_matrix_uint_alloc_from_block (gsl_block_uint * b, 
+-                                   const size_t offset, 
+-                                   const size_t n1, 
+-                                   const size_t n2, 
+-                                   const size_t d2);
+-
+-gsl_matrix_uint * 
+-gsl_matrix_uint_alloc_from_matrix (gsl_matrix_uint * m,
+-                                    const size_t k1, 
+-                                    const size_t k2,
+-                                    const size_t n1, 
+-                                    const size_t n2);
+-
+-gsl_vector_uint * 
+-gsl_vector_uint_alloc_row_from_matrix (gsl_matrix_uint * m,
+-                                        const size_t i);
+-
+-gsl_vector_uint * 
+-gsl_vector_uint_alloc_col_from_matrix (gsl_matrix_uint * m,
+-                                        const size_t j);
+-
+-void gsl_matrix_uint_free (gsl_matrix_uint * m);
+-
+-/* Views */
+-
+-_gsl_matrix_uint_view 
+-gsl_matrix_uint_submatrix (gsl_matrix_uint * m, 
+-                            const size_t i, const size_t j, 
+-                            const size_t n1, const size_t n2);
+-
+-_gsl_vector_uint_view 
+-gsl_matrix_uint_row (gsl_matrix_uint * m, const size_t i);
+-
+-_gsl_vector_uint_view 
+-gsl_matrix_uint_column (gsl_matrix_uint * m, const size_t j);
+-
+-_gsl_vector_uint_view 
+-gsl_matrix_uint_diagonal (gsl_matrix_uint * m);
+-
+-_gsl_vector_uint_view 
+-gsl_matrix_uint_subdiagonal (gsl_matrix_uint * m, const size_t k);
+-
+-_gsl_vector_uint_view 
+-gsl_matrix_uint_superdiagonal (gsl_matrix_uint * m, const size_t k);
+-
+-_gsl_vector_uint_view
+-gsl_matrix_uint_subrow (gsl_matrix_uint * m, const size_t i,
+-                         const size_t offset, const size_t n);
+-
+-_gsl_vector_uint_view
+-gsl_matrix_uint_subcolumn (gsl_matrix_uint * m, const size_t j,
+-                            const size_t offset, const size_t n);
+-
+-_gsl_matrix_uint_view
+-gsl_matrix_uint_view_array (unsigned int * base,
+-                             const size_t n1, 
+-                             const size_t n2);
+-
+-_gsl_matrix_uint_view
+-gsl_matrix_uint_view_array_with_tda (unsigned int * base, 
+-                                      const size_t n1, 
+-                                      const size_t n2,
+-                                      const size_t tda);
+-
+-
+-_gsl_matrix_uint_view
+-gsl_matrix_uint_view_vector (gsl_vector_uint * v,
+-                              const size_t n1, 
+-                              const size_t n2);
+-
+-_gsl_matrix_uint_view
+-gsl_matrix_uint_view_vector_with_tda (gsl_vector_uint * v,
+-                                       const size_t n1, 
+-                                       const size_t n2,
+-                                       const size_t tda);
+-
+-
+-_gsl_matrix_uint_const_view 
+-gsl_matrix_uint_const_submatrix (const gsl_matrix_uint * m, 
+-                                  const size_t i, const size_t j, 
+-                                  const size_t n1, const size_t n2);
+-
+-_gsl_vector_uint_const_view 
+-gsl_matrix_uint_const_row (const gsl_matrix_uint * m, 
+-                            const size_t i);
+-
+-_gsl_vector_uint_const_view 
+-gsl_matrix_uint_const_column (const gsl_matrix_uint * m, 
+-                               const size_t j);
+-
+-_gsl_vector_uint_const_view
+-gsl_matrix_uint_const_diagonal (const gsl_matrix_uint * m);
+-
+-_gsl_vector_uint_const_view 
+-gsl_matrix_uint_const_subdiagonal (const gsl_matrix_uint * m, 
+-                                    const size_t k);
+-
+-_gsl_vector_uint_const_view 
+-gsl_matrix_uint_const_superdiagonal (const gsl_matrix_uint * m, 
+-                                      const size_t k);
+-
+-_gsl_vector_uint_const_view
+-gsl_matrix_uint_const_subrow (const gsl_matrix_uint * m, const size_t i,
+-                               const size_t offset, const size_t n);
+-
+-_gsl_vector_uint_const_view
+-gsl_matrix_uint_const_subcolumn (const gsl_matrix_uint * m, const size_t j,
+-                                  const size_t offset, const size_t n);
+-
+-_gsl_matrix_uint_const_view
+-gsl_matrix_uint_const_view_array (const unsigned int * base,
+-                                   const size_t n1, 
+-                                   const size_t n2);
+-
+-_gsl_matrix_uint_const_view
+-gsl_matrix_uint_const_view_array_with_tda (const unsigned int * base, 
+-                                            const size_t n1, 
+-                                            const size_t n2,
+-                                            const size_t tda);
+-
+-_gsl_matrix_uint_const_view
+-gsl_matrix_uint_const_view_vector (const gsl_vector_uint * v,
+-                                    const size_t n1, 
+-                                    const size_t n2);
+-
+-_gsl_matrix_uint_const_view
+-gsl_matrix_uint_const_view_vector_with_tda (const gsl_vector_uint * v,
+-                                             const size_t n1, 
+-                                             const size_t n2,
+-                                             const size_t tda);
+-
+-/* Operations */
+-
+-void gsl_matrix_uint_set_zero (gsl_matrix_uint * m);
+-void gsl_matrix_uint_set_identity (gsl_matrix_uint * m);
+-void gsl_matrix_uint_set_all (gsl_matrix_uint * m, unsigned int x);
+-
+-int gsl_matrix_uint_fread (FILE * stream, gsl_matrix_uint * m) ;
+-int gsl_matrix_uint_fwrite (FILE * stream, const gsl_matrix_uint * m) ;
+-int gsl_matrix_uint_fscanf (FILE * stream, gsl_matrix_uint * m);
+-int gsl_matrix_uint_fprintf (FILE * stream, const gsl_matrix_uint * m, const char * format);
+- 
+-int gsl_matrix_uint_memcpy(gsl_matrix_uint * dest, const gsl_matrix_uint * src);
+-int gsl_matrix_uint_swap(gsl_matrix_uint * m1, gsl_matrix_uint * m2);
+-
+-int gsl_matrix_uint_swap_rows(gsl_matrix_uint * m, const size_t i, const size_t j);
+-int gsl_matrix_uint_swap_columns(gsl_matrix_uint * m, const size_t i, const size_t j);
+-int gsl_matrix_uint_swap_rowcol(gsl_matrix_uint * m, const size_t i, const size_t j);
+-int gsl_matrix_uint_transpose (gsl_matrix_uint * m);
+-int gsl_matrix_uint_transpose_memcpy (gsl_matrix_uint * dest, const gsl_matrix_uint * src);
+-
+-unsigned int gsl_matrix_uint_max (const gsl_matrix_uint * m);
+-unsigned int gsl_matrix_uint_min (const gsl_matrix_uint * m);
+-void gsl_matrix_uint_minmax (const gsl_matrix_uint * m, unsigned int * min_out, unsigned int * max_out);
+-
+-void gsl_matrix_uint_max_index (const gsl_matrix_uint * m, size_t * imax, size_t *jmax);
+-void gsl_matrix_uint_min_index (const gsl_matrix_uint * m, size_t * imin, size_t *jmin);
+-void gsl_matrix_uint_minmax_index (const gsl_matrix_uint * m, size_t * imin, size_t * jmin, size_t * imax, size_t * jmax);
+-
+-int gsl_matrix_uint_equal (const gsl_matrix_uint * a, const gsl_matrix_uint * b);
+-
+-int gsl_matrix_uint_isnull (const gsl_matrix_uint * m);
+-int gsl_matrix_uint_ispos (const gsl_matrix_uint * m);
+-int gsl_matrix_uint_isneg (const gsl_matrix_uint * m);
+-int gsl_matrix_uint_isnonneg (const gsl_matrix_uint * m);
+-
+-int gsl_matrix_uint_add (gsl_matrix_uint * a, const gsl_matrix_uint * b);
+-int gsl_matrix_uint_sub (gsl_matrix_uint * a, const gsl_matrix_uint * b);
+-int gsl_matrix_uint_mul_elements (gsl_matrix_uint * a, const gsl_matrix_uint * b);
+-int gsl_matrix_uint_div_elements (gsl_matrix_uint * a, const gsl_matrix_uint * b);
+-int gsl_matrix_uint_scale (gsl_matrix_uint * a, const double x);
+-int gsl_matrix_uint_add_constant (gsl_matrix_uint * a, const double x);
+-int gsl_matrix_uint_add_diagonal (gsl_matrix_uint * a, const double x);
+-
+-/***********************************************************************/
+-/* The functions below are obsolete                                    */
+-/***********************************************************************/
+-int gsl_matrix_uint_get_row(gsl_vector_uint * v, const gsl_matrix_uint * m, const size_t i);
+-int gsl_matrix_uint_get_col(gsl_vector_uint * v, const gsl_matrix_uint * m, const size_t j);
+-int gsl_matrix_uint_set_row(gsl_matrix_uint * m, const size_t i, const gsl_vector_uint * v);
+-int gsl_matrix_uint_set_col(gsl_matrix_uint * m, const size_t j, const gsl_vector_uint * v);
+-/***********************************************************************/
+-
+-/* inline functions if you are using GCC */
+-
+-INLINE_DECL unsigned int   gsl_matrix_uint_get(const gsl_matrix_uint * m, const size_t i, const size_t j);
+-INLINE_DECL void    gsl_matrix_uint_set(gsl_matrix_uint * m, const size_t i, const size_t j, const unsigned int x);
+-INLINE_DECL unsigned int * gsl_matrix_uint_ptr(gsl_matrix_uint * m, const size_t i, const size_t j);
+-INLINE_DECL const unsigned int * gsl_matrix_uint_const_ptr(const gsl_matrix_uint * m, const size_t i, const size_t j);
+-
+-#ifdef HAVE_INLINE
+-INLINE_FUN 
+-unsigned int
+-gsl_matrix_uint_get(const gsl_matrix_uint * m, const size_t i, const size_t j)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(1)) 
+-    {
+-      if (i >= m->size1)
+-        {
+-          GSL_ERROR_VAL("first index out of range", GSL_EINVAL, 0) ;
+-        }
+-      else if (j >= m->size2)
+-        {
+-          GSL_ERROR_VAL("second index out of range", GSL_EINVAL, 0) ;
+-        }
+-    }
+-#endif
+-  return m->data[i * m->tda + j] ;
+-} 
+-
+-INLINE_FUN 
+-void
+-gsl_matrix_uint_set(gsl_matrix_uint * m, const size_t i, const size_t j, const unsigned int x)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(1)) 
+-    {
+-      if (i >= m->size1)
+-        {
+-          GSL_ERROR_VOID("first index out of range", GSL_EINVAL) ;
+-        }
+-      else if (j >= m->size2)
+-        {
+-          GSL_ERROR_VOID("second index out of range", GSL_EINVAL) ;
+-        }
+-    }
+-#endif
+-  m->data[i * m->tda + j] = x ;
+-}
+-
+-INLINE_FUN 
+-unsigned int *
+-gsl_matrix_uint_ptr(gsl_matrix_uint * m, const size_t i, const size_t j)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(1)) 
+-    {
+-      if (i >= m->size1)
+-        {
+-          GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
+-        }
+-      else if (j >= m->size2)
+-        {
+-          GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
+-        }
+-    }
+-#endif
+-  return (unsigned int *) (m->data + (i * m->tda + j)) ;
+-} 
+-
+-INLINE_FUN 
+-const unsigned int *
+-gsl_matrix_uint_const_ptr(const gsl_matrix_uint * m, const size_t i, const size_t j)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(1)) 
+-    {
+-      if (i >= m->size1)
+-        {
+-          GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
+-        }
+-      else if (j >= m->size2)
+-        {
+-          GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
+-        }
+-    }
+-#endif
+-  return (const unsigned int *) (m->data + (i * m->tda + j)) ;
+-} 
+-
+-#endif
+-
+-__END_DECLS
+-
+-#endif /* __GSL_MATRIX_UINT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_randist.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_randist.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_randist.h	(revision 14079)
+@@ -1,185 +0,0 @@
+-/* randist/gsl_randist.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 James Theiler, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_RANDIST_H__
+-#define __GSL_RANDIST_H__
+-#include <gsl/gsl_rng.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-unsigned int gsl_ran_bernoulli (const gsl_rng * r, double p);
+-double gsl_ran_bernoulli_pdf (const unsigned int k, double p);
+-
+-double gsl_ran_beta (const gsl_rng * r, const double a, const double b);
+-double gsl_ran_beta_pdf (const double x, const double a, const double b);
+-
+-unsigned int gsl_ran_binomial (const gsl_rng * r, double p, unsigned int n);
+-unsigned int gsl_ran_binomial_knuth (const gsl_rng * r, double p, unsigned int n);
+-unsigned int gsl_ran_binomial_tpe (const gsl_rng * r, double p, unsigned int n);
+-double gsl_ran_binomial_pdf (const unsigned int k, const double p, const unsigned int n);
+-
+-double gsl_ran_exponential (const gsl_rng * r, const double mu);
+-double gsl_ran_exponential_pdf (const double x, const double mu);
+-
+-double gsl_ran_exppow (const gsl_rng * r, const double a, const double b);
+-double gsl_ran_exppow_pdf (const double x, const double a, const double b);
+-
+-double gsl_ran_cauchy (const gsl_rng * r, const double a);
+-double gsl_ran_cauchy_pdf (const double x, const double a);
+-
+-double gsl_ran_chisq (const gsl_rng * r, const double nu);
+-double gsl_ran_chisq_pdf (const double x, const double nu);
+-
+-void gsl_ran_dirichlet (const gsl_rng * r, const size_t K, const double alpha[], double theta[]);
+-double gsl_ran_dirichlet_pdf (const size_t K, const double alpha[], const double theta[]);
+-double gsl_ran_dirichlet_lnpdf (const size_t K, const double alpha[], const double theta[]);
+-
+-double gsl_ran_erlang (const gsl_rng * r, const double a, const double n);
+-double gsl_ran_erlang_pdf (const double x, const double a, const double n);
+-
+-double gsl_ran_fdist (const gsl_rng * r, const double nu1, const double nu2);
+-double gsl_ran_fdist_pdf (const double x, const double nu1, const double nu2);
+-
+-double gsl_ran_flat (const gsl_rng * r, const double a, const double b);
+-double gsl_ran_flat_pdf (double x, const double a, const double b);
+-
+-double gsl_ran_gamma (const gsl_rng * r, const double a, const double b);
+-double gsl_ran_gamma_int (const gsl_rng * r, const unsigned int a);
+-double gsl_ran_gamma_pdf (const double x, const double a, const double b);
+-double gsl_ran_gamma_mt (const gsl_rng * r, const double a, const double b);
+-double gsl_ran_gamma_knuth (const gsl_rng * r, const double a, const double b);
+-
+-double gsl_ran_gaussian (const gsl_rng * r, const double sigma);
+-double gsl_ran_gaussian_ratio_method (const gsl_rng * r, const double sigma);
+-double gsl_ran_gaussian_ziggurat (const gsl_rng * r, const double sigma);
+-double gsl_ran_gaussian_pdf (const double x, const double sigma);
+-
+-double gsl_ran_ugaussian (const gsl_rng * r);
+-double gsl_ran_ugaussian_ratio_method (const gsl_rng * r);
+-double gsl_ran_ugaussian_pdf (const double x);
+-
+-double gsl_ran_gaussian_tail (const gsl_rng * r, const double a, const double sigma);
+-double gsl_ran_gaussian_tail_pdf (const double x, const double a, const double sigma);
+-
+-double gsl_ran_ugaussian_tail (const gsl_rng * r, const double a);
+-double gsl_ran_ugaussian_tail_pdf (const double x, const double a);
+-
+-void gsl_ran_bivariate_gaussian (const gsl_rng * r, double sigma_x, double sigma_y, double rho, double *x, double *y);
+-double gsl_ran_bivariate_gaussian_pdf (const double x, const double y, const double sigma_x, const double sigma_y, const double rho);
+-
+-double gsl_ran_landau (const gsl_rng * r);
+-double gsl_ran_landau_pdf (const double x);
+-
+-unsigned int gsl_ran_geometric (const gsl_rng * r, const double p);
+-double gsl_ran_geometric_pdf (const unsigned int k, const double p);
+-
+-unsigned int gsl_ran_hypergeometric (const gsl_rng * r, unsigned int n1, unsigned int n2, unsigned int t);
+-double gsl_ran_hypergeometric_pdf (const unsigned int k, const unsigned int n1, const unsigned int n2, unsigned int t);
+-
+-double gsl_ran_gumbel1 (const gsl_rng * r, const double a, const double b);
+-double gsl_ran_gumbel1_pdf (const double x, const double a, const double b);
+-
+-double gsl_ran_gumbel2 (const gsl_rng * r, const double a, const double b);
+-double gsl_ran_gumbel2_pdf (const double x, const double a, const double b);
+-
+-double gsl_ran_logistic (const gsl_rng * r, const double a);
+-double gsl_ran_logistic_pdf (const double x, const double a);
+-
+-double gsl_ran_lognormal (const gsl_rng * r, const double zeta, const double sigma);
+-double gsl_ran_lognormal_pdf (const double x, const double zeta, const double sigma);
+-
+-unsigned int gsl_ran_logarithmic (const gsl_rng * r, const double p);
+-double gsl_ran_logarithmic_pdf (const unsigned int k, const double p);
+-
+-void gsl_ran_multinomial (const gsl_rng * r, const size_t K,
+-                          const unsigned int N, const double p[],
+-                          unsigned int n[] );
+-double gsl_ran_multinomial_pdf (const size_t K,
+-                                const double p[], const unsigned int n[] );
+-double gsl_ran_multinomial_lnpdf (const size_t K,
+-                           const double p[], const unsigned int n[] );
+-
+-
+-unsigned int gsl_ran_negative_binomial (const gsl_rng * r, double p, double n);
+-double gsl_ran_negative_binomial_pdf (const unsigned int k, const double p, double n);
+-
+-unsigned int gsl_ran_pascal (const gsl_rng * r, double p, unsigned int n);
+-double gsl_ran_pascal_pdf (const unsigned int k, const double p, unsigned int n);
+-
+-double gsl_ran_pareto (const gsl_rng * r, double a, const double b);
+-double gsl_ran_pareto_pdf (const double x, const double a, const double b);
+-
+-unsigned int gsl_ran_poisson (const gsl_rng * r, double mu);
+-void gsl_ran_poisson_array (const gsl_rng * r, size_t n, unsigned int array[],
+-                            double mu);
+-double gsl_ran_poisson_pdf (const unsigned int k, const double mu);
+-
+-double gsl_ran_rayleigh (const gsl_rng * r, const double sigma);
+-double gsl_ran_rayleigh_pdf (const double x, const double sigma);
+-
+-double gsl_ran_rayleigh_tail (const gsl_rng * r, const double a, const double sigma);
+-double gsl_ran_rayleigh_tail_pdf (const double x, const double a, const double sigma);
+-
+-double gsl_ran_tdist (const gsl_rng * r, const double nu);
+-double gsl_ran_tdist_pdf (const double x, const double nu);
+-
+-double gsl_ran_laplace (const gsl_rng * r, const double a);
+-double gsl_ran_laplace_pdf (const double x, const double a);
+-
+-double gsl_ran_levy (const gsl_rng * r, const double c, const double alpha);
+-double gsl_ran_levy_skew (const gsl_rng * r, const double c, const double alpha, const double beta);
+-
+-double gsl_ran_weibull (const gsl_rng * r, const double a, const double b);
+-double gsl_ran_weibull_pdf (const double x, const double a, const double b);
+-
+-void gsl_ran_dir_2d (const gsl_rng * r, double * x, double * y);
+-void gsl_ran_dir_2d_trig_method (const gsl_rng * r, double * x, double * y);
+-void gsl_ran_dir_3d (const gsl_rng * r, double * x, double * y, double * z);
+-void gsl_ran_dir_nd (const gsl_rng * r, size_t n, double * x);
+-
+-void gsl_ran_shuffle (const gsl_rng * r, void * base, size_t nmembm, size_t size);
+-int gsl_ran_choose (const gsl_rng * r, void * dest, size_t k, void * src, size_t n, size_t size) ;
+-void gsl_ran_sample (const gsl_rng * r, void * dest, size_t k, void * src, size_t n, size_t size) ;
+-
+-
+-typedef struct {                /* struct for Walker algorithm */
+-    size_t K;
+-    size_t *A;
+-    double *F;
+-} gsl_ran_discrete_t;
+-
+-gsl_ran_discrete_t * gsl_ran_discrete_preproc (size_t K, const double *P);
+-void gsl_ran_discrete_free(gsl_ran_discrete_t *g);
+-size_t gsl_ran_discrete (const gsl_rng *r, const gsl_ran_discrete_t *g);
+-double gsl_ran_discrete_pdf (size_t k, const gsl_ran_discrete_t *g);
+-
+-
+-__END_DECLS
+-
+-#endif /* __GSL_RANDIST_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sum.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sum.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sum.h	(revision 14079)
+@@ -1,162 +0,0 @@
+-/* sum/gsl_sum.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-/* Author:  G. Jungman */
+-
+-
+-#ifndef __GSL_SUM_H__
+-#define __GSL_SUM_H__
+-
+-#include <stdlib.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS          /* empty */
+-# define __END_DECLS            /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-/*  Workspace for Levin U Transform with error estimation,
+- *   
+- *   size        = number of terms the workspace can handle
+- *   sum_plain   = simple sum of series
+- *   q_num       = backward diagonal of numerator; length = size
+- *   q_den       = backward diagonal of denominator; length = size
+- *   dq_num      = table of numerator derivatives; length = size**2
+- *   dq_den      = table of denominator derivatives; length = size**2
+- *   dsum        = derivative of sum wrt term i; length = size
+- */
+-
+-typedef struct
+-{
+-  size_t size;
+-  size_t i;                     /* position in array */
+-  size_t terms_used;            /* number of calls */
+-  double sum_plain;
+-  double *q_num;
+-  double *q_den;
+-  double *dq_num;
+-  double *dq_den;
+-  double *dsum;
+-}
+-gsl_sum_levin_u_workspace;
+-
+-gsl_sum_levin_u_workspace *gsl_sum_levin_u_alloc (size_t n);
+-void gsl_sum_levin_u_free (gsl_sum_levin_u_workspace * w);
+-
+-/* Basic Levin-u acceleration method.
+- *
+- *   array       = array of series elements
+- *   n           = size of array
+- *   sum_accel   = result of summation acceleration
+- *   err         = estimated error   
+- *
+- * See [Fessler et al., ACM TOMS 9, 346 (1983) and TOMS-602]
+- */
+-
+-int gsl_sum_levin_u_accel (const double *array,
+-                           const size_t n,
+-                           gsl_sum_levin_u_workspace * w,
+-                           double *sum_accel, double *abserr);
+-
+-/* Basic Levin-u acceleration method with constraints on the terms
+- * used,
+- *
+- *   array       = array of series elements
+- *   n           = size of array
+- *   min_terms   = minimum number of terms to sum
+- *   max_terms   = maximum number of terms to sum
+- *   sum_accel   = result of summation acceleration
+- *   err         = estimated error   
+- *
+- * See [Fessler et al., ACM TOMS 9, 346 (1983) and TOMS-602] 
+- */
+-
+-int gsl_sum_levin_u_minmax (const double *array,
+-                            const size_t n,
+-                            const size_t min_terms,
+-                            const size_t max_terms,
+-                            gsl_sum_levin_u_workspace * w,
+-                            double *sum_accel, double *abserr);
+-
+-/* Basic Levin-u step w/o reference to the array of terms.
+- * We only need to specify the value of the current term
+- * to execute the step. See TOMS-745.
+- *
+- * sum = t0 + ... + t_{n-1} + term;  term = t_{n}
+- *
+- *   term   = value of the series term to be added
+- *   n      = position of term in series (starting from 0)
+- *   sum_accel = result of summation acceleration
+- *   sum_plain = simple sum of series
+- */
+-
+-int
+-gsl_sum_levin_u_step (const double term,
+-                      const size_t n,
+-                      const size_t nmax,
+-                      gsl_sum_levin_u_workspace * w, 
+-                      double *sum_accel);
+-
+-/* The following functions perform the same calculation without
+-   estimating the errors. They require O(N) storage instead of O(N^2).
+-   This may be useful for summing many similar series where the size
+-   of the error has already been estimated reliably and is not
+-   expected to change.  */
+-
+-typedef struct
+-{
+-  size_t size;
+-  size_t i;                     /* position in array */
+-  size_t terms_used;            /* number of calls */
+-  double sum_plain;
+-  double *q_num;
+-  double *q_den;
+-  double *dsum;
+-}
+-gsl_sum_levin_utrunc_workspace;
+-
+-gsl_sum_levin_utrunc_workspace *gsl_sum_levin_utrunc_alloc (size_t n);
+-void gsl_sum_levin_utrunc_free (gsl_sum_levin_utrunc_workspace * w);
+-
+-int gsl_sum_levin_utrunc_accel (const double *array,
+-                                const size_t n,
+-                                gsl_sum_levin_utrunc_workspace * w,
+-                                double *sum_accel, double *abserr_trunc);
+-
+-int gsl_sum_levin_utrunc_minmax (const double *array,
+-                                 const size_t n,
+-                                 const size_t min_terms,
+-                                 const size_t max_terms,
+-                                 gsl_sum_levin_utrunc_workspace * w,
+-                                 double *sum_accel, double *abserr_trunc);
+-
+-int gsl_sum_levin_utrunc_step (const double term,
+-                               const size_t n,
+-                               gsl_sum_levin_utrunc_workspace * w, 
+-                               double *sum_accel);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_SUM_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_long.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_long.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sort_long.h	(revision 14079)
+@@ -1,50 +0,0 @@
+-/* sort/gsl_sort_long.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_SORT_LONG_H__
+-#define __GSL_SORT_LONG_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_permutation.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-void gsl_sort_long (long * data, const size_t stride, const size_t n);
+-void gsl_sort_long_index (size_t * p, const long * data, const size_t stride, const size_t n);
+-
+-int gsl_sort_long_smallest (long * dest, const size_t k, const long * src, const size_t stride, const size_t n);
+-int gsl_sort_long_smallest_index (size_t * p, const size_t k, const long * src, const size_t stride, const size_t n);
+-
+-int gsl_sort_long_largest (long * dest, const size_t k, const long * src, const size_t stride, const size_t n);
+-int gsl_sort_long_largest_index (size_t * p, const size_t k, const long * src, const size_t stride, const size_t n);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_SORT_LONG_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_qrng.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_qrng.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_qrng.h	(revision 14079)
+@@ -1,111 +0,0 @@
+-/* Author: G. Jungman + modifications from O. Teytaud
+- */
+-#ifndef __GSL_QRNG_H__
+-#define __GSL_QRNG_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_types.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_inline.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-
+-/* Once again, more inane C-style OOP... kill me now. */
+-
+-/* Structure describing a type of generator.
+- */
+-typedef struct
+-{
+-  const char * name;
+-  unsigned int max_dimension;
+-  size_t (*state_size) (unsigned int dimension);
+-  int (*init_state) (void * state, unsigned int dimension);
+-  int (*get) (void * state, unsigned int dimension, double x[]);
+-}
+-gsl_qrng_type;
+-
+-/* Structure describing a generator instance of a
+- * specified type, with generator-specific state info
+- * and dimension-specific info.
+- */
+-typedef struct
+-{
+-  const gsl_qrng_type * type;
+-  unsigned int dimension;
+-  size_t state_size;
+-  void * state;
+-}
+-gsl_qrng;
+-
+-
+-/* Supported generator types.
+- */
+-GSL_VAR const gsl_qrng_type * gsl_qrng_niederreiter_2;
+-GSL_VAR const gsl_qrng_type * gsl_qrng_sobol;
+-GSL_VAR const gsl_qrng_type * gsl_qrng_halton;
+-GSL_VAR const gsl_qrng_type * gsl_qrng_reversehalton;
+-
+-
+-/* Allocate and initialize a generator
+- * of the specified type, in the given
+- * space dimension.
+- */
+-gsl_qrng * gsl_qrng_alloc (const gsl_qrng_type * T, unsigned int dimension);
+-
+-
+-/* Copy a generator. */
+-int gsl_qrng_memcpy (gsl_qrng * dest, const gsl_qrng * src);
+-
+-
+-/* Clone a generator. */
+-gsl_qrng * gsl_qrng_clone (const gsl_qrng * q);
+-
+-
+-/* Free a generator. */
+-void gsl_qrng_free (gsl_qrng * q);
+-
+-
+-/* Intialize a generator. */
+-void gsl_qrng_init (gsl_qrng * q);
+-
+-
+-/* Get the standardized name of the generator. */
+-const char * gsl_qrng_name (const gsl_qrng * q);
+-
+-
+-/* ISN'T THIS CONFUSING FOR PEOPLE?
+-  WHAT IF SOMEBODY TRIES TO COPY WITH THIS ???
+-  */
+-size_t gsl_qrng_size (const gsl_qrng * q);
+-
+-
+-void * gsl_qrng_state (const gsl_qrng * q);
+-
+-
+-/* Retrieve next vector in sequence. */
+-INLINE_DECL int gsl_qrng_get (const gsl_qrng * q, double x[]);
+-
+-#ifdef HAVE_INLINE
+-INLINE_FUN int gsl_qrng_get (const gsl_qrng * q, double x[])
+-{
+-  return (q->type->get) (q->state, q->dimension, x);
+-}
+-
+-#endif /* HAVE_INLINE */
+-
+-
+-__END_DECLS
+-
+-
+-#endif /* !__GSL_QRNG_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_ulong.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_ulong.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_permute_vector_ulong.h	(revision 14079)
+@@ -1,45 +0,0 @@
+-/* permutation/gsl_permute_vector_ulong.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_PERMUTE_VECTOR_ULONG_H__
+-#define __GSL_PERMUTE_VECTOR_ULONG_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_permutation.h>
+-#include <gsl/gsl_vector_ulong.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-int gsl_permute_vector_ulong (const gsl_permutation * p, gsl_vector_ulong * v);
+-int gsl_permute_vector_ulong_inverse (const gsl_permutation * p, gsl_vector_ulong * v);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_PERMUTE_VECTOR_ULONG_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_diff.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_diff.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_diff.h	(revision 14079)
+@@ -1,52 +0,0 @@
+-/* diff/gsl_diff.h
+- * 
+- * Copyright (C) 2000 David Morrison
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_DIFF_H__
+-#define __GSL_DIFF_H__
+-#include <gsl/gsl_math.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-#ifndef GSL_DISABLE_DEPRECATED
+-int gsl_diff_central (const gsl_function *f,
+-                      double x,
+-                      double *result, double *abserr);
+-
+-int gsl_diff_backward (const gsl_function *f,
+-                       double x,
+-                       double *result, double *abserr);
+-
+-int gsl_diff_forward (const gsl_function *f,
+-                      double x,
+-                      double *result, double *abserr);
+-#endif
+-
+-__END_DECLS
+-
+-#endif /* __GSL_DIFF_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_long.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_long.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_block_long.h	(revision 14079)
+@@ -1,65 +0,0 @@
+-/* block/gsl_block_long.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_BLOCK_LONG_H__
+-#define __GSL_BLOCK_LONG_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_errno.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-struct gsl_block_long_struct
+-{
+-  size_t size;
+-  long *data;
+-};
+-
+-typedef struct gsl_block_long_struct gsl_block_long;
+-
+-gsl_block_long *gsl_block_long_alloc (const size_t n);
+-gsl_block_long *gsl_block_long_calloc (const size_t n);
+-void gsl_block_long_free (gsl_block_long * b);
+-
+-int gsl_block_long_fread (FILE * stream, gsl_block_long * b);
+-int gsl_block_long_fwrite (FILE * stream, const gsl_block_long * b);
+-int gsl_block_long_fscanf (FILE * stream, gsl_block_long * b);
+-int gsl_block_long_fprintf (FILE * stream, const gsl_block_long * b, const char *format);
+-
+-int gsl_block_long_raw_fread (FILE * stream, long * b, const size_t n, const size_t stride);
+-int gsl_block_long_raw_fwrite (FILE * stream, const long * b, const size_t n, const size_t stride);
+-int gsl_block_long_raw_fscanf (FILE * stream, long * b, const size_t n, const size_t stride);
+-int gsl_block_long_raw_fprintf (FILE * stream, const long * b, const size_t n, const size_t stride, const char *format);
+-
+-size_t gsl_block_long_size (const gsl_block_long * b);
+-long * gsl_block_long_data (const gsl_block_long * b);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_BLOCK_LONG_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_uchar.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_uchar.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_statistics_uchar.h	(revision 14079)
+@@ -1,79 +0,0 @@
+-/* statistics/gsl_statistics_uchar.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_STATISTICS_UCHAR_H__
+-#define __GSL_STATISTICS_UCHAR_H__
+-
+-#include <stddef.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-double gsl_stats_uchar_mean (const unsigned char data[], const size_t stride, const size_t n);
+-double gsl_stats_uchar_variance (const unsigned char data[], const size_t stride, const size_t n);
+-double gsl_stats_uchar_sd (const unsigned char data[], const size_t stride, const size_t n);
+-double gsl_stats_uchar_variance_with_fixed_mean (const unsigned char data[], const size_t stride, const size_t n, const double mean);
+-double gsl_stats_uchar_sd_with_fixed_mean (const unsigned char data[], const size_t stride, const size_t n, const double mean);
+-double gsl_stats_uchar_tss (const unsigned char data[], const size_t stride, const size_t n);
+-double gsl_stats_uchar_tss_m (const unsigned char data[], const size_t stride, const size_t n, const double mean);
+-
+-double gsl_stats_uchar_absdev (const unsigned char data[], const size_t stride, const size_t n);
+-double gsl_stats_uchar_skew (const unsigned char data[], const size_t stride, const size_t n);
+-double gsl_stats_uchar_kurtosis (const unsigned char data[], const size_t stride, const size_t n);
+-double gsl_stats_uchar_lag1_autocorrelation (const unsigned char data[], const size_t stride, const size_t n);
+-
+-double gsl_stats_uchar_covariance (const unsigned char data1[], const size_t stride1,const unsigned char data2[], const size_t stride2, const size_t n);
+-double gsl_stats_uchar_correlation (const unsigned char data1[], const size_t stride1,const unsigned char data2[], const size_t stride2, const size_t n);
+-
+-double gsl_stats_uchar_variance_m (const unsigned char data[], const size_t stride, const size_t n, const double mean);
+-double gsl_stats_uchar_sd_m (const unsigned char data[], const size_t stride, const size_t n, const double mean);
+-double gsl_stats_uchar_absdev_m (const unsigned char data[], const size_t stride, const size_t n, const double mean);
+-double gsl_stats_uchar_skew_m_sd (const unsigned char data[], const size_t stride, const size_t n, const double mean, const double sd);
+-double gsl_stats_uchar_kurtosis_m_sd (const unsigned char data[], const size_t stride, const size_t n, const double mean, const double sd);
+-double gsl_stats_uchar_lag1_autocorrelation_m (const unsigned char data[], const size_t stride, const size_t n, const double mean);
+-
+-double gsl_stats_uchar_covariance_m (const unsigned char data1[], const size_t stride1,const unsigned char data2[], const size_t stride2, const size_t n, const double mean1, const double mean2);
+-
+-
+-double gsl_stats_uchar_pvariance (const unsigned char data1[], const size_t stride1, const size_t n1, const unsigned char data2[], const size_t stride2, const size_t n2);
+-double gsl_stats_uchar_ttest (const unsigned char data1[], const size_t stride1, const size_t n1, const unsigned char data2[], const size_t stride2, const size_t n2);
+-
+-unsigned char gsl_stats_uchar_max (const unsigned char data[], const size_t stride, const size_t n);
+-unsigned char gsl_stats_uchar_min (const unsigned char data[], const size_t stride, const size_t n);
+-void gsl_stats_uchar_minmax (unsigned char * min, unsigned char * max, const unsigned char data[], const size_t stride, const size_t n);
+-
+-size_t gsl_stats_uchar_max_index (const unsigned char data[], const size_t stride, const size_t n);
+-size_t gsl_stats_uchar_min_index (const unsigned char data[], const size_t stride, const size_t n);
+-void gsl_stats_uchar_minmax_index (size_t * min_index, size_t * max_index, const unsigned char data[], const size_t stride, const size_t n);
+-
+-double gsl_stats_uchar_median_from_sorted_data (const unsigned char sorted_data[], const size_t stride, const size_t n) ;
+-double gsl_stats_uchar_quantile_from_sorted_data (const unsigned char sorted_data[], const size_t stride, const size_t n, const double f) ;
+-
+-__END_DECLS
+-
+-#endif /* __GSL_STATISTICS_UCHAR_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sys.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sys.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_sys.h	(revision 14079)
+@@ -1,63 +0,0 @@
+-/* sys/gsl_sys.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_SYS_H__
+-#define __GSL_SYS_H__
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-double gsl_log1p (const double x);
+-double gsl_expm1 (const double x);
+-double gsl_hypot (const double x, const double y);
+-double gsl_hypot3 (const double x, const double y, const double z);
+-double gsl_acosh (const double x);
+-double gsl_asinh (const double x);
+-double gsl_atanh (const double x);
+-
+-int gsl_isnan (const double x);
+-int gsl_isinf (const double x);
+-int gsl_finite (const double x);
+-
+-double gsl_nan (void);
+-double gsl_posinf (void);
+-double gsl_neginf (void);
+-double gsl_fdiv (const double x, const double y);
+-
+-double gsl_coerce_double (const double x);
+-float gsl_coerce_float (const float x);
+-long double gsl_coerce_long_double (const long double x);
+-
+-double gsl_ldexp(const double x, const int e);
+-double gsl_frexp(const double x, int * e);
+-
+-int gsl_fcmp (const double x1, const double x2, const double epsilon);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_SYS_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_pow_int.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_pow_int.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_pow_int.h	(revision 14079)
+@@ -1,61 +0,0 @@
+-/* gsl_pow_int.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004, 2007 Gerard Jungman, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_POW_INT_H__
+-#define __GSL_POW_INT_H__
+-#include <gsl/gsl_inline.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-INLINE_DECL double gsl_pow_2(const double x);
+-INLINE_DECL double gsl_pow_3(const double x);
+-INLINE_DECL double gsl_pow_4(const double x);
+-INLINE_DECL double gsl_pow_5(const double x);
+-INLINE_DECL double gsl_pow_6(const double x);
+-INLINE_DECL double gsl_pow_7(const double x);
+-INLINE_DECL double gsl_pow_8(const double x);
+-INLINE_DECL double gsl_pow_9(const double x);
+-
+-#ifdef HAVE_INLINE
+-INLINE_FUN double gsl_pow_2(const double x) { return x*x;   }
+-INLINE_FUN double gsl_pow_3(const double x) { return x*x*x; }
+-INLINE_FUN double gsl_pow_4(const double x) { double x2 = x*x;   return x2*x2;    }
+-INLINE_FUN double gsl_pow_5(const double x) { double x2 = x*x;   return x2*x2*x;  }
+-INLINE_FUN double gsl_pow_6(const double x) { double x2 = x*x;   return x2*x2*x2; }
+-INLINE_FUN double gsl_pow_7(const double x) { double x3 = x*x*x; return x3*x3*x;  }
+-INLINE_FUN double gsl_pow_8(const double x) { double x2 = x*x;   double x4 = x2*x2; return x4*x4; }
+-INLINE_FUN double gsl_pow_9(const double x) { double x3 = x*x*x; return x3*x3*x3; }
+-#endif
+-
+-double gsl_pow_int(double x, int n);
+-double gsl_pow_uint(double x, unsigned int n);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_POW_INT_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_chebyshev.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_chebyshev.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_chebyshev.h	(revision 14079)
+@@ -1,133 +0,0 @@
+-/* cheb/gsl_chebyshev.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_CHEBYSHEV_H__
+-#define __GSL_CHEBYSHEV_H__
+-
+-#include <gsl/gsl_math.h>
+-#include <gsl/gsl_mode.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-
+-/* data for a Chebyshev series over a given interval */
+-
+-struct gsl_cheb_series_struct {
+-
+-  double * c;   /* coefficients                */
+-  size_t order; /* order of expansion          */
+-  double a;     /* lower interval point        */
+-  double b;     /* upper interval point        */
+-
+-  /* The following exists (mostly) for the benefit
+-   * of the implementation. It is an effective single
+-   * precision order, for use in single precision
+-   * evaluation. Users can use it if they like, but
+-   * only they know how to calculate it, since it is
+-   * specific to the approximated function. By default,
+-   * order_sp = order.
+-   * It is used explicitly only by the gsl_cheb_eval_mode
+-   * functions, which are not meant for casual use.
+-   */
+-  size_t order_sp;
+-
+-  /* Additional elements not used by specfunc */
+-
+-  double * f;   /* function evaluated at chebyschev points  */
+-};
+-typedef struct gsl_cheb_series_struct gsl_cheb_series;
+-
+-
+-/* Calculate a Chebyshev series of specified order over
+- * a specified interval, for a given function.
+- * Return 0 on failure.
+- */
+-gsl_cheb_series * gsl_cheb_alloc(const size_t order);
+-
+-/* Free a Chebyshev series previously calculated with gsl_cheb_alloc().
+- */
+-void gsl_cheb_free(gsl_cheb_series * cs);
+-
+-/* Calculate a Chebyshev series using the storage provided.
+- * Uses the interval (a,b) and the order with which it
+- * was initially created.
+- *
+- */
+-int gsl_cheb_init(gsl_cheb_series * cs, const gsl_function * func,
+-                  const double a, const double b);
+-
+-/* Return the order, size of coefficient array and coefficient array ptr */
+-size_t gsl_cheb_order (const gsl_cheb_series * cs);
+-size_t gsl_cheb_size (const gsl_cheb_series * cs);
+-double *gsl_cheb_coeffs (const gsl_cheb_series * cs);
+-
+-/* Evaluate a Chebyshev series at a given point.
+- * No errors can occur for a struct obtained from gsl_cheb_new().
+- */
+-double gsl_cheb_eval(const gsl_cheb_series * cs, const double x);
+-int gsl_cheb_eval_err(const gsl_cheb_series * cs, const double x, 
+-                      double * result, double * abserr);
+-
+-
+-/* Evaluate a Chebyshev series at a given point, to (at most) the given order.
+- * No errors can occur for a struct obtained from gsl_cheb_new().
+- */
+-double gsl_cheb_eval_n(const gsl_cheb_series * cs, const size_t order, 
+-                       const double x);
+-int gsl_cheb_eval_n_err(const gsl_cheb_series * cs, const size_t order, 
+-                        const double x, double * result, double * abserr);
+-
+-
+-/* Evaluate a Chebyshev series at a given point, using the default
+- * order for double precision mode(s) and the single precision
+- * order for other modes.
+- * No errors can occur for a struct obtained from gsl_cheb_new().
+- */
+-double gsl_cheb_eval_mode(const gsl_cheb_series * cs, const double x, gsl_mode_t mode);
+-int gsl_cheb_eval_mode_e(const gsl_cheb_series * cs, const double x, gsl_mode_t mode, double * result, double * abserr);
+-
+-
+-
+-/* Compute the derivative of a Chebyshev series.
+- */
+-int gsl_cheb_calc_deriv(gsl_cheb_series * deriv, const gsl_cheb_series * cs);
+-
+-/* Compute the integral of a Chebyshev series. The
+- * integral is fixed by the condition that it equals zero at
+- * the left end-point, ie it is precisely
+- *       Integrate[cs(t; a,b), {t, a, x}]
+- */
+-int gsl_cheb_calc_integ(gsl_cheb_series * integ, const gsl_cheb_series * cs);
+-
+-
+-
+-
+-__END_DECLS
+-
+-#endif /* __GSL_CHEBYSHEV_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_const_cgs.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_const_cgs.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_const_cgs.h	(revision 14079)
+@@ -1,116 +0,0 @@
+-/* const/gsl_const_cgs.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+- * 2006, 2007, 2008, 2009 Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_CONST_CGS__
+-#define __GSL_CONST_CGS__
+-
+-#define GSL_CONST_CGS_SPEED_OF_LIGHT (2.99792458e10) /* cm / s */
+-#define GSL_CONST_CGS_GRAVITATIONAL_CONSTANT (6.673e-8) /* cm^3 / g s^2 */
+-#define GSL_CONST_CGS_PLANCKS_CONSTANT_H (6.62606896e-27) /* g cm^2 / s */
+-#define GSL_CONST_CGS_PLANCKS_CONSTANT_HBAR (1.05457162825e-27) /* g cm^2 / s */
+-#define GSL_CONST_CGS_ASTRONOMICAL_UNIT (1.49597870691e13) /* cm */
+-#define GSL_CONST_CGS_LIGHT_YEAR (9.46053620707e17) /* cm */
+-#define GSL_CONST_CGS_PARSEC (3.08567758135e18) /* cm */
+-#define GSL_CONST_CGS_GRAV_ACCEL (9.80665e2) /* cm / s^2 */
+-#define GSL_CONST_CGS_ELECTRON_VOLT (1.602176487e-12) /* g cm^2 / s^2 */
+-#define GSL_CONST_CGS_MASS_ELECTRON (9.10938188e-28) /* g */
+-#define GSL_CONST_CGS_MASS_MUON (1.88353109e-25) /* g */
+-#define GSL_CONST_CGS_MASS_PROTON (1.67262158e-24) /* g */
+-#define GSL_CONST_CGS_MASS_NEUTRON (1.67492716e-24) /* g */
+-#define GSL_CONST_CGS_RYDBERG (2.17987196968e-11) /* g cm^2 / s^2 */
+-#define GSL_CONST_CGS_BOLTZMANN (1.3806504e-16) /* g cm^2 / K s^2 */
+-#define GSL_CONST_CGS_MOLAR_GAS (8.314472e7) /* g cm^2 / K mol s^2 */
+-#define GSL_CONST_CGS_STANDARD_GAS_VOLUME (2.2710981e4) /* cm^3 / mol */
+-#define GSL_CONST_CGS_MINUTE (6e1) /* s */
+-#define GSL_CONST_CGS_HOUR (3.6e3) /* s */
+-#define GSL_CONST_CGS_DAY (8.64e4) /* s */
+-#define GSL_CONST_CGS_WEEK (6.048e5) /* s */
+-#define GSL_CONST_CGS_INCH (2.54e0) /* cm */
+-#define GSL_CONST_CGS_FOOT (3.048e1) /* cm */
+-#define GSL_CONST_CGS_YARD (9.144e1) /* cm */
+-#define GSL_CONST_CGS_MILE (1.609344e5) /* cm */
+-#define GSL_CONST_CGS_NAUTICAL_MILE (1.852e5) /* cm */
+-#define GSL_CONST_CGS_FATHOM (1.8288e2) /* cm */
+-#define GSL_CONST_CGS_MIL (2.54e-3) /* cm */
+-#define GSL_CONST_CGS_POINT (3.52777777778e-2) /* cm */
+-#define GSL_CONST_CGS_TEXPOINT (3.51459803515e-2) /* cm */
+-#define GSL_CONST_CGS_MICRON (1e-4) /* cm */
+-#define GSL_CONST_CGS_ANGSTROM (1e-8) /* cm */
+-#define GSL_CONST_CGS_HECTARE (1e8) /* cm^2 */
+-#define GSL_CONST_CGS_ACRE (4.04685642241e7) /* cm^2 */
+-#define GSL_CONST_CGS_BARN (1e-24) /* cm^2 */
+-#define GSL_CONST_CGS_LITER (1e3) /* cm^3 */
+-#define GSL_CONST_CGS_US_GALLON (3.78541178402e3) /* cm^3 */
+-#define GSL_CONST_CGS_QUART (9.46352946004e2) /* cm^3 */
+-#define GSL_CONST_CGS_PINT (4.73176473002e2) /* cm^3 */
+-#define GSL_CONST_CGS_CUP (2.36588236501e2) /* cm^3 */
+-#define GSL_CONST_CGS_FLUID_OUNCE (2.95735295626e1) /* cm^3 */
+-#define GSL_CONST_CGS_TABLESPOON (1.47867647813e1) /* cm^3 */
+-#define GSL_CONST_CGS_TEASPOON (4.92892159375e0) /* cm^3 */
+-#define GSL_CONST_CGS_CANADIAN_GALLON (4.54609e3) /* cm^3 */
+-#define GSL_CONST_CGS_UK_GALLON (4.546092e3) /* cm^3 */
+-#define GSL_CONST_CGS_MILES_PER_HOUR (4.4704e1) /* cm / s */
+-#define GSL_CONST_CGS_KILOMETERS_PER_HOUR (2.77777777778e1) /* cm / s */
+-#define GSL_CONST_CGS_KNOT (5.14444444444e1) /* cm / s */
+-#define GSL_CONST_CGS_POUND_MASS (4.5359237e2) /* g */
+-#define GSL_CONST_CGS_OUNCE_MASS (2.8349523125e1) /* g */
+-#define GSL_CONST_CGS_TON (9.0718474e5) /* g */
+-#define GSL_CONST_CGS_METRIC_TON (1e6) /* g */
+-#define GSL_CONST_CGS_UK_TON (1.0160469088e6) /* g */
+-#define GSL_CONST_CGS_TROY_OUNCE (3.1103475e1) /* g */
+-#define GSL_CONST_CGS_CARAT (2e-1) /* g */
+-#define GSL_CONST_CGS_UNIFIED_ATOMIC_MASS (1.660538782e-24) /* g */
+-#define GSL_CONST_CGS_GRAM_FORCE (9.80665e2) /* cm g / s^2 */
+-#define GSL_CONST_CGS_POUND_FORCE (4.44822161526e5) /* cm g / s^2 */
+-#define GSL_CONST_CGS_KILOPOUND_FORCE (4.44822161526e8) /* cm g / s^2 */
+-#define GSL_CONST_CGS_POUNDAL (1.38255e4) /* cm g / s^2 */
+-#define GSL_CONST_CGS_CALORIE (4.1868e7) /* g cm^2 / s^2 */
+-#define GSL_CONST_CGS_BTU (1.05505585262e10) /* g cm^2 / s^2 */
+-#define GSL_CONST_CGS_THERM (1.05506e15) /* g cm^2 / s^2 */
+-#define GSL_CONST_CGS_HORSEPOWER (7.457e9) /* g cm^2 / s^3 */
+-#define GSL_CONST_CGS_BAR (1e6) /* g / cm s^2 */
+-#define GSL_CONST_CGS_STD_ATMOSPHERE (1.01325e6) /* g / cm s^2 */
+-#define GSL_CONST_CGS_TORR (1.33322368421e3) /* g / cm s^2 */
+-#define GSL_CONST_CGS_METER_OF_MERCURY (1.33322368421e6) /* g / cm s^2 */
+-#define GSL_CONST_CGS_INCH_OF_MERCURY (3.38638815789e4) /* g / cm s^2 */
+-#define GSL_CONST_CGS_INCH_OF_WATER (2.490889e3) /* g / cm s^2 */
+-#define GSL_CONST_CGS_PSI (6.89475729317e4) /* g / cm s^2 */
+-#define GSL_CONST_CGS_POISE (1e0) /* g / cm s */
+-#define GSL_CONST_CGS_STOKES (1e0) /* cm^2 / s */
+-#define GSL_CONST_CGS_STILB (1e0) /* cd / cm^2 */
+-#define GSL_CONST_CGS_LUMEN (1e0) /* cd sr */
+-#define GSL_CONST_CGS_LUX (1e-4) /* cd sr / cm^2 */
+-#define GSL_CONST_CGS_PHOT (1e0) /* cd sr / cm^2 */
+-#define GSL_CONST_CGS_FOOTCANDLE (1.076e-3) /* cd sr / cm^2 */
+-#define GSL_CONST_CGS_LAMBERT (1e0) /* cd sr / cm^2 */
+-#define GSL_CONST_CGS_FOOTLAMBERT (1.07639104e-3) /* cd sr / cm^2 */
+-#define GSL_CONST_CGS_CURIE (3.7e10) /* 1 / s */
+-#define GSL_CONST_CGS_ROENTGEN (2.58e-7) /* A s / g */
+-#define GSL_CONST_CGS_RAD (1e2) /* cm^2 / s^2 */
+-#define GSL_CONST_CGS_SOLAR_MASS (1.98892e33) /* g */
+-#define GSL_CONST_CGS_BOHR_RADIUS (5.291772083e-9) /* cm */
+-#define GSL_CONST_CGS_NEWTON (1e5) /* cm g / s^2 */
+-#define GSL_CONST_CGS_DYNE (1e0) /* cm g / s^2 */
+-#define GSL_CONST_CGS_JOULE (1e7) /* g cm^2 / s^2 */
+-#define GSL_CONST_CGS_ERG (1e0) /* g cm^2 / s^2 */
+-#define GSL_CONST_CGS_STEFAN_BOLTZMANN_CONSTANT (5.67040047374e-5) /* g / K^4 s^3 */
+-#define GSL_CONST_CGS_THOMSON_CROSS_SECTION (6.65245893699e-25) /* cm^2 */
+-
+-#endif /* __GSL_CONST_CGS__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_fft_real.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_fft_real.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_fft_real.h	(revision 14079)
+@@ -1,80 +0,0 @@
+-/* fft/gsl_fft_real.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_FFT_REAL_H__
+-#define __GSL_FFT_REAL_H__
+-
+-#include <stddef.h>
+-
+-#include <gsl/gsl_math.h>
+-#include <gsl/gsl_complex.h>
+-#include <gsl/gsl_fft.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-int gsl_fft_real_radix2_transform (double data[], const size_t stride, const size_t n) ;
+-
+-typedef struct
+-  {
+-    size_t n;
+-    size_t nf;
+-    size_t factor[64];
+-    gsl_complex *twiddle[64];
+-    gsl_complex *trig;
+-  }
+-gsl_fft_real_wavetable;
+-
+-typedef struct
+-  {
+-    size_t n;
+-    double *scratch;
+-  }
+-gsl_fft_real_workspace;
+-
+-gsl_fft_real_wavetable * gsl_fft_real_wavetable_alloc (size_t n);
+-
+-void  gsl_fft_real_wavetable_free (gsl_fft_real_wavetable * wavetable);
+-
+-gsl_fft_real_workspace * gsl_fft_real_workspace_alloc (size_t n);
+-
+-void  gsl_fft_real_workspace_free (gsl_fft_real_workspace * workspace);
+-
+-
+-int gsl_fft_real_transform (double data[], const size_t stride, const size_t n,
+-                            const gsl_fft_real_wavetable * wavetable,
+-                            gsl_fft_real_workspace * work);
+-
+-
+-int gsl_fft_real_unpack (const double real_coefficient[],
+-                         double complex_coefficient[],
+-                         const size_t stride, const size_t n);
+-
+-__END_DECLS
+-
+-#endif /* __GSL_FFT_REAL_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_complex_double.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_complex_double.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_vector_complex_double.h	(revision 14079)
+@@ -1,251 +0,0 @@
+-/* vector/gsl_vector_complex_double.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_VECTOR_COMPLEX_DOUBLE_H__
+-#define __GSL_VECTOR_COMPLEX_DOUBLE_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_types.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_complex.h>
+-#include <gsl/gsl_check_range.h>
+-#include <gsl/gsl_vector_double.h>
+-#include <gsl/gsl_vector_complex.h>
+-#include <gsl/gsl_block_complex_double.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-typedef struct 
+-{
+-  size_t size;
+-  size_t stride;
+-  double *data;
+-  gsl_block_complex *block;
+-  int owner;
+-} gsl_vector_complex;
+-
+-typedef struct
+-{
+-  gsl_vector_complex vector;
+-} _gsl_vector_complex_view;
+-
+-typedef _gsl_vector_complex_view gsl_vector_complex_view;
+-
+-typedef struct
+-{
+-  gsl_vector_complex vector;
+-} _gsl_vector_complex_const_view;
+-
+-typedef const _gsl_vector_complex_const_view gsl_vector_complex_const_view;
+-
+-/* Allocation */
+-
+-gsl_vector_complex *gsl_vector_complex_alloc (const size_t n);
+-gsl_vector_complex *gsl_vector_complex_calloc (const size_t n);
+-
+-gsl_vector_complex *
+-gsl_vector_complex_alloc_from_block (gsl_block_complex * b, 
+-                                           const size_t offset, 
+-                                           const size_t n, 
+-                                           const size_t stride);
+-
+-gsl_vector_complex *
+-gsl_vector_complex_alloc_from_vector (gsl_vector_complex * v, 
+-                                             const size_t offset, 
+-                                             const size_t n, 
+-                                             const size_t stride);
+-
+-void gsl_vector_complex_free (gsl_vector_complex * v);
+-
+-/* Views */
+-
+-_gsl_vector_complex_view
+-gsl_vector_complex_view_array (double *base,
+-                                     size_t n);
+-
+-_gsl_vector_complex_view
+-gsl_vector_complex_view_array_with_stride (double *base,
+-                                                 size_t stride,
+-                                                 size_t n);
+-
+-_gsl_vector_complex_const_view
+-gsl_vector_complex_const_view_array (const double *base,
+-                                           size_t n);
+-
+-_gsl_vector_complex_const_view
+-gsl_vector_complex_const_view_array_with_stride (const double *base,
+-                                                       size_t stride,
+-                                                       size_t n);
+-
+-_gsl_vector_complex_view
+-gsl_vector_complex_subvector (gsl_vector_complex *base,
+-                                         size_t i, 
+-                                         size_t n);
+-
+-
+-_gsl_vector_complex_view 
+-gsl_vector_complex_subvector_with_stride (gsl_vector_complex *v, 
+-                                                size_t i, 
+-                                                size_t stride, 
+-                                                size_t n);
+-
+-_gsl_vector_complex_const_view
+-gsl_vector_complex_const_subvector (const gsl_vector_complex *base,
+-                                               size_t i, 
+-                                               size_t n);
+-
+-
+-_gsl_vector_complex_const_view 
+-gsl_vector_complex_const_subvector_with_stride (const gsl_vector_complex *v, 
+-                                                      size_t i, 
+-                                                      size_t stride, 
+-                                                      size_t n);
+-
+-_gsl_vector_view
+-gsl_vector_complex_real (gsl_vector_complex *v);
+-
+-_gsl_vector_view 
+-gsl_vector_complex_imag (gsl_vector_complex *v);
+-
+-_gsl_vector_const_view
+-gsl_vector_complex_const_real (const gsl_vector_complex *v);
+-
+-_gsl_vector_const_view 
+-gsl_vector_complex_const_imag (const gsl_vector_complex *v);
+-
+-
+-/* Operations */
+-
+-void gsl_vector_complex_set_zero (gsl_vector_complex * v);
+-void gsl_vector_complex_set_all (gsl_vector_complex * v,
+-                                       gsl_complex z);
+-int gsl_vector_complex_set_basis (gsl_vector_complex * v, size_t i);
+-
+-int gsl_vector_complex_fread (FILE * stream,
+-                                    gsl_vector_complex * v);
+-int gsl_vector_complex_fwrite (FILE * stream,
+-                                     const gsl_vector_complex * v);
+-int gsl_vector_complex_fscanf (FILE * stream,
+-                                     gsl_vector_complex * v);
+-int gsl_vector_complex_fprintf (FILE * stream,
+-                                      const gsl_vector_complex * v,
+-                                      const char *format);
+-
+-int gsl_vector_complex_memcpy (gsl_vector_complex * dest, const gsl_vector_complex * src);
+-
+-int gsl_vector_complex_reverse (gsl_vector_complex * v);
+-
+-int gsl_vector_complex_swap (gsl_vector_complex * v, gsl_vector_complex * w);
+-int gsl_vector_complex_swap_elements (gsl_vector_complex * v, const size_t i, const size_t j);
+-
+-int gsl_vector_complex_equal (const gsl_vector_complex * u, 
+-                                    const gsl_vector_complex * v);
+-
+-int gsl_vector_complex_isnull (const gsl_vector_complex * v);
+-int gsl_vector_complex_ispos (const gsl_vector_complex * v);
+-int gsl_vector_complex_isneg (const gsl_vector_complex * v);
+-int gsl_vector_complex_isnonneg (const gsl_vector_complex * v);
+-
+-int gsl_vector_complex_add (gsl_vector_complex * a, const gsl_vector_complex * b);
+-int gsl_vector_complex_sub (gsl_vector_complex * a, const gsl_vector_complex * b);
+-int gsl_vector_complex_mul (gsl_vector_complex * a, const gsl_vector_complex * b);
+-int gsl_vector_complex_div (gsl_vector_complex * a, const gsl_vector_complex * b);
+-int gsl_vector_complex_scale (gsl_vector_complex * a, const gsl_complex x);
+-int gsl_vector_complex_add_constant (gsl_vector_complex * a, const gsl_complex x);
+-
+-INLINE_DECL gsl_complex gsl_vector_complex_get (const gsl_vector_complex * v, const size_t i);
+-INLINE_DECL void gsl_vector_complex_set (gsl_vector_complex * v, const size_t i, gsl_complex z);
+-INLINE_DECL gsl_complex *gsl_vector_complex_ptr (gsl_vector_complex * v, const size_t i);
+-INLINE_DECL const gsl_complex *gsl_vector_complex_const_ptr (const gsl_vector_complex * v, const size_t i);
+-
+-#ifdef HAVE_INLINE
+-
+-INLINE_FUN
+-gsl_complex
+-gsl_vector_complex_get (const gsl_vector_complex * v,
+-                              const size_t i)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(i >= v->size))
+-    {
+-      gsl_complex zero = {{0, 0}};
+-      GSL_ERROR_VAL ("index out of range", GSL_EINVAL, zero);
+-    }
+-#endif
+-  return *GSL_COMPLEX_AT (v, i);
+-}
+-
+-INLINE_FUN
+-void
+-gsl_vector_complex_set (gsl_vector_complex * v,
+-                              const size_t i, gsl_complex z)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(i >= v->size))
+-    {
+-      GSL_ERROR_VOID ("index out of range", GSL_EINVAL);
+-    }
+-#endif
+-  *GSL_COMPLEX_AT (v, i) = z;
+-}
+-
+-INLINE_FUN
+-gsl_complex *
+-gsl_vector_complex_ptr (gsl_vector_complex * v,
+-                              const size_t i)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(i >= v->size))
+-    {
+-      GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
+-    }
+-#endif
+-  return GSL_COMPLEX_AT (v, i);
+-}
+-
+-INLINE_FUN
+-const gsl_complex *
+-gsl_vector_complex_const_ptr (const gsl_vector_complex * v,
+-                                    const size_t i)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(i >= v->size))
+-    {
+-      GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
+-    }
+-#endif
+-  return GSL_COMPLEX_AT (v, i);
+-}
+-
+-
+-#endif /* HAVE_INLINE */
+-
+-__END_DECLS
+-
+-#endif /* __GSL_VECTOR_COMPLEX_DOUBLE_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_long.h
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_long.h	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl_matrix_long.h	(revision 14079)
+@@ -1,350 +0,0 @@
+-/* matrix/gsl_matrix_long.h
+- * 
+- * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+- * 
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or (at
+- * your option) any later version.
+- * 
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __GSL_MATRIX_LONG_H__
+-#define __GSL_MATRIX_LONG_H__
+-
+-#include <stdlib.h>
+-#include <gsl/gsl_types.h>
+-#include <gsl/gsl_errno.h>
+-#include <gsl/gsl_inline.h>
+-#include <gsl/gsl_check_range.h>
+-#include <gsl/gsl_vector_long.h>
+-
+-#undef __BEGIN_DECLS
+-#undef __END_DECLS
+-#ifdef __cplusplus
+-# define __BEGIN_DECLS extern "C" {
+-# define __END_DECLS }
+-#else
+-# define __BEGIN_DECLS /* empty */
+-# define __END_DECLS /* empty */
+-#endif
+-
+-__BEGIN_DECLS
+-
+-typedef struct 
+-{
+-  size_t size1;
+-  size_t size2;
+-  size_t tda;
+-  long * data;
+-  gsl_block_long * block;
+-  int owner;
+-} gsl_matrix_long;
+-
+-typedef struct
+-{
+-  gsl_matrix_long matrix;
+-} _gsl_matrix_long_view;
+-
+-typedef _gsl_matrix_long_view gsl_matrix_long_view;
+-
+-typedef struct
+-{
+-  gsl_matrix_long matrix;
+-} _gsl_matrix_long_const_view;
+-
+-typedef const _gsl_matrix_long_const_view gsl_matrix_long_const_view;
+-
+-/* Allocation */
+-
+-gsl_matrix_long * 
+-gsl_matrix_long_alloc (const size_t n1, const size_t n2);
+-
+-gsl_matrix_long * 
+-gsl_matrix_long_calloc (const size_t n1, const size_t n2);
+-
+-gsl_matrix_long * 
+-gsl_matrix_long_alloc_from_block (gsl_block_long * b, 
+-                                   const size_t offset, 
+-                                   const size_t n1, 
+-                                   const size_t n2, 
+-                                   const size_t d2);
+-
+-gsl_matrix_long * 
+-gsl_matrix_long_alloc_from_matrix (gsl_matrix_long * m,
+-                                    const size_t k1, 
+-                                    const size_t k2,
+-                                    const size_t n1, 
+-                                    const size_t n2);
+-
+-gsl_vector_long * 
+-gsl_vector_long_alloc_row_from_matrix (gsl_matrix_long * m,
+-                                        const size_t i);
+-
+-gsl_vector_long * 
+-gsl_vector_long_alloc_col_from_matrix (gsl_matrix_long * m,
+-                                        const size_t j);
+-
+-void gsl_matrix_long_free (gsl_matrix_long * m);
+-
+-/* Views */
+-
+-_gsl_matrix_long_view 
+-gsl_matrix_long_submatrix (gsl_matrix_long * m, 
+-                            const size_t i, const size_t j, 
+-                            const size_t n1, const size_t n2);
+-
+-_gsl_vector_long_view 
+-gsl_matrix_long_row (gsl_matrix_long * m, const size_t i);
+-
+-_gsl_vector_long_view 
+-gsl_matrix_long_column (gsl_matrix_long * m, const size_t j);
+-
+-_gsl_vector_long_view 
+-gsl_matrix_long_diagonal (gsl_matrix_long * m);
+-
+-_gsl_vector_long_view 
+-gsl_matrix_long_subdiagonal (gsl_matrix_long * m, const size_t k);
+-
+-_gsl_vector_long_view 
+-gsl_matrix_long_superdiagonal (gsl_matrix_long * m, const size_t k);
+-
+-_gsl_vector_long_view
+-gsl_matrix_long_subrow (gsl_matrix_long * m, const size_t i,
+-                         const size_t offset, const size_t n);
+-
+-_gsl_vector_long_view
+-gsl_matrix_long_subcolumn (gsl_matrix_long * m, const size_t j,
+-                            const size_t offset, const size_t n);
+-
+-_gsl_matrix_long_view
+-gsl_matrix_long_view_array (long * base,
+-                             const size_t n1, 
+-                             const size_t n2);
+-
+-_gsl_matrix_long_view
+-gsl_matrix_long_view_array_with_tda (long * base, 
+-                                      const size_t n1, 
+-                                      const size_t n2,
+-                                      const size_t tda);
+-
+-
+-_gsl_matrix_long_view
+-gsl_matrix_long_view_vector (gsl_vector_long * v,
+-                              const size_t n1, 
+-                              const size_t n2);
+-
+-_gsl_matrix_long_view
+-gsl_matrix_long_view_vector_with_tda (gsl_vector_long * v,
+-                                       const size_t n1, 
+-                                       const size_t n2,
+-                                       const size_t tda);
+-
+-
+-_gsl_matrix_long_const_view 
+-gsl_matrix_long_const_submatrix (const gsl_matrix_long * m, 
+-                                  const size_t i, const size_t j, 
+-                                  const size_t n1, const size_t n2);
+-
+-_gsl_vector_long_const_view 
+-gsl_matrix_long_const_row (const gsl_matrix_long * m, 
+-                            const size_t i);
+-
+-_gsl_vector_long_const_view 
+-gsl_matrix_long_const_column (const gsl_matrix_long * m, 
+-                               const size_t j);
+-
+-_gsl_vector_long_const_view
+-gsl_matrix_long_const_diagonal (const gsl_matrix_long * m);
+-
+-_gsl_vector_long_const_view 
+-gsl_matrix_long_const_subdiagonal (const gsl_matrix_long * m, 
+-                                    const size_t k);
+-
+-_gsl_vector_long_const_view 
+-gsl_matrix_long_const_superdiagonal (const gsl_matrix_long * m, 
+-                                      const size_t k);
+-
+-_gsl_vector_long_const_view
+-gsl_matrix_long_const_subrow (const gsl_matrix_long * m, const size_t i,
+-                               const size_t offset, const size_t n);
+-
+-_gsl_vector_long_const_view
+-gsl_matrix_long_const_subcolumn (const gsl_matrix_long * m, const size_t j,
+-                                  const size_t offset, const size_t n);
+-
+-_gsl_matrix_long_const_view
+-gsl_matrix_long_const_view_array (const long * base,
+-                                   const size_t n1, 
+-                                   const size_t n2);
+-
+-_gsl_matrix_long_const_view
+-gsl_matrix_long_const_view_array_with_tda (const long * base, 
+-                                            const size_t n1, 
+-                                            const size_t n2,
+-                                            const size_t tda);
+-
+-_gsl_matrix_long_const_view
+-gsl_matrix_long_const_view_vector (const gsl_vector_long * v,
+-                                    const size_t n1, 
+-                                    const size_t n2);
+-
+-_gsl_matrix_long_const_view
+-gsl_matrix_long_const_view_vector_with_tda (const gsl_vector_long * v,
+-                                             const size_t n1, 
+-                                             const size_t n2,
+-                                             const size_t tda);
+-
+-/* Operations */
+-
+-void gsl_matrix_long_set_zero (gsl_matrix_long * m);
+-void gsl_matrix_long_set_identity (gsl_matrix_long * m);
+-void gsl_matrix_long_set_all (gsl_matrix_long * m, long x);
+-
+-int gsl_matrix_long_fread (FILE * stream, gsl_matrix_long * m) ;
+-int gsl_matrix_long_fwrite (FILE * stream, const gsl_matrix_long * m) ;
+-int gsl_matrix_long_fscanf (FILE * stream, gsl_matrix_long * m);
+-int gsl_matrix_long_fprintf (FILE * stream, const gsl_matrix_long * m, const char * format);
+- 
+-int gsl_matrix_long_memcpy(gsl_matrix_long * dest, const gsl_matrix_long * src);
+-int gsl_matrix_long_swap(gsl_matrix_long * m1, gsl_matrix_long * m2);
+-
+-int gsl_matrix_long_swap_rows(gsl_matrix_long * m, const size_t i, const size_t j);
+-int gsl_matrix_long_swap_columns(gsl_matrix_long * m, const size_t i, const size_t j);
+-int gsl_matrix_long_swap_rowcol(gsl_matrix_long * m, const size_t i, const size_t j);
+-int gsl_matrix_long_transpose (gsl_matrix_long * m);
+-int gsl_matrix_long_transpose_memcpy (gsl_matrix_long * dest, const gsl_matrix_long * src);
+-
+-long gsl_matrix_long_max (const gsl_matrix_long * m);
+-long gsl_matrix_long_min (const gsl_matrix_long * m);
+-void gsl_matrix_long_minmax (const gsl_matrix_long * m, long * min_out, long * max_out);
+-
+-void gsl_matrix_long_max_index (const gsl_matrix_long * m, size_t * imax, size_t *jmax);
+-void gsl_matrix_long_min_index (const gsl_matrix_long * m, size_t * imin, size_t *jmin);
+-void gsl_matrix_long_minmax_index (const gsl_matrix_long * m, size_t * imin, size_t * jmin, size_t * imax, size_t * jmax);
+-
+-int gsl_matrix_long_equal (const gsl_matrix_long * a, const gsl_matrix_long * b);
+-
+-int gsl_matrix_long_isnull (const gsl_matrix_long * m);
+-int gsl_matrix_long_ispos (const gsl_matrix_long * m);
+-int gsl_matrix_long_isneg (const gsl_matrix_long * m);
+-int gsl_matrix_long_isnonneg (const gsl_matrix_long * m);
+-
+-int gsl_matrix_long_add (gsl_matrix_long * a, const gsl_matrix_long * b);
+-int gsl_matrix_long_sub (gsl_matrix_long * a, const gsl_matrix_long * b);
+-int gsl_matrix_long_mul_elements (gsl_matrix_long * a, const gsl_matrix_long * b);
+-int gsl_matrix_long_div_elements (gsl_matrix_long * a, const gsl_matrix_long * b);
+-int gsl_matrix_long_scale (gsl_matrix_long * a, const double x);
+-int gsl_matrix_long_add_constant (gsl_matrix_long * a, const double x);
+-int gsl_matrix_long_add_diagonal (gsl_matrix_long * a, const double x);
+-
+-/***********************************************************************/
+-/* The functions below are obsolete                                    */
+-/***********************************************************************/
+-int gsl_matrix_long_get_row(gsl_vector_long * v, const gsl_matrix_long * m, const size_t i);
+-int gsl_matrix_long_get_col(gsl_vector_long * v, const gsl_matrix_long * m, const size_t j);
+-int gsl_matrix_long_set_row(gsl_matrix_long * m, const size_t i, const gsl_vector_long * v);
+-int gsl_matrix_long_set_col(gsl_matrix_long * m, const size_t j, const gsl_vector_long * v);
+-/***********************************************************************/
+-
+-/* inline functions if you are using GCC */
+-
+-INLINE_DECL long   gsl_matrix_long_get(const gsl_matrix_long * m, const size_t i, const size_t j);
+-INLINE_DECL void    gsl_matrix_long_set(gsl_matrix_long * m, const size_t i, const size_t j, const long x);
+-INLINE_DECL long * gsl_matrix_long_ptr(gsl_matrix_long * m, const size_t i, const size_t j);
+-INLINE_DECL const long * gsl_matrix_long_const_ptr(const gsl_matrix_long * m, const size_t i, const size_t j);
+-
+-#ifdef HAVE_INLINE
+-INLINE_FUN 
+-long
+-gsl_matrix_long_get(const gsl_matrix_long * m, const size_t i, const size_t j)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(1)) 
+-    {
+-      if (i >= m->size1)
+-        {
+-          GSL_ERROR_VAL("first index out of range", GSL_EINVAL, 0) ;
+-        }
+-      else if (j >= m->size2)
+-        {
+-          GSL_ERROR_VAL("second index out of range", GSL_EINVAL, 0) ;
+-        }
+-    }
+-#endif
+-  return m->data[i * m->tda + j] ;
+-} 
+-
+-INLINE_FUN 
+-void
+-gsl_matrix_long_set(gsl_matrix_long * m, const size_t i, const size_t j, const long x)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(1)) 
+-    {
+-      if (i >= m->size1)
+-        {
+-          GSL_ERROR_VOID("first index out of range", GSL_EINVAL) ;
+-        }
+-      else if (j >= m->size2)
+-        {
+-          GSL_ERROR_VOID("second index out of range", GSL_EINVAL) ;
+-        }
+-    }
+-#endif
+-  m->data[i * m->tda + j] = x ;
+-}
+-
+-INLINE_FUN 
+-long *
+-gsl_matrix_long_ptr(gsl_matrix_long * m, const size_t i, const size_t j)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(1)) 
+-    {
+-      if (i >= m->size1)
+-        {
+-          GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
+-        }
+-      else if (j >= m->size2)
+-        {
+-          GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
+-        }
+-    }
+-#endif
+-  return (long *) (m->data + (i * m->tda + j)) ;
+-} 
+-
+-INLINE_FUN 
+-const long *
+-gsl_matrix_long_const_ptr(const gsl_matrix_long * m, const size_t i, const size_t j)
+-{
+-#if GSL_RANGE_CHECK
+-  if (GSL_RANGE_COND(1)) 
+-    {
+-      if (i >= m->size1)
+-        {
+-          GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
+-        }
+-      else if (j >= m->size2)
+-        {
+-          GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
+-        }
+-    }
+-#endif
+-  return (const long *) (m->data + (i * m->tda + j)) ;
+-} 
+-
+-#endif
+-
+-__END_DECLS
+-
+-#endif /* __GSL_MATRIX_LONG_H__ */
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/Android.mk
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/Android.mk	(revision 14078)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/Android.mk	(revision 14079)
+@@ -2,7 +2,7 @@
+ include $(CLEAR_VARS)
+ LOCAL_MODULE    := libgsl
+ LOCAL_SRC_FILES := libsgsl.a
+-LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include/gsl
++LOCAL_EXPORT_C_INCLUDES := $(ISSM_DIR)/externalpackages/gsl/install/include/gsl/
+ include $(PREBUILT_STATIC_LIBRARY)
+ 
+ #include $(CLEAR_VARS)
Index: /issm/oecreview/Archive/14064-14311/ISSM-14079-14080.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14079-14080.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14079-14080.diff	(revision 14312)
@@ -0,0 +1,995 @@
+Index: ../trunk-jpl/src/android/ISSM/project.properties
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/project.properties	(revision 14079)
++++ ../trunk-jpl/src/android/ISSM/project.properties	(revision 14080)
+@@ -11,4 +11,4 @@
+ #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
+ 
+ # Project target.
+-target=android-15
++target=Google Inc.:Google APIs:16
+Index: ../trunk-jpl/src/android/ISSM_Visual/AndroidManifest.xml
+===================================================================
+--- ../trunk-jpl/src/android/ISSM_Visual/AndroidManifest.xml	(revision 14079)
++++ ../trunk-jpl/src/android/ISSM_Visual/AndroidManifest.xml	(revision 14080)
+@@ -1,5 +1,5 @@
+ <manifest xmlns:android="http://schemas.android.com/apk/res/android"
+-    package="com.example.issm_visual"
++    package="gov.nasa.jpl.issm.visual"
+     android:versionCode="1"
+     android:versionName="1.0" >
+ 
+Index: ../trunk-jpl/src/android/ISSM_Visual/src/com/example/issm_visual/ISSMVisual.java
+===================================================================
+--- ../trunk-jpl/src/android/ISSM_Visual/src/com/example/issm_visual/ISSMVisual.java	(revision 14079)
++++ ../trunk-jpl/src/android/ISSM_Visual/src/com/example/issm_visual/ISSMVisual.java	(revision 14080)
+@@ -1,95 +0,0 @@
+-package com.example.issm_visual;
+-
+-
+-import android.app.Activity;
+-import android.content.DialogInterface.OnClickListener;
+-import android.opengl.GLSurfaceView;
+-import android.os.Bundle;
+-import android.view.Menu;
+-import android.view.View;
+-import android.widget.Button;
+-import android.widget.FrameLayout;
+-import android.widget.SeekBar;
+-import android.widget.SeekBar.OnSeekBarChangeListener;
+-import android.widget.TextView;
+-
+-public class ISSMVisual extends Activity implements OnSeekBarChangeListener
+-{
+-	private SeekBar bar;
+-    private TextView /*txtStatus,*/ txtValue;
+-    private GLSurfaceView mGLView;
+-	private FrameLayout frame;
+-	
+-    @Override
+-    public void onCreate(Bundle savedInstanceState) 
+-    {
+-        super.onCreate(savedInstanceState);
+-        setContentView(R.layout.activity_issmvisual);
+-        
+-        bar = (SeekBar)findViewById(R.id.seekBar); // make seekbar object
+-        bar.setOnSeekBarChangeListener(this); // set seekbar listener
+-        txtValue = (TextView)findViewById(R.id.value);
+-        Button reset = (Button)findViewById(R.id.button1);
+-        reset.setOnClickListener(new View.OnClickListener()
+-        {
+-            public void onClick(View v) 
+-            {
+-            	frame.removeView(mGLView);
+-            	mGLView = new MyGLSurfaceView(ISSMVisual.this);
+-            	frame.addView(mGLView);
+-            }
+-        });
+-        //txtStatus = (TextView)findViewById(R.id.status);
+-        
+-        mGLView = new MyGLSurfaceView(this);
+-        frame = (FrameLayout)findViewById(R.id.frame);
+-        frame.addView(mGLView);
+-    }
+-	public void onProgressChanged(SeekBar seekBar, int val,
+-    		boolean fromUser) 
+-    {
+-    	// change progress text label with current Seekbar value
+-    	txtValue.setText("alpha value = " + val);
+-    	//txtStatus.setText("Status: changing");
+-    }
+-	
+-    public void onStartTrackingTouch(SeekBar seekBar) {/*txtStatus.setText("Status: Starting to track touch");*/}
+-    
+-    public void onStopTrackingTouch(SeekBar seekBar) 
+-    {
+-    	seekBar.setSecondaryProgress(seekBar.getProgress()); // set the shade of the previous value.
+-    	
+-    	//txtStatus.setText("Status: Ended tracking touch");
+-    	frame.removeView(mGLView);
+-    	mGLView = new MyGLSurfaceView(this);
+-        frame.addView(mGLView);
+-    }
+-    
+-    @Override
+-    protected void onPause() 
+-    {
+-        super.onPause();
+-        // The following call pauses the rendering thread.
+-        // If your OpenGL application is memory intensive,
+-        // you should consider de-allocating objects that
+-        // consume significant memory here.
+-        mGLView.onPause();
+-    }
+-    
+-    @Override
+-    protected void onResume() 
+-    {
+-        super.onResume();
+-        // The following call resumes a paused rendering thread.
+-        // If you de-allocated graphic objects for onPause()
+-        // this is a good place to re-allocate them.
+-        mGLView.onResume();
+-    }
+-
+-    @Override
+-    public boolean onCreateOptionsMenu(Menu menu) 
+-    {
+-        getMenuInflater().inflate(R.menu.activity_issmvisual, menu);
+-        return true;
+-    }
+-}
+Index: ../trunk-jpl/src/android/ISSM_Visual/src/com/example/issm_visual/MyGLRenderer.java
+===================================================================
+--- ../trunk-jpl/src/android/ISSM_Visual/src/com/example/issm_visual/MyGLRenderer.java	(revision 14079)
++++ ../trunk-jpl/src/android/ISSM_Visual/src/com/example/issm_visual/MyGLRenderer.java	(revision 14080)
+@@ -1,294 +0,0 @@
+-/*
+- * Copyright (C) 2012 The Android Open Source Project
+- *
+- * Licensed under the Apache License, Version 2.0 (the "License");
+- * you may not use this file except in compliance with the License.
+- * You may obtain a copy of the License at
+- *
+- *      http://www.apache.org/licenses/LICENSE-2.0
+- *
+- * Unless required by applicable law or agreed to in writing, software
+- * distributed under the License is distributed on an "AS IS" BASIS,
+- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+- * See the License for the specific language governing permissions and
+- * limitations under the License.
+- */
+-
+-package com.example.issm_visual;
+-import java.nio.ByteBuffer;
+-import java.nio.ByteOrder;
+-import java.nio.FloatBuffer;
+-
+-import javax.microedition.khronos.egl.EGLConfig;
+-import javax.microedition.khronos.opengles.GL10;
+-
+-import android.opengl.GLES20;
+-import android.opengl.GLSurfaceView;
+-import android.opengl.Matrix;
+-
+-public class MyGLRenderer implements GLSurfaceView.Renderer 
+-{
+-	public volatile float mAngle;
+-	
+-	/**
+-	 * Store the model matrix. This matrix is used to move models from object space (where each model can be thought
+-	 * of being located at the center of the universe) to world space.
+-	 */
+-	private float[][] mModelMatrix;
+-	
+-	/**
+-	 * Store the view matrix. This can be thought of as our camera. This matrix transforms world space to eye space;
+-	 * it positions things relative to our eye.
+-	 */
+-	private float[][] mViewMatrix;
+-
+-	/** Store the projection matrix. This is used to project the scene onto a 2D viewport. */
+-	private float[][] mProjectionMatrix;
+-
+-	/** Allocate storage for the final combined matrix. This will be passed into the shader program. */
+-	private float[][] mMVPMatrix;
+-
+-	/** This will be used to pass in the transformation matrix. */
+-	private int mMatrixHandle;
+-	
+-    private FloatBuffer[] triangleVert;
+-    
+-    private float[][] triangleData2DArr;
+-    
+-    private int mPositionHandle;
+-    
+-    private int mColorHandle;
+-    
+-	/** How many bytes per float. */
+-    private final int mBytesPerFloat = 4;
+-
+-    /** How many elements per vertex. */
+-    private final int mStrideBytes = 7 * mBytesPerFloat;
+-
+-    /** Offset of the position data. */
+-    private final int mPositionOffset = 0;
+-
+-    /** Size of the position data in elements. */
+-    private final int mPositionDataSize = 3;
+-
+-    /** Offset of the color data. */
+-    private final int mColorOffset = 3;
+-
+-    /** Size of the color data in elements. */
+-    private final int mColorDataSize = 4;	
+-
+-    public MyGLRenderer(float[][] vertices)
+-    {	
+-    	triangleData2DArr = new float[vertices.length][21];
+-    	triangleVert = new FloatBuffer[vertices.length];
+-    	
+-    	for (int i = 0; i < vertices.length; i++)
+-    	{
+-    		for (int j = 0; j < 21; j++)
+-    			triangleData2DArr[i][j] = vertices[i][j]; 
+-    	}
+-	    		
+-	    // initialize vertex byte buffer for shape coordinates
+-    	for (int i = 0; i < vertices.length; i++)
+-    	{
+-    		triangleVert[i] = ByteBuffer.allocateDirect(triangleData2DArr[i].length * mBytesPerFloat)
+-    													.order(ByteOrder.nativeOrder()).asFloatBuffer();
+-    		triangleVert[i].put(triangleData2DArr[i]).position(0);
+-    	}
+-    }
+-    
+-    public void onSurfaceCreated(GL10 unused, EGLConfig config) 
+-    {
+-        // Set the background frame color
+-        GLES20.glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
+-        
+-		// Position the eye behind the origin.
+-		final float eyeX = 0.0f;
+-		final float eyeY = 0.0f;
+-		final float eyeZ = 1.5f;
+-
+-		// We are looking toward the distance
+-		final float lookX = 0.0f;
+-		final float lookY = 0.0f;
+-		final float lookZ = -5.0f;
+-
+-		// Set our up vector. This is where our head would be pointing were we holding the camera.
+-		final float upX = 0.0f;
+-		final float upY = 1.0f;
+-		final float upZ = 0.0f;
+-
+-		// Set the view matrix. This matrix can be said to represent the camera position.
+-		// NOTE: In OpenGL 1, a ModelView matrix is used, which is a combination of a model and
+-		// view matrix. In OpenGL 2, we can keep track of these matrices separately if we choose.
+-		mViewMatrix = new float[triangleVert.length][16];
+-		
+-		for (int i = 0; i < triangleVert.length; i++)
+-			Matrix.setLookAtM(mViewMatrix[i], 0, eyeX, eyeY, eyeZ, lookX, lookY, lookZ, upX, upY, upZ);
+-        
+-		final String vertexShader =
+-				"uniform mat4 u_MVPMatrix;      \n"		// A constant representing the combined model/view/projection matrix.
+-			  + "attribute vec4 a_Position;     \n"		// Per-vertex position information we will pass in.
+-			  + "attribute vec4 a_Color;        \n"		// Per-vertex color information we will pass in.			  
+-			  + "varying vec4 v_Color;          \n"		// This will be passed into the fragment shader.
+-			  + "void main()                    \n"		// The entry point for our vertex shader.
+-			  + "{                              \n"
+-			  + "   v_Color = a_Color;          \n"		// Pass the color through to the fragment shader. 
+-			  											// It will be interpolated across the triangle.
+-			  + "   gl_Position = u_MVPMatrix   \n" 	// gl_Position is a special variable used to store the final position.
+-			  + "               * a_Position;   \n"     // Multiply the vertex by the matrix to get the final point in 			                                            			 
+-			  + "}                              \n";    // normalized screen coordinates.
+-
+-			final String fragmentShader =
+-				"precision mediump float;       \n"		// Set the default precision to medium. We don't need as high of a											// precision in the fragment shader.				
+-			  + "varying vec4 v_Color;          \n"		// This is the color from the vertex shader interpolated across the 
+-			  											// triangle per fragment.			  
+-			  + "void main()                    \n"		// The entry point for our fragment shader.
+-			  + "{                              \n"
+-			  + "   gl_FragColor = v_Color;     \n"		// Pass the color directly through the pipeline.		  
+-			  + "}                              \n";												
+-
+-    	   
+-        int vertexShaderHandle = GLES20.glCreateShader(GLES20.GL_VERTEX_SHADER);
+-		// Pass in the shader source.
+-		GLES20.glShaderSource(vertexShaderHandle, vertexShader);
+-
+-		// Compile the shader.
+-		GLES20.glCompileShader(vertexShaderHandle);
+-
+-		// Get the compilation status.
+-		final int[] compileStatus1 = new int[1];
+-		GLES20.glGetShaderiv(vertexShaderHandle, GLES20.GL_COMPILE_STATUS, compileStatus1, 0);
+-
+-		// If the compilation failed, delete the shader.
+-		if (compileStatus1[0] == 0) 
+-		{				
+-			GLES20.glDeleteShader(vertexShaderHandle);
+-			vertexShaderHandle = 0;
+-		}
+-		
+-         
+-    	int fragmentShaderHandle = GLES20.glCreateShader(GLES20.GL_FRAGMENT_SHADER);
+-		// Pass in the shader source.
+-		GLES20.glShaderSource(fragmentShaderHandle, fragmentShader);
+-
+-		// Compile the shader.
+-		GLES20.glCompileShader(fragmentShaderHandle);
+-
+-		// Get the compilation status.
+-		final int[] compileStatus2 = new int[1];
+-		GLES20.glGetShaderiv(fragmentShaderHandle, GLES20.GL_COMPILE_STATUS, compileStatus2, 0);
+-
+-		// If the compilation failed, delete the shader.
+-		if (compileStatus2[0] == 0) 
+-		{				
+-			GLES20.glDeleteShader(fragmentShaderHandle);
+-			fragmentShaderHandle = 0;
+-		}
+-
+-        
+-        int mProgram = GLES20.glCreateProgram();
+-		// Bind the vertex shader to the program.
+-		GLES20.glAttachShader(mProgram, vertexShaderHandle);			
+-
+-		// Bind the fragment shader to the program.
+-		GLES20.glAttachShader(mProgram, fragmentShaderHandle);
+-
+-		// Bind attributes
+-		GLES20.glBindAttribLocation(mProgram, 0, "a_Position");
+-		GLES20.glBindAttribLocation(mProgram, 1, "a_Color");
+-
+-		// Link the two shaders together into a program.
+-		GLES20.glLinkProgram(mProgram);
+-
+-		// Get the link status.
+-		final int[] linkStatus = new int[1];
+-		GLES20.glGetProgramiv(mProgram, GLES20.GL_LINK_STATUS, linkStatus, 0);
+-
+-		// If the link failed, delete the program.
+-		if (linkStatus[0] == 0) 
+-		{				
+-			GLES20.glDeleteProgram(mProgram);
+-			mProgram = 0;
+-		}
+-		
+-		for (int i = 0; i < triangleVert.length; i++)
+-		{
+-			mMatrixHandle = GLES20.glGetUniformLocation(mProgram, "u_MVPMatrix");        
+-	        mPositionHandle = GLES20.glGetAttribLocation(mProgram, "a_Position");
+-	        mColorHandle = GLES20.glGetAttribLocation(mProgram, "a_Color");
+-		}
+-        
+-        // Add program to OpenGL environment
+-        GLES20.glUseProgram(mProgram);
+-    }
+-    
+-    public void onSurfaceChanged(GL10 unused, int width, int height) 
+-    {
+-        // Adjust the viewport based on geometry changes,
+-        // such as screen rotation
+-        GLES20.glViewport(0, 0, width, height);
+-        
+-		// Create a new perspective projection matrix. The height will stay the same
+-		// while the width will vary as per aspect ratio.
+-		final float ratio = (float) width / height;
+-		
+-		mProjectionMatrix = new float[triangleVert.length][16];
+-		for (int i = 0; i < triangleVert.length; i++)
+-			Matrix.frustumM(mProjectionMatrix[i], 0, -ratio*1.4f, ratio*1.4f, -1.4f, 1.4f, 1.4f, 14f);
+-    }
+-    
+-    public void onDrawFrame(GL10 glUnused) 
+-    {
+-    	// Draw background color
+-    	GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT);
+-    	
+-    	mModelMatrix = new float[triangleVert.length][16];
+-        // Draw the triangle facing straight on.
+-    	for (int i = 0; i < triangleVert.length; i++)
+-    		Matrix.setIdentityM(mModelMatrix[i], 0);
+-    		
+-    	mMVPMatrix = new float[triangleVert.length][16];
+-    	draw(triangleVert); 
+-
+-    }
+-
+-    private void draw(final FloatBuffer[] aTriangleBuffer)
+-    {
+-    	for (int i = 0; i < aTriangleBuffer.length; i++)
+-    	{
+-	        // Pass in the position information
+-	        aTriangleBuffer[i].position(mPositionOffset);
+-	        GLES20.glVertexAttribPointer(mPositionHandle, mPositionDataSize, GLES20.GL_FLOAT, false,
+-	                				     mStrideBytes, aTriangleBuffer[i]);
+-	        
+-	        GLES20.glEnableVertexAttribArray(mPositionHandle);
+-	     
+-	        
+-	        // Pass in the color information
+-	        aTriangleBuffer[i].position(mColorOffset);
+-	        GLES20.glVertexAttribPointer(mColorHandle, mColorDataSize, GLES20.GL_FLOAT, false,
+-	                					 mStrideBytes, aTriangleBuffer[i]);
+-	        
+-	        GLES20.glEnableVertexAttribArray(mColorHandle);
+-	        
+-	        Matrix.setRotateM(mModelMatrix[i], 0, mAngle, 0, 0, -1.0f);
+-
+-			// This multiplies the view matrix by the model matrix, and stores the result in the MVP matrix
+-	        // (which currently contains model * view).
+-	        Matrix.multiplyMM(mMVPMatrix[i], 0, mViewMatrix[i], 0, mModelMatrix[i], 0);
+-	        
+-	        // This multiplies the modelview matrix by the projection matrix, and stores the result in the MVP matrix
+-	        // (which now contains model * view * projection).
+-	        Matrix.multiplyMM(mMVPMatrix[i], 0, mProjectionMatrix[i], 0, mMVPMatrix[i], 0);
+-	        
+-	        GLES20.glUniformMatrix4fv(mMatrixHandle, 1, false, mMVPMatrix[i], 0);
+-	        
+-	        // Draw the triangle
+-	        GLES20.glDrawArrays(GLES20.GL_TRIANGLES, 0, 3);
+-	        
+-	        // Disable vertex array
+-	        GLES20.glDisableVertexAttribArray(mPositionHandle);
+-    	}
+-    }
+-
+-}
+Index: ../trunk-jpl/src/android/ISSM_Visual/src/com/example/issm_visual/MyGLSurfaceView.java
+===================================================================
+--- ../trunk-jpl/src/android/ISSM_Visual/src/com/example/issm_visual/MyGLSurfaceView.java	(revision 14079)
++++ ../trunk-jpl/src/android/ISSM_Visual/src/com/example/issm_visual/MyGLSurfaceView.java	(revision 14080)
+@@ -1,82 +0,0 @@
+-package com.example.issm_visual;
+-
+-import android.content.Context;
+-import android.opengl.GLSurfaceView;
+-import android.view.MotionEvent;
+-
+-
+-class MyGLSurfaceView extends GLSurfaceView 
+-{
+-	private MyGLRenderer mRend;
+-    public MyGLSurfaceView(Context context) 
+-    {
+-        super(context);
+-
+-        // Create an OpenGL ES 2.0 context.
+-        setEGLContextClientVersion(2);
+-        
+-        final int NMAX_TRIANGLES = 2000;
+-        final int MAX_VERTICES = 21;
+-        
+-        float f[][] = new float[NMAX_TRIANGLES][MAX_VERTICES];
+-        int n, random;
+-		for (int i = 0; i < f.length; i++)
+-		{
+-			for (int j = 0; j < MAX_VERTICES; j++)
+-			{
+-				if (j == 6 || j == 13 || j == 20) continue;
+-				n = 1;
+-		        random = (int)(Math.floor((Math.random()*10)+1));
+-		        if (random <= 5) n = -1;
+-		        
+-				f[i][j] = (float)(Math.random()*n);
+-			}
+-		}
+-
+-        mRend = new MyGLRenderer(f);
+-        
+-        // Set the Renderer for drawing on the GLSurfaceView
+-        setRenderer(mRend);
+-
+-        // Render the view only when there is a change in the drawing data
+-        setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY);
+-    }
+-    
+-    private final float TOUCH_SCALE_FACTOR = 180.0f / 320;
+-    private float mPreviousX;
+-    
+-    private float mPreviousY;
+-    @Override
+-    public boolean onTouchEvent(MotionEvent e) {
+-        // MotionEvent reports input details from the touch screen
+-        // and other input controls. In this case, you are only
+-        // interested in events where the touch position changed.
+-
+-        float x = e.getX();
+-        float y = e.getY();
+-
+-        switch (e.getAction()) {
+-            case MotionEvent.ACTION_MOVE:
+-
+-                float dx = x - mPreviousX;
+-                float dy = y - mPreviousY;
+-
+-                // reverse direction of rotation above the mid-line
+-                if (y > getHeight() / 2) {
+-                  dx = dx * -1 ;
+-                }
+-
+-                // reverse direction of rotation to left of the mid-line
+-                if (x < getWidth() / 2) {
+-                  dy = dy * -1 ;
+-                }
+-
+-                mRend.mAngle += (dx + dy) * TOUCH_SCALE_FACTOR;  // = 180.0f / 320
+-                requestRender();
+-        }
+-
+-        mPreviousX = x;
+-        mPreviousY = y;
+-        return true;
+-    }
+-}
+\ No newline at end of file
+Index: ../trunk-jpl/src/android/ISSM_Visual/src/gov/nasa/jpl/issm/visual/ISSMVisual.java
+===================================================================
+--- ../trunk-jpl/src/android/ISSM_Visual/src/gov/nasa/jpl/issm/visual/ISSMVisual.java	(revision 0)
++++ ../trunk-jpl/src/android/ISSM_Visual/src/gov/nasa/jpl/issm/visual/ISSMVisual.java	(revision 14080)
+@@ -0,0 +1,95 @@
++package gov.nasa.jpl.issm.visual;
++
++
++import android.app.Activity;
++import android.content.DialogInterface.OnClickListener;
++import android.opengl.GLSurfaceView;
++import android.os.Bundle;
++import android.view.Menu;
++import android.view.View;
++import android.widget.Button;
++import android.widget.FrameLayout;
++import android.widget.SeekBar;
++import android.widget.SeekBar.OnSeekBarChangeListener;
++import android.widget.TextView;
++
++public class ISSMVisual extends Activity implements OnSeekBarChangeListener
++{
++	private SeekBar bar;
++    private TextView /*txtStatus,*/ txtValue;
++    private GLSurfaceView mGLView;
++	private FrameLayout frame;
++	
++    @Override
++    public void onCreate(Bundle savedInstanceState) 
++    {
++        super.onCreate(savedInstanceState);
++        setContentView(R.layout.activity_issmvisual);
++        
++        bar = (SeekBar)findViewById(R.id.seekBar); // make seekbar object
++        bar.setOnSeekBarChangeListener(this); // set seekbar listener
++        txtValue = (TextView)findViewById(R.id.value);
++        Button reset = (Button)findViewById(R.id.button1);
++        reset.setOnClickListener(new View.OnClickListener()
++        {
++            public void onClick(View v) 
++            {
++            	frame.removeView(mGLView);
++            	mGLView = new MyGLSurfaceView(ISSMVisual.this);
++            	frame.addView(mGLView);
++            }
++        });
++        //txtStatus = (TextView)findViewById(R.id.status);
++        
++        mGLView = new MyGLSurfaceView(this);
++        frame = (FrameLayout)findViewById(R.id.frame);
++        frame.addView(mGLView);
++    }
++	public void onProgressChanged(SeekBar seekBar, int val,
++    		boolean fromUser) 
++    {
++    	// change progress text label with current Seekbar value
++    	txtValue.setText("alpha value = " + val);
++    	//txtStatus.setText("Status: changing");
++    }
++	
++    public void onStartTrackingTouch(SeekBar seekBar) {/*txtStatus.setText("Status: Starting to track touch");*/}
++    
++    public void onStopTrackingTouch(SeekBar seekBar) 
++    {
++    	seekBar.setSecondaryProgress(seekBar.getProgress()); // set the shade of the previous value.
++    	
++    	//txtStatus.setText("Status: Ended tracking touch");
++    	frame.removeView(mGLView);
++    	mGLView = new MyGLSurfaceView(this);
++        frame.addView(mGLView);
++    }
++    
++    @Override
++    protected void onPause() 
++    {
++        super.onPause();
++        // The following call pauses the rendering thread.
++        // If your OpenGL application is memory intensive,
++        // you should consider de-allocating objects that
++        // consume significant memory here.
++        mGLView.onPause();
++    }
++    
++    @Override
++    protected void onResume() 
++    {
++        super.onResume();
++        // The following call resumes a paused rendering thread.
++        // If you de-allocated graphic objects for onPause()
++        // this is a good place to re-allocate them.
++        mGLView.onResume();
++    }
++
++    @Override
++    public boolean onCreateOptionsMenu(Menu menu) 
++    {
++        getMenuInflater().inflate(R.menu.activity_issmvisual, menu);
++        return true;
++    }
++}
+Index: ../trunk-jpl/src/android/ISSM_Visual/src/gov/nasa/jpl/issm/visual/MyGLRenderer.java
+===================================================================
+--- ../trunk-jpl/src/android/ISSM_Visual/src/gov/nasa/jpl/issm/visual/MyGLRenderer.java	(revision 0)
++++ ../trunk-jpl/src/android/ISSM_Visual/src/gov/nasa/jpl/issm/visual/MyGLRenderer.java	(revision 14080)
+@@ -0,0 +1,294 @@
++/*
++ * Copyright (C) 2012 The Android Open Source Project
++ *
++ * Licensed under the Apache License, Version 2.0 (the "License");
++ * you may not use this file except in compliance with the License.
++ * You may obtain a copy of the License at
++ *
++ *      http://www.apache.org/licenses/LICENSE-2.0
++ *
++ * Unless required by applicable law or agreed to in writing, software
++ * distributed under the License is distributed on an "AS IS" BASIS,
++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
++ * See the License for the specific language governing permissions and
++ * limitations under the License.
++ */
++
++package gov.nasa.jpl.issm.visual;
++import java.nio.ByteBuffer;
++import java.nio.ByteOrder;
++import java.nio.FloatBuffer;
++
++import javax.microedition.khronos.egl.EGLConfig;
++import javax.microedition.khronos.opengles.GL10;
++
++import android.opengl.GLES20;
++import android.opengl.GLSurfaceView;
++import android.opengl.Matrix;
++
++public class MyGLRenderer implements GLSurfaceView.Renderer 
++{
++	public volatile float mAngle;
++	
++	/**
++	 * Store the model matrix. This matrix is used to move models from object space (where each model can be thought
++	 * of being located at the center of the universe) to world space.
++	 */
++	private float[][] mModelMatrix;
++	
++	/**
++	 * Store the view matrix. This can be thought of as our camera. This matrix transforms world space to eye space;
++	 * it positions things relative to our eye.
++	 */
++	private float[][] mViewMatrix;
++
++	/** Store the projection matrix. This is used to project the scene onto a 2D viewport. */
++	private float[][] mProjectionMatrix;
++
++	/** Allocate storage for the final combined matrix. This will be passed into the shader program. */
++	private float[][] mMVPMatrix;
++
++	/** This will be used to pass in the transformation matrix. */
++	private int mMatrixHandle;
++	
++    private FloatBuffer[] triangleVert;
++    
++    private float[][] triangleData2DArr;
++    
++    private int mPositionHandle;
++    
++    private int mColorHandle;
++    
++	/** How many bytes per float. */
++    private final int mBytesPerFloat = 4;
++
++    /** How many elements per vertex. */
++    private final int mStrideBytes = 7 * mBytesPerFloat;
++
++    /** Offset of the position data. */
++    private final int mPositionOffset = 0;
++
++    /** Size of the position data in elements. */
++    private final int mPositionDataSize = 3;
++
++    /** Offset of the color data. */
++    private final int mColorOffset = 3;
++
++    /** Size of the color data in elements. */
++    private final int mColorDataSize = 4;	
++
++    public MyGLRenderer(float[][] vertices)
++    {	
++    	triangleData2DArr = new float[vertices.length][21];
++    	triangleVert = new FloatBuffer[vertices.length];
++    	
++    	for (int i = 0; i < vertices.length; i++)
++    	{
++    		for (int j = 0; j < 21; j++)
++    			triangleData2DArr[i][j] = vertices[i][j]; 
++    	}
++	    		
++	    // initialize vertex byte buffer for shape coordinates
++    	for (int i = 0; i < vertices.length; i++)
++    	{
++    		triangleVert[i] = ByteBuffer.allocateDirect(triangleData2DArr[i].length * mBytesPerFloat)
++    													.order(ByteOrder.nativeOrder()).asFloatBuffer();
++    		triangleVert[i].put(triangleData2DArr[i]).position(0);
++    	}
++    }
++    
++    public void onSurfaceCreated(GL10 unused, EGLConfig config) 
++    {
++        // Set the background frame color
++        GLES20.glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
++        
++		// Position the eye behind the origin.
++		final float eyeX = 0.0f;
++		final float eyeY = 0.0f;
++		final float eyeZ = 1.5f;
++
++		// We are looking toward the distance
++		final float lookX = 0.0f;
++		final float lookY = 0.0f;
++		final float lookZ = -5.0f;
++
++		// Set our up vector. This is where our head would be pointing were we holding the camera.
++		final float upX = 0.0f;
++		final float upY = 1.0f;
++		final float upZ = 0.0f;
++
++		// Set the view matrix. This matrix can be said to represent the camera position.
++		// NOTE: In OpenGL 1, a ModelView matrix is used, which is a combination of a model and
++		// view matrix. In OpenGL 2, we can keep track of these matrices separately if we choose.
++		mViewMatrix = new float[triangleVert.length][16];
++		
++		for (int i = 0; i < triangleVert.length; i++)
++			Matrix.setLookAtM(mViewMatrix[i], 0, eyeX, eyeY, eyeZ, lookX, lookY, lookZ, upX, upY, upZ);
++        
++		final String vertexShader =
++				"uniform mat4 u_MVPMatrix;      \n"		// A constant representing the combined model/view/projection matrix.
++			  + "attribute vec4 a_Position;     \n"		// Per-vertex position information we will pass in.
++			  + "attribute vec4 a_Color;        \n"		// Per-vertex color information we will pass in.			  
++			  + "varying vec4 v_Color;          \n"		// This will be passed into the fragment shader.
++			  + "void main()                    \n"		// The entry point for our vertex shader.
++			  + "{                              \n"
++			  + "   v_Color = a_Color;          \n"		// Pass the color through to the fragment shader. 
++			  											// It will be interpolated across the triangle.
++			  + "   gl_Position = u_MVPMatrix   \n" 	// gl_Position is a special variable used to store the final position.
++			  + "               * a_Position;   \n"     // Multiply the vertex by the matrix to get the final point in 			                                            			 
++			  + "}                              \n";    // normalized screen coordinates.
++
++			final String fragmentShader =
++				"precision mediump float;       \n"		// Set the default precision to medium. We don't need as high of a											// precision in the fragment shader.				
++			  + "varying vec4 v_Color;          \n"		// This is the color from the vertex shader interpolated across the 
++			  											// triangle per fragment.			  
++			  + "void main()                    \n"		// The entry point for our fragment shader.
++			  + "{                              \n"
++			  + "   gl_FragColor = v_Color;     \n"		// Pass the color directly through the pipeline.		  
++			  + "}                              \n";												
++
++    	   
++        int vertexShaderHandle = GLES20.glCreateShader(GLES20.GL_VERTEX_SHADER);
++		// Pass in the shader source.
++		GLES20.glShaderSource(vertexShaderHandle, vertexShader);
++
++		// Compile the shader.
++		GLES20.glCompileShader(vertexShaderHandle);
++
++		// Get the compilation status.
++		final int[] compileStatus1 = new int[1];
++		GLES20.glGetShaderiv(vertexShaderHandle, GLES20.GL_COMPILE_STATUS, compileStatus1, 0);
++
++		// If the compilation failed, delete the shader.
++		if (compileStatus1[0] == 0) 
++		{				
++			GLES20.glDeleteShader(vertexShaderHandle);
++			vertexShaderHandle = 0;
++		}
++		
++         
++    	int fragmentShaderHandle = GLES20.glCreateShader(GLES20.GL_FRAGMENT_SHADER);
++		// Pass in the shader source.
++		GLES20.glShaderSource(fragmentShaderHandle, fragmentShader);
++
++		// Compile the shader.
++		GLES20.glCompileShader(fragmentShaderHandle);
++
++		// Get the compilation status.
++		final int[] compileStatus2 = new int[1];
++		GLES20.glGetShaderiv(fragmentShaderHandle, GLES20.GL_COMPILE_STATUS, compileStatus2, 0);
++
++		// If the compilation failed, delete the shader.
++		if (compileStatus2[0] == 0) 
++		{				
++			GLES20.glDeleteShader(fragmentShaderHandle);
++			fragmentShaderHandle = 0;
++		}
++
++        
++        int mProgram = GLES20.glCreateProgram();
++		// Bind the vertex shader to the program.
++		GLES20.glAttachShader(mProgram, vertexShaderHandle);			
++
++		// Bind the fragment shader to the program.
++		GLES20.glAttachShader(mProgram, fragmentShaderHandle);
++
++		// Bind attributes
++		GLES20.glBindAttribLocation(mProgram, 0, "a_Position");
++		GLES20.glBindAttribLocation(mProgram, 1, "a_Color");
++
++		// Link the two shaders together into a program.
++		GLES20.glLinkProgram(mProgram);
++
++		// Get the link status.
++		final int[] linkStatus = new int[1];
++		GLES20.glGetProgramiv(mProgram, GLES20.GL_LINK_STATUS, linkStatus, 0);
++
++		// If the link failed, delete the program.
++		if (linkStatus[0] == 0) 
++		{				
++			GLES20.glDeleteProgram(mProgram);
++			mProgram = 0;
++		}
++		
++		for (int i = 0; i < triangleVert.length; i++)
++		{
++			mMatrixHandle = GLES20.glGetUniformLocation(mProgram, "u_MVPMatrix");        
++	        mPositionHandle = GLES20.glGetAttribLocation(mProgram, "a_Position");
++	        mColorHandle = GLES20.glGetAttribLocation(mProgram, "a_Color");
++		}
++        
++        // Add program to OpenGL environment
++        GLES20.glUseProgram(mProgram);
++    }
++    
++    public void onSurfaceChanged(GL10 unused, int width, int height) 
++    {
++        // Adjust the viewport based on geometry changes,
++        // such as screen rotation
++        GLES20.glViewport(0, 0, width, height);
++        
++		// Create a new perspective projection matrix. The height will stay the same
++		// while the width will vary as per aspect ratio.
++		final float ratio = (float) width / height;
++		
++		mProjectionMatrix = new float[triangleVert.length][16];
++		for (int i = 0; i < triangleVert.length; i++)
++			Matrix.frustumM(mProjectionMatrix[i], 0, -ratio*1.4f, ratio*1.4f, -1.4f, 1.4f, 1.4f, 14f);
++    }
++    
++    public void onDrawFrame(GL10 glUnused) 
++    {
++    	// Draw background color
++    	GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT);
++    	
++    	mModelMatrix = new float[triangleVert.length][16];
++        // Draw the triangle facing straight on.
++    	for (int i = 0; i < triangleVert.length; i++)
++    		Matrix.setIdentityM(mModelMatrix[i], 0);
++    		
++    	mMVPMatrix = new float[triangleVert.length][16];
++    	draw(triangleVert); 
++
++    }
++
++    private void draw(final FloatBuffer[] aTriangleBuffer)
++    {
++    	for (int i = 0; i < aTriangleBuffer.length; i++)
++    	{
++	        // Pass in the position information
++	        aTriangleBuffer[i].position(mPositionOffset);
++	        GLES20.glVertexAttribPointer(mPositionHandle, mPositionDataSize, GLES20.GL_FLOAT, false,
++	                				     mStrideBytes, aTriangleBuffer[i]);
++	        
++	        GLES20.glEnableVertexAttribArray(mPositionHandle);
++	     
++	        
++	        // Pass in the color information
++	        aTriangleBuffer[i].position(mColorOffset);
++	        GLES20.glVertexAttribPointer(mColorHandle, mColorDataSize, GLES20.GL_FLOAT, false,
++	                					 mStrideBytes, aTriangleBuffer[i]);
++	        
++	        GLES20.glEnableVertexAttribArray(mColorHandle);
++	        
++	        Matrix.setRotateM(mModelMatrix[i], 0, mAngle, 0, 0, -1.0f);
++
++			// This multiplies the view matrix by the model matrix, and stores the result in the MVP matrix
++	        // (which currently contains model * view).
++	        Matrix.multiplyMM(mMVPMatrix[i], 0, mViewMatrix[i], 0, mModelMatrix[i], 0);
++	        
++	        // This multiplies the modelview matrix by the projection matrix, and stores the result in the MVP matrix
++	        // (which now contains model * view * projection).
++	        Matrix.multiplyMM(mMVPMatrix[i], 0, mProjectionMatrix[i], 0, mMVPMatrix[i], 0);
++	        
++	        GLES20.glUniformMatrix4fv(mMatrixHandle, 1, false, mMVPMatrix[i], 0);
++	        
++	        // Draw the triangle
++	        GLES20.glDrawArrays(GLES20.GL_TRIANGLES, 0, 3);
++	        
++	        // Disable vertex array
++	        GLES20.glDisableVertexAttribArray(mPositionHandle);
++    	}
++    }
++
++}
+Index: ../trunk-jpl/src/android/ISSM_Visual/src/gov/nasa/jpl/issm/visual/MyGLSurfaceView.java
+===================================================================
+--- ../trunk-jpl/src/android/ISSM_Visual/src/gov/nasa/jpl/issm/visual/MyGLSurfaceView.java	(revision 0)
++++ ../trunk-jpl/src/android/ISSM_Visual/src/gov/nasa/jpl/issm/visual/MyGLSurfaceView.java	(revision 14080)
+@@ -0,0 +1,82 @@
++package gov.nasa.jpl.issm.visual;
++
++import android.content.Context;
++import android.opengl.GLSurfaceView;
++import android.view.MotionEvent;
++
++
++class MyGLSurfaceView extends GLSurfaceView 
++{
++	private MyGLRenderer mRend;
++    public MyGLSurfaceView(Context context) 
++    {
++        super(context);
++
++        // Create an OpenGL ES 2.0 context.
++        setEGLContextClientVersion(2);
++        
++        final int NMAX_TRIANGLES = 2000;
++        final int MAX_VERTICES = 21;
++        
++        float f[][] = new float[NMAX_TRIANGLES][MAX_VERTICES];
++        int n, random;
++		for (int i = 0; i < f.length; i++)
++		{
++			for (int j = 0; j < MAX_VERTICES; j++)
++			{
++				if (j == 6 || j == 13 || j == 20) continue;
++				n = 1;
++		        random = (int)(Math.floor((Math.random()*10)+1));
++		        if (random <= 5) n = -1;
++		        
++				f[i][j] = (float)(Math.random()*n);
++			}
++		}
++
++        mRend = new MyGLRenderer(f);
++        
++        // Set the Renderer for drawing on the GLSurfaceView
++        setRenderer(mRend);
++
++        // Render the view only when there is a change in the drawing data
++        setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY);
++    }
++    
++    private final float TOUCH_SCALE_FACTOR = 180.0f / 320;
++    private float mPreviousX;
++    
++    private float mPreviousY;
++    @Override
++    public boolean onTouchEvent(MotionEvent e) {
++        // MotionEvent reports input details from the touch screen
++        // and other input controls. In this case, you are only
++        // interested in events where the touch position changed.
++
++        float x = e.getX();
++        float y = e.getY();
++
++        switch (e.getAction()) {
++            case MotionEvent.ACTION_MOVE:
++
++                float dx = x - mPreviousX;
++                float dy = y - mPreviousY;
++
++                // reverse direction of rotation above the mid-line
++                if (y > getHeight() / 2) {
++                  dx = dx * -1 ;
++                }
++
++                // reverse direction of rotation to left of the mid-line
++                if (x < getWidth() / 2) {
++                  dy = dy * -1 ;
++                }
++
++                mRend.mAngle += (dx + dy) * TOUCH_SCALE_FACTOR;  // = 180.0f / 320
++                requestRender();
++        }
++
++        mPreviousX = x;
++        mPreviousY = y;
++        return true;
++    }
++}
+\ No newline at end of file
Index: /issm/oecreview/Archive/14064-14311/ISSM-14080-14081.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14080-14081.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14080-14081.diff	(revision 14312)
@@ -0,0 +1,183 @@
+Index: ../trunk-jpl/src/android/ISSM/jni/issmlib/libISSMCore.a
+===================================================================
+Cannot display: file marked as a binary type.
+svn:mime-type = application/octet-stream
+Index: ../trunk-jpl/src/android/ISSM/jni/Main.cpp
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/Main.cpp	(revision 14080)
++++ ../trunk-jpl/src/android/ISSM/jni/Main.cpp	(revision 14081)
+@@ -3,57 +3,83 @@
+ #include "../../../c/issm.h"
+ #include <cstddef>
+ #include <stdio.h>
+-///////////////////////////////////////////////////////////////////////////////////////////
++
+ namespace com_example_issm
+ {
++	/*Global variables{{{*/
+ 	fac* f;
+ 	FemModel *fm;
+-//------------------------------------------------------------------------------------
+-	jint initilize(JNIEnv *env, jclass clazz, jstring file)
++	/*}}}*/
++	jint initialize(JNIEnv *env, jclass clazz, jstring jsolution_type, jstring jabsfile, jstring jrelfile) /*{{{*/
+ 	{
+-		char *nativefile = (char*)env->GetStringUTFChars(file,0);
++		
++		/*arguments to constructor: */
++		int argc; //arguments to constructor.
++		char** argv = NULL;
++		COMM    communicator = 1; //fake communicator for constructor
++		const char* issmname = "issm.exe";
++		char *solution_type = NULL;
++		char *absfile = NULL;
++		char *relfile = NULL;
+ 
++		/*retrieve from java machine: */
++		solution_type = (char*)env->GetStringUTFChars(jsolution_type,0);
++		absfile = (char*)env->GetStringUTFChars(jabsfile,0);
++		relfile = (char*)env->GetStringUTFChars(jrelfile,0);
++
++		/*creat arguments to call constructor for FemModel: */
++		argc=4; 
++		argv=(char**)malloc(argc*sizeof(char*));
++		argv[0]=(char*)issmname;
++		argv[1]=solution_type;
++		argv[2]=absfile;
++		argv[3]=relfile;
++
+ 		f = new fac();
+ 
+-		//call Model constructor passing in infile as File Descriptor parameter.
+-		fm  = new FemModel(nativefile);
++		/*call Model constructor passing in infile as File Descriptor parameter.*/
++		fm  = new FemModel(argc,argv,communicator);
+ 
+-		env->ReleaseStringUTFChars(file, nativefile); //must realease the char*
++		/*release strings: */
++		env->ReleaseStringUTFChars(jsolution_type, solution_type); //must realease the char*
++		env->ReleaseStringUTFChars(jabsfile, absfile); //must realease the char*
++		env->ReleaseStringUTFChars(jrelfile, relfile); //must realease the char*
++	
++		/*figure out size of solution: */
+ 		//jint size = (jint) fm->bufferSize();
+-		//return size;
++		jint size =7;
++		
++		return size;
+ 
+-		return 0; //return 0 for now.
+ 	}
+-//------------------------------------------------------------------------------------
+-	//fill out the first two slots, extract the same way in java using get(int position)
+-	void solve(JNIEnv *env, jclass clazz , jint alpha, jobject buf)
++	/*}}}*/
++	void solve(JNIEnv *env, jclass clazz , jint alpha, jobject buf) /*{{{*/
+ 	{
++		/*fill out the first two slots, extract the same way in java using get(int position)*/
+ 		jdouble *dBuf = (jdouble *)env->GetDirectBufferAddress(buf);
+ 
+ 		//pass bBuff to fem model to allocate data
+ 		// fm -> solve(dBuf, alpha);
+ 
+-	}
+-//------------------------------------------------------------------------------------
+-	jlong factorial(JNIEnv *env, jclass clazz, jlong n)
++	}/*}}}*/
++	jlong factorial(JNIEnv *env, jclass clazz, jlong n) /*{{{*/
+ 	{
+ 		if( f != NULL)
+ 			return (jlong) (f->factorial(n));
+ 		return 0;
+ 	}
+-
+-//------------------------------------------------------------------------------------
+-	static JNINativeMethod method_table[] =
++	/*}}}*/
++	static JNINativeMethod method_table[] = /*{{{*/
+ 	{
+ 			{"fac"      	,     "(J)J" 	, (void *) factorial},
+-			{"createISSMModel"   ,"(Ljava/lang/String;)I"  , (void *) initilize},
++			{"createISSMModel"   ,"(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I"  , (void *) initialize},
+ 			{"processBuffer", "(ILjava/nio/DoubleBuffer;)V", (void *) solve}
+ 	};
++	/*}}}*/
+ }
+-//------------------------------------------------------------------------------------
++
+ using namespace com_example_issm;
+-
+-extern "C" jint JNI_OnLoad(JavaVM* vm, void* reserved)
++extern "C" jint JNI_OnLoad(JavaVM* vm, void* reserved) /*{{{*/
+ {
+     JNIEnv* env;
+     if (vm->GetEnv(reinterpret_cast<void**>(&env), JNI_VERSION_1_6) != JNI_OK) {
+@@ -71,4 +97,4 @@
+     	else return -1;
+     }
+ }
+-///////////////////////////////////////////////////////////////////////////////////////////
++/*}}}*/
+Index: ../trunk-jpl/src/android/ISSM/project.properties
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/project.properties	(revision 14080)
++++ ../trunk-jpl/src/android/ISSM/project.properties	(revision 14081)
+@@ -11,4 +11,4 @@
+ #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
+ 
+ # Project target.
+-target=Google Inc.:Google APIs:16
++target=android-14
+Index: ../trunk-jpl/src/android/ISSM/src/com/example/issm/ISSM.java
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/src/com/example/issm/ISSM.java	(revision 14080)
++++ ../trunk-jpl/src/android/ISSM/src/com/example/issm/ISSM.java	(revision 14081)
+@@ -54,13 +54,15 @@
+ //------------------------------------------------------------------------------------------------    
+     public void createModel()
+     {
++		String solution_type="DiagnosticSolution";
+     	String file = "";
+     	if( mapName.equals("greenland"))
+ 		{
+-    		file = "test102.petsc";
++    		file = "test102";
+ 		}
+-    	else file = "test102.petsc";
+-    	size = issmNative.createISSMModel(issmFolder + file);
++    	else file = "test102";
++
++    	size = issmNative.createISSMModel(solution_type,issmFolder + file,file);
+     }
+ //------------------------------------------------------------------------------------------------
+     public void fillBuffer()
+Index: ../trunk-jpl/src/android/ISSM/src/com/example/issm/IssmJni.java
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/src/com/example/issm/IssmJni.java	(revision 14080)
++++ ../trunk-jpl/src/android/ISSM/src/com/example/issm/IssmJni.java	(revision 14081)
+@@ -5,7 +5,7 @@
+ {
+ 	public native long fac(long n);
+ 	public native void processBuffer(int alpha, DoubleBuffer buff);
+-	public native int createISSMModel(String file);
++	public native int createISSMModel(String solution_type, String absfile, String relfile);
+ 	static 
+ 	{
+         System.loadLibrary("IssmJni");
+Index: ../trunk-jpl/src/android/ISSM
+===================================================================
+--- ../trunk-jpl/src/android/ISSM	(revision 14080)
++++ ../trunk-jpl/src/android/ISSM	(revision 14081)
+
+Property changes on: ../trunk-jpl/src/android/ISSM
+___________________________________________________________________
+Modified: svn:ignore
+## -1,6 +1,7 ##
+-gen
++gen*
+ .settings
+ libs
+ obj
+ Makefile
+ Makefile.in
++bin
Index: /issm/oecreview/Archive/14064-14311/ISSM-14081-14082.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14081-14082.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14081-14082.diff	(revision 14312)
@@ -0,0 +1,157 @@
+Index: ../trunk-jpl/src/android/ISSM/jni/issmlib/Android.mk
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/issmlib/Android.mk	(revision 14081)
++++ ../trunk-jpl/src/android/ISSM/jni/issmlib/Android.mk	(revision 14082)
+@@ -1,6 +1,7 @@
+ LOCAL_PATH:= $(call my-dir)
+ include $(CLEAR_VARS)
+ LOCAL_MODULE    := libISSMCore
++LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog 
+ LOCAL_SRC_FILES := libISSMCore.a
+ LOCAL_EXPORT_C_INCLUDES := $(ISSM_DIR)
+ include $(PREBUILT_STATIC_LIBRARY)
+Index: ../trunk-jpl/src/android/ISSM/jni/issmlib/libISSMCore.a
+===================================================================
+Cannot display: file marked as a binary type.
+svn:mime-type = application/octet-stream
+Index: ../trunk-jpl/src/android/ISSM/jni/Main.cpp
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/Main.cpp	(revision 14081)
++++ ../trunk-jpl/src/android/ISSM/jni/Main.cpp	(revision 14082)
+@@ -1,5 +1,6 @@
+ #include <jni.h>
+ #include "../../../c/android/fac.h"
++#include <android/log.h>
+ #include "../../../c/issm.h"
+ #include <cstddef>
+ #include <stdio.h>
+@@ -44,10 +45,10 @@
+ 		env->ReleaseStringUTFChars(jsolution_type, solution_type); //must realease the char*
+ 		env->ReleaseStringUTFChars(jabsfile, absfile); //must realease the char*
+ 		env->ReleaseStringUTFChars(jrelfile, relfile); //must realease the char*
+-	
++
+ 		/*figure out size of solution: */
+ 		//jint size = (jint) fm->bufferSize();
+-		jint size =7;
++		jint size =8;
+ 		
+ 		return size;
+ 
+Index: ../trunk-jpl/src/android/ISSM/jni/Android.mk
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/Android.mk	(revision 14081)
++++ ../trunk-jpl/src/android/ISSM/jni/Android.mk	(revision 14082)
+@@ -11,7 +11,8 @@
+ LOCAL_PATH := $(my_LOCAL_PATH)
+ LOCAL_ALLOW_UNDEFINED_SYMBOLS := true
+ LOCAL_CFLAGS := -Wno-psabi -DHAVE_CONFIG_H
+-LOCAL_LDLIBS := -llog -ldl -lm
++LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog -ldl -lm
++#LOCAL_LDLIBS := -llog -ldl -lm
+ LOCAL_MODULE := IssmJni
+ LOCAL_SRC_FILES := Main.cpp 
+ LOCAL_STATIC_LIBRARIES := libISSMCore libgsl libgslcblas
+Index: ../trunk-jpl/src/android/ISSM/src/com/example/issm/ISSM.java
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/src/com/example/issm/ISSM.java	(revision 14081)
++++ ../trunk-jpl/src/android/ISSM/src/com/example/issm/ISSM.java	(revision 14082)
+@@ -58,11 +58,11 @@
+     	String file = "";
+     	if( mapName.equals("greenland"))
+ 		{
+-    		file = "test102";
++    		file = "greenland";
+ 		}
+-    	else file = "test102";
++    	else file = "antarctica";
+ 
+-    	size = issmNative.createISSMModel(solution_type,issmFolder + file,file);
++    	size = issmNative.createISSMModel(solution_type,issmFolder,file);
+     }
+ //------------------------------------------------------------------------------------------------
+     public void fillBuffer()
+Index: ../trunk-jpl/src/android/ISSM_Visual/bin/AndroidManifest.xml
+===================================================================
+--- ../trunk-jpl/src/android/ISSM_Visual/bin/AndroidManifest.xml	(revision 14081)
++++ ../trunk-jpl/src/android/ISSM_Visual/bin/AndroidManifest.xml	(revision 14082)
+@@ -1,5 +1,5 @@
+ <manifest xmlns:android="http://schemas.android.com/apk/res/android"
+-    package="com.example.issm_visual"
++    package="gov.nasa.jpl.issm.visual"
+     android:versionCode="1"
+     android:versionName="1.0" >
+ 
+Index: ../trunk-jpl/src/android/ISSM_Visual/bin/resources.ap_
+===================================================================
+Cannot display: file marked as a binary type.
+svn:mime-type = application/octet-stream
+Index: ../trunk-jpl/src/android/ISSM_Visual/bin/classes.dex
+===================================================================
+Cannot display: file marked as a binary type.
+svn:mime-type = application/octet-stream
+Index: ../trunk-jpl/src/c/io/PrintfFunction.cpp
+===================================================================
+--- ../trunk-jpl/src/c/io/PrintfFunction.cpp	(revision 14081)
++++ ../trunk-jpl/src/c/io/PrintfFunction.cpp	(revision 14082)
+@@ -8,6 +8,10 @@
+ #include "../shared/shared.h"
+ #include "../include/include.h"
+ 
++#ifdef _HAVE_ANDROID_NDK_
++#include <android/log.h>
++#endif
++
+ int PrintfFunction(const char* format,...){
+ 	/*http://linux.die.net/man/3/vsnprintf*/
+ 
+@@ -57,7 +61,11 @@
+ 	my_rank=IssmComm::GetRank();
+ 
+ 	if(my_rank==0){
++		#ifdef _HAVE_ANDROID_JNI_
++		__android_log_print(ANDROID_LOG_INFO, "Native",message.c_str());
++		#else
+ 		printf("%s\n",message.c_str());
++		#endif
+ 	}
+ 	return 1;
+ }
+Index: ../trunk-jpl/src/c/Makefile.am
+===================================================================
+--- ../trunk-jpl/src/c/Makefile.am	(revision 14081)
++++ ../trunk-jpl/src/c/Makefile.am	(revision 14082)
+@@ -1,4 +1,4 @@
+-AM_CPPFLAGS = @DAKOTAINCL@ @SHAPELIBINCL@ @PETSCINCL@ @SLEPCINCL@ @MPIINCL@ @METISINCL@ @CHACOINCL@ @SCOTCHINCL@ @PLAPACKINCL@ @BLASLAPACKINCL@ @MKLINCL@ @MUMPSINCL@ @TRIANGLEINCL@ @SPAIINCL@ @HYPREINCL@ @PROMETHEUSINCL@ @SUPERLUINCL@ @SPOOLESINCL@ @PASTIXINCL@ @MLINCL@ @TAOINCL@ @ADIC2INCL@ @ADOLCINCL@ @GSLINCL@ @BOOSTINCL@
++AM_CPPFLAGS = @DAKOTAINCL@ @SHAPELIBINCL@ @PETSCINCL@ @SLEPCINCL@ @MPIINCL@ @METISINCL@ @CHACOINCL@ @SCOTCHINCL@ @PLAPACKINCL@ @BLASLAPACKINCL@ @MKLINCL@ @MUMPSINCL@ @TRIANGLEINCL@ @SPAIINCL@ @HYPREINCL@ @PROMETHEUSINCL@ @SUPERLUINCL@ @SPOOLESINCL@ @PASTIXINCL@ @MLINCL@ @TAOINCL@ @ADIC2INCL@ @ADOLCINCL@ @GSLINCL@ @BOOSTINCL@ @ANDROID_NDKINCL@
+ 
+ EXEEXT=$(ISSMEXT)
+ 
+Index: ../trunk-jpl/src/c/classes/FemModel.cpp
+===================================================================
+--- ../trunk-jpl/src/c/classes/FemModel.cpp	(revision 14081)
++++ ../trunk-jpl/src/c/classes/FemModel.cpp	(revision 14082)
+@@ -19,11 +19,6 @@
+ #include "../modules/modules.h"
+ 
+ /*Object constructors and destructor*/
+-/*FUNCTION FemModel::FemModel(char* filename) {{{*/
+-FemModel::FemModel(char* filename){
+-
+-}
+-/*}}}*/
+ /*FUNCTION FemModel::FemModel(int argc,char** argv){{{*/
+ FemModel::FemModel(int argc,char** argv,COMM incomm){
+ 
+Index: ../trunk-jpl/src/c/classes/FemModel.h
+===================================================================
+--- ../trunk-jpl/src/c/classes/FemModel.h	(revision 14081)
++++ ../trunk-jpl/src/c/classes/FemModel.h	(revision 14082)
+@@ -46,7 +46,6 @@
+ 		COMM        comm;                  //communicator for this particular model
+ 
+ 		/*constructors, destructors: */
+-		FemModel(char* filename);
+ 		FemModel(int argc,char** argv,COMM comm_init);
+ 		FemModel(char* rootpath, char* inputfilename, char* outputfilename, char* petscfilename, char* lockfilename, const int solution_type,const int* analyses,const int nummodels);
+ 		~FemModel();
Index: /issm/oecreview/Archive/14064-14311/ISSM-14082-14083.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14082-14083.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14082-14083.diff	(revision 14312)
@@ -0,0 +1,76 @@
+Index: ../trunk-jpl/src/android/ISSM/assets/Map/antarctica.bin
+===================================================================
+Cannot display: file marked as a binary type.
+svn:mime-type = application/octet-stream
+Index: ../trunk-jpl/src/android/ISSM/assets/Map/antarctica.bin
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/assets/Map/antarctica.bin	(revision 14082)
++++ ../trunk-jpl/src/android/ISSM/assets/Map/antarctica.bin	(revision 14083)
+
+Property changes on: ../trunk-jpl/src/android/ISSM/assets/Map/antarctica.bin
+___________________________________________________________________
+Added: svn:mime-type
+## -0,0 +1 ##
++application/octet-stream
+Index: ../trunk-jpl/src/android/ISSM/assets/Map/antarctica.petsc
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/assets/Map/antarctica.petsc	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/assets/Map/antarctica.petsc	(revision 14083)
+@@ -0,0 +1,19 @@
++%Petsc options file: test102.petsc written from Matlab solver array
++
+++NoneAnalysis
++-mat_type aij
++-ksp_type gmres
++-pc_type asm
++-sub_pc_type ilu
++-pc_asm_overlap 5
++-ksp_max_it 100
++-ksp_rtol 1e-15
++
+++DiagnosticVertAnalysis
++-mat_type aij
++-ksp_type gmres
++-pc_type asm
++-sub_pc_type ilu
++-pc_asm_overlap 5
++-ksp_max_it 100
++-ksp_rtol 1e-15
+Index: ../trunk-jpl/src/android/ISSM/assets/Map/greenland.bin
+===================================================================
+Cannot display: file marked as a binary type.
+svn:mime-type = application/octet-stream
+Index: ../trunk-jpl/src/android/ISSM/assets/Map/greenland.bin
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/assets/Map/greenland.bin	(revision 14082)
++++ ../trunk-jpl/src/android/ISSM/assets/Map/greenland.bin	(revision 14083)
+
+Property changes on: ../trunk-jpl/src/android/ISSM/assets/Map/greenland.bin
+___________________________________________________________________
+Added: svn:mime-type
+## -0,0 +1 ##
++application/octet-stream
+Index: ../trunk-jpl/src/android/ISSM/assets/Map/greenland.petsc
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/assets/Map/greenland.petsc	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/assets/Map/greenland.petsc	(revision 14083)
+@@ -0,0 +1,19 @@
++%Petsc options file: test102.petsc written from Matlab solver array
++
+++NoneAnalysis
++-mat_type aij
++-ksp_type gmres
++-pc_type asm
++-sub_pc_type ilu
++-pc_asm_overlap 5
++-ksp_max_it 100
++-ksp_rtol 1e-15
++
+++DiagnosticVertAnalysis
++-mat_type aij
++-ksp_type gmres
++-pc_type asm
++-sub_pc_type ilu
++-pc_asm_overlap 5
++-ksp_max_it 100
++-ksp_rtol 1e-15
Index: /issm/oecreview/Archive/14064-14311/ISSM-14083-14084.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14083-14084.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14083-14084.diff	(revision 14312)
@@ -0,0 +1,14 @@
+Index: ../trunk-jpl/src/android/ISSM/jni/Main.cpp
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/Main.cpp	(revision 14083)
++++ ../trunk-jpl/src/android/ISSM/jni/Main.cpp	(revision 14084)
+@@ -47,8 +47,7 @@
+ 		env->ReleaseStringUTFChars(jrelfile, relfile); //must realease the char*
+ 
+ 		/*figure out size of solution: */
+-		//jint size = (jint) fm->bufferSize();
+-		jint size =8;
++		jint size = (jint) fm->elements->NumberOfElements();
+ 		
+ 		return size;
+ 
Index: /issm/oecreview/Archive/14064-14311/ISSM-14084-14085.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14084-14085.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14084-14085.diff	(revision 14312)
@@ -0,0 +1,13 @@
+Index: ../trunk-jpl/src/android/ISSM/bin
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/bin	(revision 14084)
++++ ../trunk-jpl/src/android/ISSM/bin	(revision 14085)
+
+Property changes on: ../trunk-jpl/src/android/ISSM/bin
+___________________________________________________________________
+Modified: svn:ignore
+## -1,3 +1,4 ##
++com.*
+ *ISSM.apk
+ resources.ap_
+ res
Index: /issm/oecreview/Archive/14064-14311/ISSM-14085-14086.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14085-14086.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14085-14086.diff	(revision 14312)
@@ -0,0 +1,56 @@
+Index: ../trunk-jpl/src/android/ISSM/jni/Main.cpp
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/Main.cpp	(revision 14085)
++++ ../trunk-jpl/src/android/ISSM/jni/Main.cpp	(revision 14086)
+@@ -53,13 +53,14 @@
+ 
+ 	}
+ 	/*}}}*/
+-	void solve(JNIEnv *env, jclass clazz , jint alpha, jobject buf) /*{{{*/
++	void Solve(JNIEnv *env, jclass clazz , jdouble alpha, jobject buf) /*{{{*/
+ 	{
+ 		/*fill out the first two slots, extract the same way in java using get(int position)*/
+ 		jdouble *dBuf = (jdouble *)env->GetDirectBufferAddress(buf);
+ 
+ 		//pass bBuff to fem model to allocate data
+-		// fm -> solve(dBuf, alpha);
++		// fm -> Solve(dBuf, alpha);
++		fm -> Solve();
+ 
+ 	}/*}}}*/
+ 	jlong factorial(JNIEnv *env, jclass clazz, jlong n) /*{{{*/
+@@ -73,7 +74,7 @@
+ 	{
+ 			{"fac"      	,     "(J)J" 	, (void *) factorial},
+ 			{"createISSMModel"   ,"(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I"  , (void *) initialize},
+-			{"processBuffer", "(ILjava/nio/DoubleBuffer;)V", (void *) solve}
++			{"solveISSMModel", "(DLjava/nio/DoubleBuffer;)V", (void *) Solve}
+ 	};
+ 	/*}}}*/
+ }
+Index: ../trunk-jpl/src/android/ISSM/src/com/example/issm/ISSM.java
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/src/com/example/issm/ISSM.java	(revision 14085)
++++ ../trunk-jpl/src/android/ISSM/src/com/example/issm/ISSM.java	(revision 14086)
+@@ -67,7 +67,7 @@
+ //------------------------------------------------------------------------------------------------
+     public void fillBuffer()
+     {
+-    	issmNative.processBuffer(5,buff);
++    	issmNative.solveISSMModel(5,buff);
+     }
+  //------------------------------------------------------------------------------------------------   
+     public void onClick(View view) 
+Index: ../trunk-jpl/src/android/ISSM/src/com/example/issm/IssmJni.java
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/src/com/example/issm/IssmJni.java	(revision 14085)
++++ ../trunk-jpl/src/android/ISSM/src/com/example/issm/IssmJni.java	(revision 14086)
+@@ -4,7 +4,7 @@
+ class IssmJni
+ {
+ 	public native long fac(long n);
+-	public native void processBuffer(int alpha, DoubleBuffer buff);
++	public native void solveISSMModel(double alpha, DoubleBuffer buff);
+ 	public native int createISSMModel(String solution_type, String absfile, String relfile);
+ 	static 
+ 	{
Index: /issm/oecreview/Archive/14064-14311/ISSM-14086-14087.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14086-14087.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14086-14087.diff	(revision 14312)
@@ -0,0 +1,22 @@
+Index: ../trunk-jpl/src/android/ISSM/jni/Main.cpp
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/Main.cpp	(revision 14086)
++++ ../trunk-jpl/src/android/ISSM/jni/Main.cpp	(revision 14087)
+@@ -11,7 +11,7 @@
+ 	fac* f;
+ 	FemModel *fm;
+ 	/*}}}*/
+-	jint initialize(JNIEnv *env, jclass clazz, jstring jsolution_type, jstring jabsfile, jstring jrelfile) /*{{{*/
++	jint Initialize(JNIEnv *env, jclass clazz, jstring jsolution_type, jstring jabsfile, jstring jrelfile) /*{{{*/
+ 	{
+ 		
+ 		/*arguments to constructor: */
+@@ -73,7 +73,7 @@
+ 	static JNINativeMethod method_table[] = /*{{{*/
+ 	{
+ 			{"fac"      	,     "(J)J" 	, (void *) factorial},
+-			{"createISSMModel"   ,"(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I"  , (void *) initialize},
++			{"createISSMModel"   ,"(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I"  , (void *) Initialize},
+ 			{"solveISSMModel", "(DLjava/nio/DoubleBuffer;)V", (void *) Solve}
+ 	};
+ 	/*}}}*/
Index: /issm/oecreview/Archive/14064-14311/ISSM-14087-14088.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14087-14088.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14087-14088.diff	(revision 14312)
@@ -0,0 +1,53 @@
+Index: ../trunk-jpl/m4/issm_options.m4
+===================================================================
+--- ../trunk-jpl/m4/issm_options.m4	(revision 14087)
++++ ../trunk-jpl/m4/issm_options.m4	(revision 14088)
+@@ -1325,8 +1325,8 @@
+ 
+ 		dnl defaults
+ 		HAVE_ANDROID=jni
+-
+ 		AC_DEFINE([_HAVE_ANDROID_],[1],[with android capability])
++		AC_DEFINE([_HAVE_ANDROID_JNI_],[1],[with android jni])
+ 	elif test "x$ANDROID" = "xexe"; then
+ 		dnl defaults
+ 		HAVE_ANDROID=exe
+@@ -1342,6 +1342,24 @@
+ 	AM_CONDITIONAL([ANDROIDEXE], [test x$HAVE_ANDROID = xexe])
+ 	AC_MSG_RESULT($HAVE_ANDROID)
+ 	dnl }}}
++	dnl with-android-ndk{{{
++	AC_ARG_WITH([android-ndk],
++	  AS_HELP_STRING([--with-android-ndk=DIR], [android-ndk root directory.]),
++	  [ANDROID_NDK_ROOT=$withval],[ANDROID_NDK_ROOT=""]) 
++	AC_MSG_CHECKING(with android ndk)
++	
++	if test -d "$ANDROID_NDK_ROOT"; then
++		dnl defaults
++		HAVE_ANDROID_NDK=yes
++		ANDROID_NDKINCL="-I$ANDROID_NDK_ROOT/arm-linux-android-install/sysroot/usr/include"
++
++		AC_DEFINE([_HAVE_ANDROID_NDK_],[1],[with android ndk in ISSM src])
++		AC_SUBST([ANDROID_NDKINCL])
++	else
++		HAVE_ANDROID_NDK=no
++	fi
++	AC_MSG_RESULT($HAVE_ANDROID_NDK)
++	dnl }}}
+ 	dnl with-3d{{{
+ 	AC_ARG_WITH([3d],
+ 		AS_HELP_STRING([--with-3d = YES], [compile with 3d capabilities (default is yes)]),
+Index: ../trunk-jpl/configs/config-arm-linux.sh
+===================================================================
+--- ../trunk-jpl/configs/config-arm-linux.sh	(revision 14087)
++++ ../trunk-jpl/configs/config-arm-linux.sh	(revision 14088)
+@@ -5,7 +5,8 @@
+     --build="i386-apple-darwin10.8.0" \
+     --host="arm-linux-androideabi" \
+     --enable-shared \
+-    --with-android=jni\
++    --with-android=jni \
++	--with-android-ndk=$ISSM_DIR/externalpackages/android/android-ndk/install \
+     --without-fortran \
+ 	--without-wrappers \
+ 	--without-kriging \
Index: /issm/oecreview/Archive/14064-14311/ISSM-14088-14089.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14088-14089.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14088-14089.diff	(revision 14312)
@@ -0,0 +1,194 @@
+Index: ../trunk-jpl/src/android/ISSM/jni/issmlib/libISSMCore.a
+===================================================================
+Cannot display: file marked as a binary type.
+svn:mime-type = application/octet-stream
+Index: ../trunk-jpl/src/android/ISSM/jni/Main.cpp
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/Main.cpp	(revision 14088)
++++ ../trunk-jpl/src/android/ISSM/jni/Main.cpp	(revision 14089)
+@@ -4,12 +4,14 @@
+ #include "../../../c/issm.h"
+ #include <cstddef>
+ #include <stdio.h>
++#include <android/log.h>
+ 
+ namespace com_example_issm
+ {
+ 	/*Global variables{{{*/
+ 	fac* f;
+ 	FemModel *fm;
++	double* xyz; /*keep vertices information here*/
+ 	/*}}}*/
+ 	jint Initialize(JNIEnv *env, jclass clazz, jstring jsolution_type, jstring jabsfile, jstring jrelfile) /*{{{*/
+ 	{
+@@ -23,6 +25,9 @@
+ 		char *absfile = NULL;
+ 		char *relfile = NULL;
+ 
++		/*log:*/
++		__android_log_print(ANDROID_LOG_INFO, "Native","Initializing FemModel");
++
+ 		/*retrieve from java machine: */
+ 		solution_type = (char*)env->GetStringUTFChars(jsolution_type,0);
+ 		absfile = (char*)env->GetStringUTFChars(jabsfile,0);
+@@ -47,21 +52,103 @@
+ 		env->ReleaseStringUTFChars(jrelfile, relfile); //must realease the char*
+ 
+ 		/*figure out size of solution: */
++		__android_log_print(ANDROID_LOG_INFO, "Native","Number of elements");
+ 		jint size = (jint) fm->elements->NumberOfElements();
++
++		/*retrieve vertices x,y and z coordinates: */
++		__android_log_print(ANDROID_LOG_INFO, "Native","Retrieving vertices");
++		xyz=fm->vertices->ToXYZ();
+ 		
++		/*log: */
++		__android_log_print(ANDROID_LOG_INFO, "Native","Done Initializing FemModel");
++
+ 		return size;
+ 
+ 	}
+ 	/*}}}*/
+-	void Solve(JNIEnv *env, jclass clazz , jdouble alpha, jobject buf) /*{{{*/
+-	{
++	void Solve(JNIEnv *env, jclass clazz , jdouble alpha, jobject buf){ /*{{{*/
++
++		int i,count;
++		double x1,y1,z1,vel1;
++		double x2,y2,z2,vel2;
++		double x3,y3,z3,vel3;
++		int    v1,v2,v3,eid;
++		Patch* patch=NULL;
++		
++		/*log:*/
++		__android_log_print(ANDROID_LOG_INFO, "Native","Solving ");
++
+ 		/*fill out the first two slots, extract the same way in java using get(int position)*/
+ 		jdouble *dBuf = (jdouble *)env->GetDirectBufferAddress(buf);
+ 
+-		//pass bBuff to fem model to allocate data
+-		// fm -> Solve(dBuf, alpha);
++		/*pass bBuff to fem model to allocate data. In the future: fm -> Solve(dBuf, alpha)*/
+ 		fm -> Solve();
+ 
++		/*retrieve results: */
++		__android_log_print(ANDROID_LOG_INFO, "Native","Retrieving results ");
++		patch=fm->elements->ResultsToPatch();
++
++		/*sort out the velocities: */
++		for(i=0;i<patch->numrows;i++){
++			if ((patch->values[i*patch->numcols+0])==VelEnum){
++
++				/*Each row of the Patch object is made of the following information: 
++				  - the result enum_type, 
++				  - the step and time, 
++				  - the id of the element, 
++				  - the interpolation type, 
++				  - the vertices ids, 
++				  - and the values at the nodes (could be different from the vertices)
++				*/
++				eid=(int)patch->values[i*patch->numcols+3]-1;
++				v1=(int)patch->values[i*patch->numcols+5]; 
++				x1=xyz[3*(v1-1)+0]; y1=xyz[3*(v1-1)+1]; z1=xyz[3*(v1-1)+2];
++				
++				v2=(int)patch->values[i*patch->numcols+6];
++				x2=xyz[3*(v2-1)+0]; y2=xyz[3*(v2-1)+1]; z2=xyz[3*(v2-1)+2];
++				
++				v3=(int)patch->values[i*patch->numcols+7];
++				x3=xyz[3*(v3-1)+0]; y3=xyz[3*(v3-1)+1]; z3=xyz[3*(v3-1)+2];
++
++				vel1=patch->values[i*patch->numcols+8]; 
++				vel2=patch->values[i*patch->numcols+9]; 
++				vel3=patch->values[i*patch->numcols+10]; 
++
++				/*plug into dBuf: */
++				/*vertex 1: */
++				dBuf[12*eid+0]=x1;
++				dBuf[12*eid+1]=y1;
++				dBuf[12*eid+2]=z1;
++
++				/*vertex 2: */
++				dBuf[12*eid+3]=x2;
++				dBuf[12*eid+4]=y2;
++				dBuf[12*eid+5]=z2;
++			
++				/*vertex 3: */
++				dBuf[12*eid+6]=x3;
++				dBuf[12*eid+7]=y3;
++				dBuf[12*eid+8]=z3;
++				
++				/*values at 3 vertices: */
++				dBuf[12*eid+9]=vel1;
++				dBuf[12*eid+10]=vel2;
++				dBuf[12*eid+11]=vel3;
++
++			}
++		}
++
++		/*for(i=0;i<148;i++){
++		__android_log_print(ANDROID_LOG_INFO, "Native","%g %g %g | %g %g %g | %g %g %g | %g %g %g\n",
++				dBuf[12*i+0],dBuf[12*i+1],dBuf[12*i+2],
++				dBuf[12*i+3],dBuf[12*i+4],dBuf[12*i+5],
++				dBuf[12*i+6],dBuf[12*i+7],dBuf[12*i+8],
++				dBuf[12*i+9],dBuf[12*i+10],dBuf[12*i+11]);
++		}*/
++
++		/*delete temporary data:*/
++		delete patch;
++
+ 	}/*}}}*/
+ 	jlong factorial(JNIEnv *env, jclass clazz, jlong n) /*{{{*/
+ 	{
+Index: ../trunk-jpl/src/android/ISSM/assets/Map/antarctica.bin
+===================================================================
+Cannot display: file marked as a binary type.
+svn:mime-type = application/octet-stream
+Index: ../trunk-jpl/src/android/ISSM/assets/Map/antarctica.petsc
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/assets/Map/antarctica.petsc	(revision 14088)
++++ ../trunk-jpl/src/android/ISSM/assets/Map/antarctica.petsc	(revision 14089)
+@@ -1,4 +1,4 @@
+-%Petsc options file: test102.petsc written from Matlab solver array
++%Petsc options file: android.petsc written from Matlab solver array
+ 
+ +NoneAnalysis
+ -mat_type aij
+Index: ../trunk-jpl/src/android/ISSM/assets/Map/greenland.bin
+===================================================================
+Cannot display: file marked as a binary type.
+svn:mime-type = application/octet-stream
+Index: ../trunk-jpl/src/android/ISSM/assets/Map/greenland.petsc
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/assets/Map/greenland.petsc	(revision 14088)
++++ ../trunk-jpl/src/android/ISSM/assets/Map/greenland.petsc	(revision 14089)
+@@ -1,4 +1,4 @@
+-%Petsc options file: test102.petsc written from Matlab solver array
++%Petsc options file: android.petsc written from Matlab solver array
+ 
+ +NoneAnalysis
+ -mat_type aij
+Index: ../trunk-jpl/src/android/ISSM/src/com/example/issm/ISSM.java
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/src/com/example/issm/ISSM.java	(revision 14088)
++++ ../trunk-jpl/src/android/ISSM/src/com/example/issm/ISSM.java	(revision 14089)
+@@ -48,8 +48,8 @@
+         //load up the ISSM library and create double buffer in java
+         //which later on will be pass for native allocation.
+         issmNative = new IssmJni();
+-        buff = ByteBuffer.allocateDirect(15*8).order(ByteOrder.nativeOrder()).asDoubleBuffer();
+         this.createModel();
++        buff = ByteBuffer.allocateDirect(size*12*8).order(ByteOrder.nativeOrder()).asDoubleBuffer();
+     }
+ //------------------------------------------------------------------------------------------------    
+     public void createModel()
+@@ -68,6 +68,10 @@
+     public void fillBuffer()
+     {
+     	issmNative.solveISSMModel(5,buff);
++
++		//for(int i=0;i< size*12;i++)
++			//System.out.println(buff.get(i));
++
+     }
+  //------------------------------------------------------------------------------------------------   
+     public void onClick(View view) 
Index: /issm/oecreview/Archive/14064-14311/ISSM-14089-14090.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14089-14090.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14089-14090.diff	(revision 14312)
@@ -0,0 +1,107 @@
+Index: ../trunk-jpl/src/c/Container/Vertices.cpp
+===================================================================
+--- ../trunk-jpl/src/c/Container/Vertices.cpp	(revision 14089)
++++ ../trunk-jpl/src/c/Container/Vertices.cpp	(revision 14090)
+@@ -198,3 +198,46 @@
+ 	}
+ }
+ /*}}}*/
++/*FUNCTION Vertices::ToXYZ{{{*/
++double* Vertices::ToXYZ(void){
++
++	/*intermediary: */
++	int i;
++	int my_rank;
++	int num_vertices;
++	
++	/*output: */
++	Matrix<IssmDouble>* xyz = NULL;
++	double* xyz_serial=NULL;
++
++	/*recover my_rank:*/
++	my_rank=IssmComm::GetRank();
++
++	/*First, figure out number of vertices: */
++	num_vertices=this->NumberOfVertices();
++
++	/*Now, allocate matrix to hold all the vertices x,y and z values: */
++	xyz= new Matrix<IssmDouble>(num_vertices,3);
++
++	/*Go through vertices, and for each vertex, object, report it cpu: */
++	for(i=0;i<this->Size();i++){
++
++		/*let vertex fill matrix: */
++		Vertex* vertex=dynamic_cast<Vertex*>(this->GetObjectByOffset(i));
++		vertex->ToXYZ(xyz);
++	}
++
++	/*Assemble:*/
++	xyz->Assemble();
++
++	/*gather on cpu 0: */
++	xyz_serial=xyz->ToSerial();
++
++	/*free ressources: */
++	delete xyz;
++	if(my_rank!=0)delete xyz_serial;
++
++	/*return matrix: */
++	return xyz_serial;
++}
++/*}}}*/
+Index: ../trunk-jpl/src/c/Container/Vertices.h
+===================================================================
+--- ../trunk-jpl/src/c/Container/Vertices.h	(revision 14089)
++++ ../trunk-jpl/src/c/Container/Vertices.h	(revision 14090)
+@@ -27,6 +27,7 @@
+ 		void  FlagClones(int numberofnodes);
+ 		int   NumberOfVertices(void);
+ 		void  Ranks(int* ranks);
++		double* ToXYZ(void);
+ };
+ 
+ #endif //ifndef _VERTICES_H_
+Index: ../trunk-jpl/src/c/classes/objects/Vertex.cpp
+===================================================================
+--- ../trunk-jpl/src/c/classes/objects/Vertex.cpp	(revision 14089)
++++ ../trunk-jpl/src/c/classes/objects/Vertex.cpp	(revision 14090)
+@@ -193,3 +193,20 @@
+ 
+ }
+ /*}}}*/
++/*FUNCTION Vertex::ToXYZ {{{*/
++void  Vertex::ToXYZ(Matrix<IssmDouble>* matrix){
++
++	int i;
++	double xyz[3];
++	int    indices[3];
++	
++	if (this->clone==true)return;
++	else{
++
++		xyz[0]=x; xyz[1]=y; xyz[2]=z;
++		indices[0]=0;indices[1]=1; indices[2]=2;
++
++		matrix->SetValues(1,&sid,3,&indices[0],&xyz[0],INS_VAL);
++	}
++}
++/*}}}*/
+Index: ../trunk-jpl/src/c/classes/objects/Vertex.h
+===================================================================
+--- ../trunk-jpl/src/c/classes/objects/Vertex.h	(revision 14089)
++++ ../trunk-jpl/src/c/classes/objects/Vertex.h	(revision 14090)
+@@ -12,6 +12,7 @@
+ #include "../../toolkits/toolkits.h"
+ #include "../../include/include.h"
+ template <class doubletype> class Vector;
++template <class doubletype> class Matrix;
+ class Parameters;
+ class IoModel;
+ /*}}}*/
+@@ -52,5 +53,6 @@
+ 		void  ShowTruePids(int* borderpids);
+ 		void  UpdateClonePids(int* allborderpids);
+ 		void  SetClone(int* minranks);
++		void  ToXYZ(Matrix<IssmDouble>* matrix);
+ };
+ #endif  /* _VERTEX_H */
Index: /issm/oecreview/Archive/14064-14311/ISSM-14090-14091.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14090-14091.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14090-14091.diff	(revision 14312)
@@ -0,0 +1,37 @@
+Index: ../trunk-jpl/test/NightlyRun/android.m
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/android.m	(revision 0)
++++ ../trunk-jpl/test/NightlyRun/android.m	(revision 14091)
+@@ -0,0 +1,32 @@
++md=triangle(model(),'../Exp/Square.exp',100000.);
++md=setmask(md,'all','');
++md=parameterize(md,'../Par/SquareShelfConstrained.par');
++md=setflowequation(md,'macayeal','all');
++md.cluster=generic('name',oshostname(),'np',3);
++md.verbose=verbose('mprocessor',true,'module',true,'solution',true,'solver',true,'convergence',true,'control',true,'qmu',true,'autodiff',true);
++md.diagnostic.requested_outputs=StressTensorEnum();
++md=solve(md,DiagnosticSolutionEnum());
++
++	
++index=md.mesh.elements;
++nel=length(index);
++x=md.mesh.x;
++y=md.mesh.y;
++z=md.mesh.z;
++vel=md.results.DiagnosticSolution.Vel;
++
++patch=zeros(nel,12);
++for i=1:nel,
++	patch(i,1)=x(index(i,1));
++	patch(i,2)=y(index(i,1));
++	patch(i,3)=z(index(i,1));
++	patch(i,4)=x(index(i,2));
++	patch(i,5)=y(index(i,2));
++	patch(i,6)=z(index(i,2));
++	patch(i,7)=x(index(i,3));
++	patch(i,8)=y(index(i,3));
++	patch(i,9)=z(index(i,3));
++	patch(i,10)=vel(index(i,1));
++	patch(i,11)=vel(index(i,2));
++	patch(i,12)=vel(index(i,3));
++end
Index: /issm/oecreview/Archive/14064-14311/ISSM-14091-14092.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14091-14092.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14091-14092.diff	(revision 14312)
@@ -0,0 +1,111 @@
+Index: ../trunk-jpl/src/m/mesh/squaremesh.py
+===================================================================
+--- ../trunk-jpl/src/m/mesh/squaremesh.py	(revision 0)
++++ ../trunk-jpl/src/m/mesh/squaremesh.py	(revision 14092)
+@@ -0,0 +1,83 @@
++import numpy
++from NodeConnectivity import *
++from ElementConnectivity import *
++
++def squaremesh(md,Lx,Ly,nx,ny):
++	"""
++	SQUAREMESH - create a structured square mesh 
++
++	   This script will generate a structured square mesh
++	   Lx and Ly are the dimension of the domain (in meters)
++	   nx anx ny are the number of nodes in the x and y direction
++	   The coordinates x and y returned are in meters.
++
++	   Usage:
++	      [md]=squaremesh(md,Lx,Ly,nx,ny)
++	"""
++
++	#get number of elements and number of nodes
++	nel=(nx-1)*(ny-1)*2
++	nods=nx*ny
++
++	#initialization
++	index=numpy.zeros((nel,3),int)
++	x=numpy.zeros((nx*ny,1))
++	y=numpy.zeros((nx*ny,1))
++
++	#create coordinates
++	for n in xrange(0,nx):
++		for m in xrange(0,ny):
++			x[n*ny+m]=float(n)
++			y[n*ny+m]=float(m)
++
++	#create index
++	for n in xrange(0,nx-1):
++		for m in xrange(0,ny-1):
++			A=n*ny+(m+1)
++			B=A+1
++			C=(n+1)*ny+(m+1)
++			D=C+1
++			index[n*(ny-1)*2+2*m,:]=[A,C,B]
++			index[n*(ny-1)*2+2*(m+1)-1,:]=[B,C,D]
++
++	#Scale  x and y
++	x=x/numpy.max(x)*Lx
++	y=y/numpy.max(y)*Ly
++
++	#create segments
++	segments=numpy.zeros((2*(nx-1)+2*(ny-1),3),int)
++	#left edge:
++	segments[0:ny-1,:]=numpy.hstack((numpy.arange(2,ny+1).reshape(-1,1),numpy.arange(1,ny).reshape(-1,1),(2*numpy.arange(1,ny)-1).reshape(-1,1)))
++	#right edge:
++	segments[ny-1:2*(ny-1),:]=numpy.hstack((numpy.arange(ny*(nx-1)+1,nx*ny).reshape(-1,1),numpy.arange(ny*(nx-1)+2,nx*ny+1).reshape(-1,1),2*numpy.arange((ny-1)*(nx-2)+1,(nx-1)*(ny-1)+1).reshape(-1,1)))
++	#front edge:
++	segments[2*(ny-1):2*(ny-1)+(nx-1),:]=numpy.hstack((numpy.arange(2*ny,ny*nx+1,ny).reshape(-1,1),numpy.arange(ny,ny*(nx-1)+1,ny).reshape(-1,1),numpy.arange(2*(ny-1),2*(nx-1)*(ny-1)+1,2*(ny-1)).reshape(-1,1)))
++	#back edge
++	segments[2*(ny-1)+(nx-1):2*(nx-1)+2*(ny-1),:]=numpy.hstack((numpy.arange(1,(nx-2)*ny+2,ny).reshape(-1,1),numpy.arange(ny+1,ny*(nx-1)+2,ny).reshape(-1,1),numpy.arange(1,2*(nx-2)*(ny-1)+2,2*(ny-1)).reshape(-1,1)))
++
++	#plug coordinates and nodes
++	md.mesh.x=x
++	md.mesh.y=y
++	md.mesh.z=numpy.zeros((nods,1))
++	md.mesh.numberofvertices=nods
++	md.mesh.vertexonboundary=numpy.zeros((nods,1),bool)
++	md.mesh.vertexonboundary[segments[:,0:2]-1]=True
++	md.mesh.vertexonbed=numpy.ones((nods,1),bool)
++	md.mesh.vertexonsurface=numpy.ones((nods,1),bool)
++
++	#plug elements
++	md.mesh.elements=index
++	md.mesh.segments=segments
++	md.mesh.numberofelements=nel
++	md.mesh.elementonbed=numpy.ones((nel,1),bool)
++	md.mesh.elementonsurface=numpy.ones((nel,1),bool)
++
++	#Now, build the connectivity tables for this mesh.
++	[md.mesh.vertexconnectivity]=NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices)
++	[md.mesh.elementconnectivity]=ElementConnectivity(md.mesh.elements,md.mesh.vertexconnectivity)
++
++	#plug other field
++	md.mesh.dimension=2
++
++	return md
++
+Index: ../trunk-jpl/src/m/mesh/squaremesh.m
+===================================================================
+--- ../trunk-jpl/src/m/mesh/squaremesh.m	(revision 14091)
++++ ../trunk-jpl/src/m/mesh/squaremesh.m	(revision 14092)
+@@ -14,7 +14,6 @@
+ nods=nx*ny;
+ 
+ %initialization
+-segments=zeros(0,3);
+ index=zeros(nel,3);
+ x=zeros(nx*ny,1);
+ y=zeros(nx*ny,1);
+@@ -22,8 +21,8 @@
+ %create coordinates
+ for n=1:nx,
+ 	for m=1:ny,
+-		x((n-1)*ny+m)=(n-1);
+-		y((n-1)*ny+m)=(m-1);
++		x((n-1)*ny+m)=(n-1.);
++		y((n-1)*ny+m)=(m-1.);
+ 	end
+ end
+ 
Index: /issm/oecreview/Archive/14064-14311/ISSM-14092-14093.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14092-14093.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14092-14093.diff	(revision 14312)
@@ -0,0 +1,269 @@
+Index: ../trunk-jpl/src/wrappers/python/io/pythonio.h
+===================================================================
+--- ../trunk-jpl/src/wrappers/python/io/pythonio.h	(revision 14092)
++++ ../trunk-jpl/src/wrappers/python/io/pythonio.h	(revision 14093)
+@@ -33,7 +33,7 @@
+ void FetchData(int** pmatrix,int* pM,int *pN,PyObject* py_matrix);
+ void FetchData(char** pstring,PyObject* py_unicode);
+ void FetchData(double* pscalar,PyObject* py_float);
+-void FetchData(int* pinteger,PyObject* py_long);
++void FetchData(int* pscalar,PyObject* py_long);
+ void FetchData(bool* pbool,PyObject* py_boolean);
+ void FetchData(BamgGeom** bamggeom,PyObject* py_dict);
+ void FetchData(BamgMesh** bamgmesh,PyObject* py_dict);
+Index: ../trunk-jpl/src/wrappers/python/io/FetchPythonData.cpp
+===================================================================
+--- ../trunk-jpl/src/wrappers/python/io/FetchPythonData.cpp	(revision 14092)
++++ ../trunk-jpl/src/wrappers/python/io/FetchPythonData.cpp	(revision 14093)
+@@ -19,40 +19,58 @@
+ /*FUNCTION FetchData(double* pscalar,PyObject* py_float){{{*/
+ void FetchData(double* pscalar,PyObject* py_float){
+ 
+-	double scalar;
++	double dscalar;
+ 
+ 	/*return internal value: */
+-	scalar=PyFloat_AsDouble(py_float);
++	if      (PyFloat_Check((PyArrayObject*)py_float))
++		dscalar=PyFloat_AsDouble(py_float);
++	else if (PyInt_Check((PyArrayObject*)py_float))
++		dscalar=(double)PyInt_AsLong(py_float);
++	else if (PyLong_Check((PyArrayObject*)py_float))
++		dscalar=PyLong_AsDouble(py_float);
++	else if (PyBool_Check((PyArrayObject*)py_float))
++		dscalar=(double)PyLong_AsLong(py_float);
++	else
++		_error_("unrecognized float type in input!");
+ 
+ 	/*output: */
+-	*pscalar=scalar;
++	*pscalar=dscalar;
+ }
+ /*}}}*/
+-/*FUNCTION FetchData(int* pinteger,PyObject* py_long){{{*/
+-void FetchData(int* pinteger, PyObject* py_long){
++/*FUNCTION FetchData(int* pscalar,PyObject* py_long){{{*/
++void FetchData(int* pscalar, PyObject* py_long){
+ 
+-	int integer;
++	int iscalar;
+ 
+ 	/*return internal value: */
+-	integer=(int)PyLong_AsLong(py_long);
++	if      (PyInt_Check((PyArrayObject*)py_long))
++		iscalar=(int)PyInt_AsLong(py_long);
++	else if (PyLong_Check((PyArrayObject*)py_long))
++		iscalar=(int)PyLong_AsLong(py_long);
++	else if (PyFloat_Check((PyArrayObject*)py_long))
++		iscalar=(int)PyFloat_AsDouble(py_long);
++	else if (PyBool_Check((PyArrayObject*)py_long))
++		iscalar=(int)PyLong_AsLong(py_long);
++	else
++		_error_("unrecognized long type in input!");
+ 
+ 	/*output: */
+-	*pinteger=integer;
++	*pscalar=iscalar;
+ }
+ /*}}}*/
+-/*FUNCTION FetchData(bool* pboolean,PyObject* py_boolean){{{*/
+-void FetchData(bool* pboolean,PyObject* py_boolean){
++/*FUNCTION FetchData(bool* pscalar,PyObject* py_boolean){{{*/
++void FetchData(bool* pscalar,PyObject* py_boolean){
+ 
+-	bool boolean;
++	bool bscalar;
+ 
+ 	/*check this is indeed a subtype of long type: */
+ 	if(!PyBool_Check(py_boolean))_error_("expecting a boolean in input!");
+ 
+ 	/*extract boolean: */
+-	boolean=(bool)PyLong_AsLong(py_boolean);
++	bscalar=(bool)PyLong_AsLong(py_boolean);
+ 
+ 	/*simple copy: */
+-	*pboolean=boolean;
++	*pscalar=bscalar;
+ 
+ }
+ /*}}}*/
+@@ -71,45 +89,60 @@
+ 	bool* bmatrix=NULL;
+ 	int i;
+ 
+-	/*retrieve dimensions: */
+-	ndim=PyArray_NDIM((const PyArrayObject*)py_matrix);
+-	if(ndim!=2)_error_("expecting an MxN matrix in input!");
+-	dims=PyArray_DIMS((PyArrayObject*)py_matrix);
+-	M=dims[0]; N=dims[1];
++	if     (PyArray_Check((PyArrayObject*)py_matrix)) {
++		/*retrieve dimensions: */
++		ndim=PyArray_NDIM((const PyArrayObject*)py_matrix);
++		if(ndim!=2)_error_("expecting an MxN matrix in input!");
++		dims=PyArray_DIMS((PyArrayObject*)py_matrix);
++		M=dims[0]; N=dims[1];
+ 
+-	if (M && N) {
+-		if      (PyArray_TYPE((PyArrayObject*)py_matrix) == NPY_DOUBLE) {
+-			/*retrieve internal value: */
+-			dmatrix=(double*)PyArray_DATA((PyArrayObject*)py_matrix);
++		if (M && N) {
++			if      (PyArray_TYPE((PyArrayObject*)py_matrix) == NPY_DOUBLE) {
++				/*retrieve internal value: */
++				dmatrix=(double*)PyArray_DATA((PyArrayObject*)py_matrix);
+ 
+-			/*copy matrix: */
+-			matrix=xNew<double>(M*N);
+-			memcpy(matrix,dmatrix,(M*N)*sizeof(double));
+-		}
++				/*copy matrix: */
++				matrix=xNew<double>(M*N);
++				memcpy(matrix,dmatrix,(M*N)*sizeof(double));
++			}
+ 
+-		else if (PyArray_TYPE((PyArrayObject*)py_matrix) == NPY_INT64) {
+-			/*retrieve internal value: */
+-			lmatrix=(long*)PyArray_DATA((PyArrayObject*)py_matrix);
++			else if (PyArray_TYPE((PyArrayObject*)py_matrix) == NPY_INT64) {
++				/*retrieve internal value: */
++				lmatrix=(long*)PyArray_DATA((PyArrayObject*)py_matrix);
+ 
+-			/*transform into double matrix: */
+-			matrix=xNew<double>(M*N);
+-			for(i=0;i<M*N;i++)matrix[i]=(double)lmatrix[i];
+-		}
++				/*transform into double matrix: */
++				matrix=xNew<double>(M*N);
++				for(i=0;i<M*N;i++)matrix[i]=(double)lmatrix[i];
++			}
+ 
+-		else if (PyArray_TYPE((PyArrayObject*)py_matrix) == NPY_BOOL) {
+-			/*retrieve internal value: */
+-			bmatrix=(bool*)PyArray_DATA((PyArrayObject*)py_matrix);
++			else if (PyArray_TYPE((PyArrayObject*)py_matrix) == NPY_BOOL) {
++				/*retrieve internal value: */
++				bmatrix=(bool*)PyArray_DATA((PyArrayObject*)py_matrix);
+ 
+-			/*transform into double matrix: */
+-			matrix=xNew<double>(M*N);
+-			for(i=0;i<M*N;i++)matrix[i]=(double)bmatrix[i];
++				/*transform into double matrix: */
++				matrix=xNew<double>(M*N);
++				for(i=0;i<M*N;i++)matrix[i]=(double)bmatrix[i];
++			}
++
++			else
++				_error_("unrecognized pyarray type in input!");
+ 		}
+-
+ 		else
+-			_error_("unrecognized matrix type in input!");
++			matrix=NULL;
+ 	}
++
++	else if (PyFloat_Check((PyArrayObject*)py_matrix) ||
++			 PyInt_Check((PyArrayObject*)py_matrix) ||
++			 PyLong_Check((PyArrayObject*)py_matrix) ||
++			 PyBool_Check((PyArrayObject*)py_matrix)) {
++		M=1;
++		N=1;
++		matrix=xNew<double>(M*N);
++		FetchData(&(matrix[0]),py_matrix);
++	}
++
+ 	else
+-		matrix=NULL;
++		_error_("unrecognized array type in input!");
+ 
+ 	/*output: */
+ 	if(pM)*pM=M;
+@@ -132,45 +165,60 @@
+ 	bool* bmatrix=NULL;
+ 	int i;
+ 
+-	/*retrieve dimensions: */
+-	ndim=PyArray_NDIM((const PyArrayObject*)py_matrix);
+-	if(ndim!=2)_error_("expecting an MxN matrix in input!");
+-	dims=PyArray_DIMS((PyArrayObject*)py_matrix);
+-	M=dims[0]; N=dims[1];
++	if     (PyArray_Check((PyArrayObject*)py_matrix)) {
++		/*retrieve dimensions: */
++		ndim=PyArray_NDIM((const PyArrayObject*)py_matrix);
++		if(ndim!=2)_error_("expecting an MxN matrix in input!");
++		dims=PyArray_DIMS((PyArrayObject*)py_matrix);
++		M=dims[0]; N=dims[1];
+ 
+-	if (M && N) {
+-		if      (PyArray_TYPE((PyArrayObject*)py_matrix) == NPY_DOUBLE) {
+-			/*retrieve internal value: */
+-			dmatrix=(double*)PyArray_DATA((PyArrayObject*)py_matrix);
++		if (M && N) {
++			if      (PyArray_TYPE((PyArrayObject*)py_matrix) == NPY_DOUBLE) {
++				/*retrieve internal value: */
++				dmatrix=(double*)PyArray_DATA((PyArrayObject*)py_matrix);
+ 
+-			/*transform into integer matrix: */
+-			matrix=xNew<int>(M*N);
+-			for(i=0;i<M*N;i++)matrix[i]=(int)dmatrix[i];
+-		}
++				/*transform into integer matrix: */
++				matrix=xNew<int>(M*N);
++				for(i=0;i<M*N;i++)matrix[i]=(int)dmatrix[i];
++			}
+ 
+-		else if (PyArray_TYPE((PyArrayObject*)py_matrix) == NPY_INT64) {
+-			/*retrieve internal value: */
+-			lmatrix=(long*)PyArray_DATA((PyArrayObject*)py_matrix);
++			else if (PyArray_TYPE((PyArrayObject*)py_matrix) == NPY_INT64) {
++				/*retrieve internal value: */
++				lmatrix=(long*)PyArray_DATA((PyArrayObject*)py_matrix);
+ 
+-			/*transform into integer matrix: */
+-			matrix=xNew<int>(M*N);
+-			for(i=0;i<M*N;i++)matrix[i]=(int)lmatrix[i];
+-		}
++				/*transform into integer matrix: */
++				matrix=xNew<int>(M*N);
++				for(i=0;i<M*N;i++)matrix[i]=(int)lmatrix[i];
++			}
+ 
+-		else if (PyArray_TYPE((PyArrayObject*)py_matrix) == NPY_BOOL) {
+-			/*retrieve internal value: */
+-			bmatrix=(bool*)PyArray_DATA((PyArrayObject*)py_matrix);
++			else if (PyArray_TYPE((PyArrayObject*)py_matrix) == NPY_BOOL) {
++				/*retrieve internal value: */
++				bmatrix=(bool*)PyArray_DATA((PyArrayObject*)py_matrix);
+ 
+-			/*transform into integer matrix: */
+-			matrix=xNew<int>(M*N);
+-			for(i=0;i<M*N;i++)matrix[i]=(int)bmatrix[i];
++				/*transform into integer matrix: */
++				matrix=xNew<int>(M*N);
++				for(i=0;i<M*N;i++)matrix[i]=(int)bmatrix[i];
++			}
++
++			else
++				_error_("unrecognized pyarray type in input!");
+ 		}
+-
+ 		else
+-			_error_("unrecognized matrix type in input!");
++			matrix=NULL;
+ 	}
++
++	else if (PyInt_Check((PyArrayObject*)py_matrix) ||
++			 PyLong_Check((PyArrayObject*)py_matrix) ||
++			 PyFloat_Check((PyArrayObject*)py_matrix) ||
++			 PyBool_Check((PyArrayObject*)py_matrix)) {
++		M=1;
++		N=1;
++		matrix=xNew<int>(M*N);
++		FetchData(&(matrix[0]),py_matrix);
++	}
++
+ 	else
+-		matrix=NULL;
++		_error_("unrecognized array type in input!");
+ 
+ 	/*output: */
+ 	if(pM)*pM=M;
Index: /issm/oecreview/Archive/14064-14311/ISSM-14093-14094.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14093-14094.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14093-14094.diff	(revision 14312)
@@ -0,0 +1,164 @@
+Index: ../trunk-jpl/src/m/contrib/bamg/YamsCall.m
+===================================================================
+--- ../trunk-jpl/src/m/contrib/bamg/YamsCall.m	(revision 14093)
++++ ../trunk-jpl/src/m/contrib/bamg/YamsCall.m	(revision 14094)
+@@ -15,7 +15,7 @@
+ %      md=YamsCall(md,md.inversion.vel_obs,1500,10^8,1.3,0.9);
+ 
+ %2d geometric parameter (do not change)
+-scale=2/9; 
++scale=2./9.;
+ 
+ %Compute Hessian
+ t1=clock; fprintf('%s','      computing Hessian...');
+@@ -59,7 +59,7 @@
+ 	%we have the list of triangles that make up the rift. keep those triangles around during refinement.
+ 	triangles=[];
+ 	for i=1:size(md.rifts.riftstruct,1),
+-		triangles=[triangles md.rifts(i).segments(:,3)'];
++		triangles=[triangles md.rifts(i).riftstruct.segments(:,3)'];
+ 	end
+ 
+ 	fprintf(fid,'\n\n%s\n%i\n\n','RequiredTriangles',length(triangles));
+@@ -75,7 +75,7 @@
+ if ispc()
+ 	%windows
+ 	system(['yams2-win -O 1 -v -0 -ecp -hgrad ' num2str(gradation)  ' carre0 carre1']);
+-elseif ismac
++elseif ismac()
+ 	%Macosx
+ 	system(['yams2-osx -O 1 -v -0 -ecp -hgrad ' num2str(gradation)  ' carre0 carre1']);
+ else
+Index: ../trunk-jpl/src/m/contrib/bamg/YamsCall.py
+===================================================================
+--- ../trunk-jpl/src/m/contrib/bamg/YamsCall.py	(revision 0)
++++ ../trunk-jpl/src/m/contrib/bamg/YamsCall.py	(revision 14094)
+@@ -0,0 +1,128 @@
++import numpy
++import time
++import subprocess
++import os
++from ComputeHessian import *
++from ComputeMetric import *
++from MatlabFuncs import *
++
++def YamsCall(md,field,hmin,hmax,gradation,epsilon):
++	"""
++	YAMSCALL - call yams
++
++	   build a metric using the Hessian of the given field
++	   call Yams and the output mesh is plugged onto the model
++	   -hmin = minimum edge length (m)
++	   -hmax = maximum edge length (m)
++	   -gradation = maximum edge length gradation between 2 elements
++	   -epsilon = average error on each element (m/yr)
++
++	   Usage:
++	      md=YamsCall(md,field,hmin,hmax,gradation,epsilon);
++
++	   Example:
++	      md=YamsCall(md,md.inversion.vel_obs,1500,10^8,1.3,0.9);
++	"""
++
++	#2d geometric parameter (do not change)
++	scale=2./9.
++
++	#Compute Hessian
++	t1=time.time()
++	print "%s" % '      computing Hessian...'
++	hessian=ComputeHessian(md.mesh.elements,md.mesh.x,md.mesh.y,field,'node')
++	t2=time.time()
++	print "%s%d%s\n" % (' done (',t2-t1,' seconds)')
++
++	#Compute metric
++	t1=time.time()
++	print "%s" % '      computing metric...'
++	if numpy.size(md.mask.vertexonwater)==md.mesh.numberofvertices:
++		pos=numpy.nonzero(md.mask.vertexonwater)[0]
++	else:
++		pos=numpy.empty(0,int)
++	metric=ComputeMetric(hessian,scale,epsilon,hmin,hmax,pos)
++	t2=time.time()
++	print "%s%d%s\n" % (' done (',t2-t1,' seconds)')
++
++	#write files
++	t1=time.time()
++	print "%s" % '      writing initial mesh files...'
++	numpy.savetxt('carre0.met',metric)
++
++	f=open('carre0.mesh','w')
++
++	#initialiation
++	f.write("\n%s\n%i\n" % ('MeshVersionFormatted',1))
++
++	#dimension
++	f.write("\n%s\n%i\n" % ('Dimension',2))
++
++	#Vertices
++	f.write("\n%s\n%i\n\n" % ('Vertices',md.mesh.numberofvertices))
++	for i in xrange(0,md.mesh.numberofvertices):
++		f.write("%8g %8g %i\n" % (md.mesh.x[i],md.mesh.y[i],0))
++
++	#Triangles
++	f.write("\n\n%s\n%i\n\n" % ('Triangles',md.mesh.numberofelements))
++	for i in xrange(0,md.mesh.numberofelements):
++		f.write("%i %i %i %i\n" % (md.mesh.elements[i,0],md.mesh.elements[i,1],md.mesh.elements[i,2],0))
++	numberofelements1=md.mesh.numberofelements
++
++	#Deal with rifts
++	if numpy.any(not numpy.isnan(md.rifts.riftstruct)):
++
++		#we have the list of triangles that make up the rift. keep those triangles around during refinement.
++		triangles=numpy.empty(0,int)
++		for riftstruct in md.rifts.riftstruct:
++			triangles=numpy.concatenate((triangles,riftstruct.segments[:,2]))
++
++		f.write("\n\n%s\n%i\n\n" % ('RequiredTriangles',numpy.size(triangles)))
++		for triangle in triangles:
++			f.write("%i\n" % triangle)
++
++	#close
++	f.close()
++	t2=time.time()
++	print "%s%d%s\n" % (' done (',t2-t1,' seconds)')
++
++	#call yams
++	print "%s\n" % '      call Yams...'
++	if   ispc():
++		#windows
++		subprocess.call('yams2-win -O 1 -v -0 -ecp -hgrad %g carre0 carre1' % gradation,shell=True)
++	elif ismac():
++		#Macosx
++		subprocess.call('yams2-osx -O 1 -v -0 -ecp -hgrad %g carre0 carre1' % gradation,shell=True)
++	else:
++		#Linux
++		subprocess.call('yams2-linux -O 1 -v -0 -ecp -hgrad %g carre0 carre1' % gradation,shell=True)
++
++	#plug new mesh
++	t1=time.time()
++	print "\n%s" % '      reading final mesh files...'
++	Tria=numpy.loadtxt('carre1.tria',int)
++	Coor=numpy.loadtxt('carre1.coor',float)
++	md.mesh.x=Coor[:,0]
++	md.mesh.y=Coor[:,1]
++	md.mesh.z=numpy.zeros((numpy.size(Coor,axis=0),1))
++	md.mesh.elements=Tria
++	md.mesh.numberofvertices=numpy.size(Coor,axis=0)
++	md.mesh.numberofelements=numpy.size(Tria,axis=0)
++	numberofelements2=md.mesh.numberofelements
++	t2=time.time()
++	print "%s%d%s\n\n" % (' done (',t2-t1,' seconds)')
++
++	#display number of elements
++	print "\n%s %i" % ('      inital number of elements:',numberofelements1)
++	print "\n%s %i\n\n" % ('      new    number of elements:',numberofelements2)
++
++	#clean up:
++	os.remove('carre0.mesh')
++	os.remove('carre0.met')
++	os.remove('carre1.tria')
++	os.remove('carre1.coor')
++	os.remove('carre1.meshb')
++
++	return md
++
Index: /issm/oecreview/Archive/14064-14311/ISSM-14094-14095.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14094-14095.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14094-14095.diff	(revision 14312)
@@ -0,0 +1,73 @@
+Index: ../trunk-jpl/src/m/mesh/squaremesh.py
+===================================================================
+--- ../trunk-jpl/src/m/mesh/squaremesh.py	(revision 14094)
++++ ../trunk-jpl/src/m/mesh/squaremesh.py	(revision 14095)
+@@ -21,8 +21,8 @@
+ 
+ 	#initialization
+ 	index=numpy.zeros((nel,3),int)
+-	x=numpy.zeros((nx*ny,1))
+-	y=numpy.zeros((nx*ny,1))
++	x=numpy.zeros((nx*ny))
++	y=numpy.zeros((nx*ny))
+ 
+ 	#create coordinates
+ 	for n in xrange(0,nx):
+@@ -58,19 +58,19 @@
+ 	#plug coordinates and nodes
+ 	md.mesh.x=x
+ 	md.mesh.y=y
+-	md.mesh.z=numpy.zeros((nods,1))
++	md.mesh.z=numpy.zeros((nods))
+ 	md.mesh.numberofvertices=nods
+-	md.mesh.vertexonboundary=numpy.zeros((nods,1),bool)
++	md.mesh.vertexonboundary=numpy.zeros((nods),bool)
+ 	md.mesh.vertexonboundary[segments[:,0:2]-1]=True
+-	md.mesh.vertexonbed=numpy.ones((nods,1),bool)
+-	md.mesh.vertexonsurface=numpy.ones((nods,1),bool)
++	md.mesh.vertexonbed=numpy.ones((nods),bool)
++	md.mesh.vertexonsurface=numpy.ones((nods),bool)
+ 
+ 	#plug elements
+ 	md.mesh.elements=index
+ 	md.mesh.segments=segments
+ 	md.mesh.numberofelements=nel
+-	md.mesh.elementonbed=numpy.ones((nel,1),bool)
+-	md.mesh.elementonsurface=numpy.ones((nel,1),bool)
++	md.mesh.elementonbed=numpy.ones((nel),bool)
++	md.mesh.elementonsurface=numpy.ones((nel),bool)
+ 
+ 	#Now, build the connectivity tables for this mesh.
+ 	[md.mesh.vertexconnectivity]=NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices)
+Index: ../trunk-jpl/src/m/mesh/ComputeMetric.py
+===================================================================
+--- ../trunk-jpl/src/m/mesh/ComputeMetric.py	(revision 14094)
++++ ../trunk-jpl/src/m/mesh/ComputeMetric.py	(revision 14095)
+@@ -53,7 +53,7 @@
+ 
+ 	#take care of NaNs if any (use Numpy eig in a loop)
+ 	pos=numpy.nonzero(numpy.isnan(metric))[0]
+-	if pos:
++	if numpy.size(pos):
+ 		print(" %i NaN found in the metric. Use Numpy routine..." % numpy.size(pos))
+ 		for posi in pos:
+ 			H=numpy.array([[hessian[posi,0],hessian[posi,1]],[hessian[posi,1],hessian[posi,2]]])
+Index: ../trunk-jpl/src/m/miscellaneous/MatlabFuncs.py
+===================================================================
+--- ../trunk-jpl/src/m/miscellaneous/MatlabFuncs.py	(revision 14094)
++++ ../trunk-jpl/src/m/miscellaneous/MatlabFuncs.py	(revision 14095)
+@@ -11,6 +11,14 @@
+ 	else:
+ 		return False
+ 
++def ismac():
++	import platform
++
++	if 'Darwin' in platform.system():
++		return True
++	else:
++		return False
++
+ def strcmp(s1,s2):
+ 
+ 	if s1 == s2:
Index: /issm/oecreview/Archive/14064-14311/ISSM-14097-14098.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14097-14098.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14097-14098.diff	(revision 14312)
@@ -0,0 +1,183 @@
+Index: ../trunk-jpl/src/wrappers/python/io/FetchPythonData.cpp
+===================================================================
+--- ../trunk-jpl/src/wrappers/python/io/FetchPythonData.cpp	(revision 14097)
++++ ../trunk-jpl/src/wrappers/python/io/FetchPythonData.cpp	(revision 14098)
+@@ -107,9 +107,16 @@
+ 	if     (PyArray_Check((PyArrayObject*)py_matrix)) {
+ 		/*retrieve dimensions: */
+ 		ndim=PyArray_NDIM((const PyArrayObject*)py_matrix);
+-		if(ndim!=2)_error_("expecting an MxN matrix in input!");
+-		dims=PyArray_DIMS((PyArrayObject*)py_matrix);
+-		M=dims[0]; N=dims[1];
++		if      (ndim==2) {
++			dims=PyArray_DIMS((PyArrayObject*)py_matrix);
++			M=dims[0]; N=dims[1];
++		}
++		else if (ndim==1) {
++			dims=PyArray_DIMS((PyArrayObject*)py_matrix);
++			M=dims[0]; N=1;
++		}
++		else
++			_error_("expecting an MxN matrix or M vector in input!");
+ 
+ 		if (M && N) {
+ 			if      (PyArray_TYPE((PyArrayObject*)py_matrix) == NPY_DOUBLE) {
+@@ -140,7 +147,7 @@
+ 			}
+ 
+ 			else
+-				_error_("unrecognized pyarray type in input!");
++				_error_("unrecognized float pyarray type in input!");
+ 		}
+ 		else
+ 			matrix=NULL;
+@@ -177,9 +184,16 @@
+ 	if     (PyArray_Check((PyArrayObject*)py_matrix)) {
+ 		/*retrieve dimensions: */
+ 		ndim=PyArray_NDIM((const PyArrayObject*)py_matrix);
+-		if(ndim!=2)_error_("expecting an MxN matrix in input!");
+-		dims=PyArray_DIMS((PyArrayObject*)py_matrix);
+-		M=dims[0]; N=dims[1];
++		if      (ndim==2) {
++			dims=PyArray_DIMS((PyArrayObject*)py_matrix);
++			M=dims[0]; N=dims[1];
++		}
++		else if (ndim==1) {
++			dims=PyArray_DIMS((PyArrayObject*)py_matrix);
++			M=dims[0]; N=1;
++		}
++		else
++			_error_("expecting an MxN matrix or M vector in input!");
+ 
+ 		if (M && N) {
+ 			if      (PyArray_TYPE((PyArrayObject*)py_matrix) == NPY_DOUBLE) {
+@@ -210,7 +224,7 @@
+ 			}
+ 
+ 			else
+-				_error_("unrecognized pyarray type in input!");
++				_error_("unrecognized long pyarray type in input!");
+ 		}
+ 		else
+ 			matrix=NULL;
+Index: ../trunk-jpl/src/m/geometry/FlagElements.py
+===================================================================
+--- ../trunk-jpl/src/m/geometry/FlagElements.py	(revision 14097)
++++ ../trunk-jpl/src/m/geometry/FlagElements.py	(revision 14098)
+@@ -46,7 +46,7 @@
+ 				flag=numpy.prod(flag_nodes[md.mesh.elements],axis=1).astype(bool)
+ 			else:
+ 				#ok, flag elements
+-				[flag,dum]=ContourToMesh(md.mesh.elements[:,0:3].copy(),md.mesh.x.reshape(-1,1),md.mesh.y.reshape(-1,1),region,'element',1)
++				[flag,dum]=ContourToMesh(md.mesh.elements[:,0:3].copy(),md.mesh.x,md.mesh.y,region,'element',1)
+ 				flag=flag.astype(bool)
+ 
+ 		if invert:
+Index: ../trunk-jpl/src/m/mesh/rifts/meshprocessoutsiderifts.py
+===================================================================
+--- ../trunk-jpl/src/m/mesh/rifts/meshprocessoutsiderifts.py	(revision 14097)
++++ ../trunk-jpl/src/m/mesh/rifts/meshprocessoutsiderifts.py	(revision 14098)
+@@ -15,7 +15,7 @@
+ 	for rift in md.rifts.riftstruct:
+ 	
+ 		#first, flag nodes that belong to the domain outline
+-		flags=ContourToMesh(md.mesh.elements,md.mesh.x.reshape(-1,1),md.mesh.y.reshape(-1,1),domainoutline,'node',0)
++		flags=ContourToMesh(md.mesh.elements,md.mesh.x,md.mesh.y,domainoutline,'node',0)
+ 
+ 		tips=rift.tips
+ 		outsidetips=tips[numpy.nonzero(flags[rift.tips-1])[0]]
+Index: ../trunk-jpl/src/m/mesh/rifts/meshprocessrifts.py
+===================================================================
+--- ../trunk-jpl/src/m/mesh/rifts/meshprocessrifts.py	(revision 14097)
++++ ../trunk-jpl/src/m/mesh/rifts/meshprocessrifts.py	(revision 14098)
+@@ -48,7 +48,7 @@
+ 		rift['tip2coordinates']=numpy.hstack((md.mesh.x[rift['tips'][0,1].astype(int)-1].reshape(-1,1),md.mesh.y[rift['tips'][0,1].astype(int)-1].reshape(-1,1)))
+ 
+ 	#In case we have rifts that open up the domain outline, we need to open them: 
+-	[flags,dum]=ContourToMesh(md.mesh.elements,md.mesh.x.reshape(-1,1),md.mesh.y.reshape(-1,1),domainoutline,'node',0)
++	[flags,dum]=ContourToMesh(md.mesh.elements,md.mesh.x,md.mesh.y,domainoutline,'node',0)
+ 	found=0
+ 	for rift in md.rifts.riftstruct:
+ 		if flags[rift['tips'][0,0].astype(int)-1]==0:
+Index: ../trunk-jpl/src/m/mesh/bamg.py
+===================================================================
+--- ../trunk-jpl/src/m/mesh/bamg.py	(revision 14097)
++++ ../trunk-jpl/src/m/mesh/bamg.py	(revision 14098)
+@@ -91,7 +91,7 @@
+ 
+ 			#Checks that all holes are INSIDE the principle domain outline
+ 			if i:
+-				flags=ContourToNodes(domaini['x'].reshape(-1,1),domaini['y'].reshape(-1,1),domainfile,0)
++				flags=ContourToNodes(domaini['x'],domaini['y'],domainfile,0)
+ 				if numpy.any(numpy.logical_not(flags)):
+ 					raise RuntimeError("bamg error message: All holes should be strictly inside the principal domain")
+ 
+@@ -117,7 +117,7 @@
+ 			for i,rifti in enumerate(rift):
+ 
+ 				#detect whether all points of the rift are inside the domain
+-				flags=ContourToNodes(rifti['x'].reshape(-1,1),rifti['y'].reshape(-1,1),domain[0],0)
++				flags=ContourToNodes(rifti['x'],rifti['y'],domain[0],0)
+ 				if numpy.all(numpy.logical_not(flags)):
+ 					raise RuntimeError("one rift has all its points outside of the domain outline")
+ 
+Index: ../trunk-jpl/src/m/mesh/ComputeMetric.py
+===================================================================
+--- ../trunk-jpl/src/m/mesh/ComputeMetric.py	(revision 14097)
++++ ../trunk-jpl/src/m/mesh/ComputeMetric.py	(revision 14098)
+@@ -18,9 +18,9 @@
+ 	d=hessian[:,2]
+ 	lambda1=0.5*((a+d)+numpy.sqrt(4.*b**2+(a-d)**2))
+ 	lambda2=0.5*((a+d)-numpy.sqrt(4.*b**2+(a-d)**2))
+-	pos1=numpy.nonzero(lambda1==0)[0]
+-	pos2=numpy.nonzero(lambda2==0)[0]
+-	pos3=numpy.nonzero(numpy.logical_and(b==0,lambda1==lambda2))[0]
++	pos1=numpy.nonzero(lambda1==0.)[0]
++	pos2=numpy.nonzero(lambda2==0.)[0]
++	pos3=numpy.nonzero(numpy.logical_and(b==0.,lambda1==lambda2))[0]
+ 
+ 	#Modify the eigen values to control the shape of the elements
+ 	lambda1=numpy.minimum(numpy.maximum(numpy.abs(lambda1)*scale/epsilon,1./hmax**2),1./hmin**2)
+Index: ../trunk-jpl/src/m/mesh/ComputeMetric.m
+===================================================================
+--- ../trunk-jpl/src/m/mesh/ComputeMetric.m	(revision 14097)
++++ ../trunk-jpl/src/m/mesh/ComputeMetric.m	(revision 14098)
+@@ -12,9 +12,9 @@
+ a=hessian(:,1); b=hessian(:,2); d=hessian(:,3);
+ lambda1=0.5*((a+d)+sqrt(4.*b.^2+(a-d).^2));
+ lambda2=0.5*((a+d)-sqrt(4.*b.^2+(a-d).^2));
+-pos1=find(lambda1==0);
+-pos2=find(lambda2==0);
+-pos3=find(b==0 & lambda1==lambda2);
++pos1=find(lambda1==0.);
++pos2=find(lambda2==0.);
++pos3=find(b==0. & lambda1==lambda2);
+ 
+ %Modify the eigen values to control the shape of the elements
+ lambda1=min(max(abs(lambda1)*scale/epsilon,1./hmax^2),1./hmin^2);
+Index: ../trunk-jpl/src/m/boundaryconditions/SetIceShelfBC.py
+===================================================================
+--- ../trunk-jpl/src/m/boundaryconditions/SetIceShelfBC.py	(revision 14097)
++++ ../trunk-jpl/src/m/boundaryconditions/SetIceShelfBC.py	(revision 14098)
+@@ -24,7 +24,7 @@
+ 	if icefrontfile:
+ 		if not os.path.exists(icefrontfile):
+ 			raise IOError("SetIceShelfBC error message: ice front file '%s' not found." % icefrontfile)
+-		[nodeinsideicefront,dum]=ContourToMesh(md.mesh.elements,md.mesh.x.reshape(-1,1),md.mesh.y.reshape(-1,1),icefrontfile,'node',2)
++		[nodeinsideicefront,dum]=ContourToMesh(md.mesh.elements,md.mesh.x,md.mesh.y,icefrontfile,'node',2)
+ 		nodeonicefront=numpy.logical_and(md.mesh.vertexonboundary,nodeinsideicefront.reshape(-1))
+ 	else:
+ 		nodeonicefront=numpy.zeros((md.mesh.numberofvertices),bool)
+Index: ../trunk-jpl/src/m/boundaryconditions/SetMarineIceSheetBC.py
+===================================================================
+--- ../trunk-jpl/src/m/boundaryconditions/SetMarineIceSheetBC.py	(revision 14097)
++++ ../trunk-jpl/src/m/boundaryconditions/SetMarineIceSheetBC.py	(revision 14098)
+@@ -26,7 +26,7 @@
+ 		#User provided Front.exp, use it
+ 		if not os.path.exists(icefrontfile):
+ 			raise IOError("SetMarineIceSheetBC error message: ice front file '%s' not found." % icefrontfile)
+-		[nodeinsideicefront,dum]=ContourToMesh(md.mesh.elements,md.mesh.x.reshape(-1,1),md.mesh.y.reshape(-1,1),icefrontfile,'node',2)
++		[nodeinsideicefront,dum]=ContourToMesh(md.mesh.elements,md.mesh.x,md.mesh.y,icefrontfile,'node',2)
+ 		vertexonicefront=numpy.logical_and(md.mesh.vertexonboundary,nodeinsideicefront.reshape(-1))
+ 	else:
+ 		#Guess where the ice front is
Index: /issm/oecreview/Archive/14064-14311/ISSM-14098-14099.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14098-14099.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14098-14099.diff	(revision 14312)
@@ -0,0 +1,32 @@
+Index: ../trunk-jpl/src/c/classes/objects/Vertex.cpp
+===================================================================
+--- ../trunk-jpl/src/c/classes/objects/Vertex.cpp	(revision 14098)
++++ ../trunk-jpl/src/c/classes/objects/Vertex.cpp	(revision 14099)
+@@ -196,17 +196,18 @@
+ /*FUNCTION Vertex::ToXYZ {{{*/
+ void  Vertex::ToXYZ(Matrix<IssmDouble>* matrix){
+ 
+-	int i;
+-	double xyz[3];
+-	int    indices[3];
++	IssmDouble xyz[3];
++	int        indices[3];
+ 	
+-	if (this->clone==true)return;
+-	else{
++	if (this->clone==true) return;
+ 
+-		xyz[0]=x; xyz[1]=y; xyz[2]=z;
+-		indices[0]=0;indices[1]=1; indices[2]=2;
++	xyz[0]=x;
++	xyz[1]=y; 
++	xyz[2]=z;
++	indices[0]=0;
++	indices[1]=1; 
++	indices[2]=2;
+ 
+-		matrix->SetValues(1,&sid,3,&indices[0],&xyz[0],INS_VAL);
+-	}
++	matrix->SetValues(1,&sid,3,&indices[0],&xyz[0],INS_VAL);
+ }
+ /*}}}*/
Index: /issm/oecreview/Archive/14064-14311/ISSM-14099-14100.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14099-14100.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14099-14100.diff	(revision 14312)
@@ -0,0 +1,35 @@
+Index: ../trunk-jpl/src/c/Container/Vertices.cpp
+===================================================================
+--- ../trunk-jpl/src/c/Container/Vertices.cpp	(revision 14099)
++++ ../trunk-jpl/src/c/Container/Vertices.cpp	(revision 14100)
+@@ -199,7 +199,7 @@
+ }
+ /*}}}*/
+ /*FUNCTION Vertices::ToXYZ{{{*/
+-double* Vertices::ToXYZ(void){
++IssmDouble* Vertices::ToXYZ(void){
+ 
+ 	/*intermediary: */
+ 	int i;
+@@ -208,7 +208,7 @@
+ 	
+ 	/*output: */
+ 	Matrix<IssmDouble>* xyz = NULL;
+-	double* xyz_serial=NULL;
++	IssmDouble* xyz_serial=NULL;
+ 
+ 	/*recover my_rank:*/
+ 	my_rank=IssmComm::GetRank();
+Index: ../trunk-jpl/src/c/Container/Vertices.h
+===================================================================
+--- ../trunk-jpl/src/c/Container/Vertices.h	(revision 14099)
++++ ../trunk-jpl/src/c/Container/Vertices.h	(revision 14100)
+@@ -27,7 +27,7 @@
+ 		void  FlagClones(int numberofnodes);
+ 		int   NumberOfVertices(void);
+ 		void  Ranks(int* ranks);
+-		double* ToXYZ(void);
++		IssmDouble* ToXYZ(void);
+ };
+ 
+ #endif //ifndef _VERTICES_H_
Index: /issm/oecreview/Archive/14064-14311/ISSM-14100-14101.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14100-14101.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14100-14101.diff	(revision 14312)
@@ -0,0 +1,153 @@
+Index: ../trunk-jpl/src/m/classes/plotoptions.m
+===================================================================
+--- ../trunk-jpl/src/m/classes/plotoptions.m	(revision 14100)
++++ ../trunk-jpl/src/m/classes/plotoptions.m	(revision 14101)
+@@ -67,7 +67,7 @@
+ 			 opt.figurenumber=getfieldvalue(rawoptions,'figure',1);
+ 
+ 			 %get number of data to be plotted
+-			 numberofplots=fieldoccurences(rawoptions,'data');
++			 numberofplots=fieldoccurrences(rawoptions,'data');
+ 			 opt.numberofplots=numberofplots;
+ 
+ 			 %figure out wether alloptions flog is on
+Index: ../trunk-jpl/src/m/classes/settings.py
+===================================================================
+--- ../trunk-jpl/src/m/classes/settings.py	(revision 14100)
++++ ../trunk-jpl/src/m/classes/settings.py	(revision 14101)
+@@ -55,8 +55,8 @@
+ 		#this option can be activated to load automatically the results
+ 		#onto the model after a parallel run by waiting for the lock file
+ 		#N minutes that is generated once the solution has converged
+-		#0 to desactivate
+-		self.waitonlock=float('Inf')
++		#0 to deactivate
++		self.waitonlock=2**31-1
+ 
+ 		return self
+ 	#}}}
+Index: ../trunk-jpl/src/m/classes/pairoptions.m
+===================================================================
+--- ../trunk-jpl/src/m/classes/pairoptions.m	(revision 14100)
++++ ../trunk-jpl/src/m/classes/pairoptions.m	(revision 14101)
+@@ -83,7 +83,7 @@
+ 		function obj = changefieldvalue(obj,field,newvalue) % {{{
+ 		%CHANGEOPTIONVALUE - change the value of an option in an option list
+ 
+-			%track occurance of field
++			%track occurrence of field
+ 			lines=find(strcmpi(obj.list(:,1),field));
+ 
+ 			%replace value
+@@ -99,7 +99,7 @@
+ 		function obj = deleteduplicates(obj,warn) % {{{
+ 		%DELETEDUPLICATES - delete duplicates in an option list
+ 
+-			%track the first occurance of each option
++			%track the first occurrence of each option
+ 			[dummy lines]=unique(obj.list(:,1),'first');
+ 			clear dummy
+ 
+@@ -108,7 +108,7 @@
+ 				numoptions=size(obj.list,1);
+ 				for i=1:numoptions,
+ 					if ~ismember(i,lines),
+-						disp(['WARNING: option ' obj.list{i,1} ' appeared more than once. Only its first occurence will be kept'])
++						disp(['WARNING: option ' obj.list{i,1} ' appeared more than once. Only its first occurrence will be kept'])
+ 					end
+ 				end
+ 			end
+@@ -136,7 +136,7 @@
+ 			end
+ 		end % }}}
+ 		function bool = exist(obj,field) % {{{
+-		%EXIST - check if the option exist
++		%EXIST - check if the option exists
+ 
+ 			%some argument checking: 
+ 			if ((nargin~=2) | (nargout~=1)),
+@@ -149,15 +149,15 @@
+ 			%Recover option
+ 			bool=any(strcmpi(field,obj.list(:,1)));
+ 		end % }}}
+-		function num = fieldoccurences(obj,field), % {{{
+-		%FIELDOCCURENCES - get number of occurence of a field
++		function num = fieldoccurrences(obj,field), % {{{
++		%FIELDOCCURRENCES - get number of occurrence of a field
+ 
+ 			%check input 
+ 			if ~ischar(field),
+-				error('fieldoccurences error message: field should be a string');
++				error('fieldoccurrences error message: field should be a string');
+ 			end
+ 
+-			%get number of occurence
++			%get number of occurrence
+ 			num=sum(strcmpi(field,obj.list(:,1)));
+ 		end % }}}
+ 		function value = getfieldvalue(obj,field,varargin), % {{{
+@@ -203,7 +203,7 @@
+ 		%   Usage:
+ 		%      obj=removefield(obj,field,warn)
+ 		%
+-		%   if warn==1 display an info message to wan user that
++		%   if warn==1 display an info message to warn user that
+ 		%   some of his options have been removed.
+ 
+ 			%check is field exist
+Index: ../trunk-jpl/src/m/classes/settings.m
+===================================================================
+--- ../trunk-jpl/src/m/classes/settings.m	(revision 14100)
++++ ../trunk-jpl/src/m/classes/settings.m	(revision 14101)
+@@ -37,7 +37,7 @@
+ 			%this option can be activated to load automatically the results
+ 			%onto the model after a parallel run by waiting for the lock file
+ 			%N minutes that is generated once the solution has converged
+-			%0 to desactivate
++			%0 to deactivate
+ 			obj.waitonlock=Inf;
+ 		end % }}}
+ 		function md = checkconsistency(obj,md,solution,analyses) % {{{
+Index: ../trunk-jpl/src/m/classes/pairoptions.py
+===================================================================
+--- ../trunk-jpl/src/m/classes/pairoptions.py	(revision 14100)
++++ ../trunk-jpl/src/m/classes/pairoptions.py	(revision 14101)
+@@ -77,7 +77,7 @@
+ #	function obj = deleteduplicates(obj,warn) % {{{
+ #	%DELETEDUPLICATES - delete duplicates in an option list
+ #
+-#		%track the first occurance of each option
++#		%track the first occurrence of each option
+ #		[dummy lines]=unique(obj.list(:,1),'first');
+ #		clear dummy
+ #
+@@ -86,7 +86,7 @@
+ #			numoptions=size(obj.list,1);
+ #			for i=1:numoptions,
+ #				if ~ismember(i,lines),
+-#					disp(['WARNING: option ' obj.list{i,1} ' appeared more than once. Only its first occurence will be kept'])
++#					disp(['WARNING: option ' obj.list{i,1} ' appeared more than once. Only its first occurrence will be kept'])
+ #				end
+ #			end
+ #		end
+@@ -127,16 +127,16 @@
+ 			return False
+ 	# }}}
+ 
+-	#def fieldoccurences(self,field): #{{{
++	#def fieldoccurrences(self,field): #{{{
+ 	#	'''
+-	#	FIELDOCCURENCES - get number of occurence of a field
++	#	FIELDOCCURRENCES - get number of occurrence of a field
+ 	#	'''
+ 	#
+ 	#	#check input 
+ 	#	if not isinstance(field,(str,unicode)):
+-	#		raise TypeError("fieldoccurences error message: field should be a string")
++	#		raise TypeError("fieldoccurrences error message: field should be a string")
+ 
+-	#	#get number of occurence
++	#	#get number of occurrence
+ 	#	# ??
+ 	#	#return num
+ 	#	#% }}}
Index: /issm/oecreview/Archive/14064-14311/ISSM-14101-14102.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14101-14102.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14101-14102.diff	(revision 14312)
@@ -0,0 +1,1227 @@
+Index: ../trunk-jpl/test/Par/SquareThermal.par
+===================================================================
+--- ../trunk-jpl/test/Par/SquareThermal.par	(revision 14101)
++++ ../trunk-jpl/test/Par/SquareThermal.par	(revision 14102)
+@@ -3,9 +3,9 @@
+ md.timestepping.time_step=0;
+ 
+ disp('      creating thickness');
+-h=1000;
++h=1000.;
+ md.geometry.thickness=h*ones(md.mesh.numberofvertices,1);
+-md.geometry.bed=-1000*ones(md.mesh.numberofvertices,1);
++md.geometry.bed=-1000.*ones(md.mesh.numberofvertices,1);
+ md.geometry.surface=md.geometry.bed+md.geometry.thickness;
+ 
+ disp('      creating velocities');
+@@ -14,23 +14,23 @@
+ md.initialization.vz=zeros(md.mesh.numberofvertices,1);
+ 
+ disp('      creating drag');
+-md.friction.coefficient=200*ones(md.mesh.numberofvertices,1); %q=1.
++md.friction.coefficient=200.*ones(md.mesh.numberofvertices,1); %q=1.
+ %Take care of iceshelves: no basal drag
+ pos=find(md.mask.elementonfloatingice);
+-md.friction.coefficient(md.mesh.elements(pos,:))=0;
++md.friction.coefficient(md.mesh.elements(pos,:))=0.;
+ md.friction.p=ones(md.mesh.numberofelements,1);
+ md.friction.q=ones(md.mesh.numberofelements,1);
+ 
+ disp('      creating temperatures');
+-md.initialization.temperature=(273-20)*ones(md.mesh.numberofvertices,1);
++md.initialization.temperature=(273.-20.)*ones(md.mesh.numberofvertices,1);
+ 
+-disp('      creating flow law paramter');
++disp('      creating flow law parameter');
+ md.materials.rheology_B=paterson(md.initialization.temperature);
+-md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
++md.materials.rheology_n=3.*ones(md.mesh.numberofelements,1);
+ 
+ disp('      creating surface mass balance');
+ md.surfaceforcings.mass_balance=ones(md.mesh.numberofvertices,1)/md.constants.yts; %1m/a
+-md.basalforcings.melting_rate=0*ones(md.mesh.numberofvertices,1)/md.constants.yts; %1m/a
++md.basalforcings.melting_rate=0.*ones(md.mesh.numberofvertices,1)/md.constants.yts; %1m/a
+ 
+ %Deal with boundary conditions:
+ 
+@@ -40,4 +40,4 @@
+ disp('      boundary conditions for thermal model');
+ md.thermal.spctemperature(:)=md.initialization.temperature;
+ md.basalforcings.geothermalflux=zeros(md.mesh.numberofvertices,1); 
+-pos=find(md.mask.elementongroundedice);md.basalforcings.geothermalflux(md.mesh.elements(pos,:))=1*10^-3; %1 mW/m^2
++pos=find(md.mask.elementongroundedice);md.basalforcings.geothermalflux(md.mesh.elements(pos,:))=1.*10^-3; %1 mW/m^2
+Index: ../trunk-jpl/test/Par/SquareSheetShelf.py
+===================================================================
+--- ../trunk-jpl/test/Par/SquareSheetShelf.py	(revision 14101)
++++ ../trunk-jpl/test/Par/SquareSheetShelf.py	(revision 14102)
+@@ -56,7 +56,7 @@
+ md.prognostic.stabilization=1
+ md.thermal.stabilization=1
+ md.verbose=verbose(0)
+-md.settings.waitonlock=30.
++md.settings.waitonlock=30
+ md.diagnostic.restol=0.05
+ md.steadystate.reltol=0.05
+ md.diagnostic.reltol=0.05
+Index: ../trunk-jpl/test/Par/SquareShelfConstrained.py
+===================================================================
+--- ../trunk-jpl/test/Par/SquareShelfConstrained.py	(revision 14101)
++++ ../trunk-jpl/test/Par/SquareShelfConstrained.py	(revision 14102)
+@@ -54,7 +54,7 @@
+ md.prognostic.stabilization=1.
+ md.thermal.stabilization=1.
+ md.verbose = verbose(0)
+-md.settings.waitonlock=30.
++md.settings.waitonlock=30
+ md.diagnostic.restol=0.05
+ md.diagnostic.reltol=0.05
+ md.steadystate.reltol=0.05
+Index: ../trunk-jpl/test/Par/SquareThermal.py
+===================================================================
+--- ../trunk-jpl/test/Par/SquareThermal.py	(revision 0)
++++ ../trunk-jpl/test/Par/SquareThermal.py	(revision 14102)
+@@ -0,0 +1,48 @@
++import numpy
++from paterson import *
++from SetMarineIceSheetBC import *
++
++#Ok, start defining model parameters here
++
++md.timestepping.time_step=0
++
++print "      creating thickness"
++h=1000.
++md.geometry.thickness=h*numpy.ones((md.mesh.numberofvertices,1))
++md.geometry.bed=-1000.*numpy.ones((md.mesh.numberofvertices,1))
++md.geometry.surface=md.geometry.bed+md.geometry.thickness;
++
++print "      creating velocities"
++md.initialization.vx=numpy.zeros((md.mesh.numberofvertices,1))
++md.initialization.vy=numpy.zeros((md.mesh.numberofvertices,1))
++md.initialization.vz=numpy.zeros((md.mesh.numberofvertices,1))
++
++print "      creating drag"
++md.friction.coefficient=200.*numpy.ones((md.mesh.numberofvertices,1))    #q=1.
++#Take care of iceshelves: no basal drag
++pos=numpy.nonzero(md.mask.elementonfloatingice)[0]
++md.friction.coefficient[md.mesh.elements[pos,:]-1]=0.
++md.friction.p=numpy.ones((md.mesh.numberofelements,1))
++md.friction.q=numpy.ones((md.mesh.numberofelements,1))
++
++print "      creating temperatures"
++md.initialization.temperature=(273.-20.)*numpy.ones((md.mesh.numberofvertices,1))
++
++print "      creating flow law parameter"
++md.materials.rheology_B=paterson(md.initialization.temperature)
++md.materials.rheology_n=3.*numpy.ones((md.mesh.numberofelements,1))
++
++print "      creating surface mass balance"
++md.surfaceforcings.mass_balance=numpy.ones((md.mesh.numberofvertices,1))/md.constants.yts    #1m/a
++md.basalforcings.melting_rate=0.*numpy.ones((md.mesh.numberofvertices,1))/md.constants.yts    #1m/a
++
++#Deal with boundary conditions:
++
++print "      boundary conditions for diagnostic model"
++md=SetMarineIceSheetBC(md,'../Exp/SquareFront.exp')
++
++print "      boundary conditions for thermal model"
++md.thermal.spctemperature[:]=md.initialization.temperature
++md.basalforcings.geothermalflux=numpy.zeros((md.mesh.numberofvertices,1)) 
++pos=numpy.nonzero(md.mask.elementongroundedice)[0]
++md.basalforcings.geothermalflux[md.mesh.elements[pos,:]-1]=1.*10**-3    #1 mW/m^2
+
+Property changes on: ../trunk-jpl/test/Par/SquareThermal.py
+___________________________________________________________________
+Added: svn:executable
+## -0,0 +1 ##
++*
+Index: ../trunk-jpl/test/Par/Pig.py
+===================================================================
+--- ../trunk-jpl/test/Par/Pig.py	(revision 14101)
++++ ../trunk-jpl/test/Par/Pig.py	(revision 14102)
+@@ -47,7 +47,7 @@
+ md.diagnostic.viscosity_overshoot=0.3
+ md.prognostic.stabilization=1.
+ md.verbose=verbose(0)
+-md.settings.waitonlock=30.
++md.settings.waitonlock=30
+ md.timestepping.time_step=1.
+ md.timestepping.final_time=2.
+ md.diagnostic.restol=0.05
+Index: ../trunk-jpl/test/Par/SquareShelf.py
+===================================================================
+--- ../trunk-jpl/test/Par/SquareShelf.py	(revision 14101)
++++ ../trunk-jpl/test/Par/SquareShelf.py	(revision 14102)
+@@ -69,7 +69,7 @@
+ md.diagnostic.viscosity_overshoot = 0.3
+ md.prognostic.stabilization = 1.
+ md.thermal.stabilization = 1.
+-md.settings.waitonlock = 30.
++md.settings.waitonlock = 30
+ md.verbose=verbose()
+ md.diagnostic.restol = 0.10
+ md.steadystate.reltol = 0.02
+Index: ../trunk-jpl/test/Par/SquareSheetConstrained.py
+===================================================================
+--- ../trunk-jpl/test/Par/SquareSheetConstrained.py	(revision 14101)
++++ ../trunk-jpl/test/Par/SquareSheetConstrained.py	(revision 14102)
+@@ -50,7 +50,7 @@
+ md.prognostic.stabilization=1.
+ md.thermal.stabilization=1.
+ md.verbose=verbose(0)
+-md.settings.waitonlock=30.
++md.settings.waitonlock=30
+ md.diagnostic.restol=0.05
+ md.steadystate.reltol=0.05
+ md.diagnostic.reltol=0.05
+Index: ../trunk-jpl/test/NightlyRun/test1304.py
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/test1304.py	(revision 0)
++++ ../trunk-jpl/test/NightlyRun/test1304.py	(revision 14102)
+@@ -0,0 +1,59 @@
++import numpy
++import sys
++from model import *
++from triangle import *
++from setmask import *
++from parameterize import *
++from setflowequation import *
++from EnumDefinitions import *
++from solve import *
++from MatlabFuncs import *
++
++"""
++This file can be run to check that the geothermal flux in simple conduction is correctly modeled.
++There is no velocity (no advection) the only thermal boundary conditions are an imposed temperature
++at upper surface and an impose flux at its base. The result must be a linear temperature from the upper to the lower
++surface with an imposed slope (Geothermal flux). if it is not the case, something is thermal modeling has been changed...
++"""
++
++printingflag=False
++
++md=model()
++md=triangle(md,'../Exp/Square.exp',100000.)
++md=setmask(md,'','')
++md=parameterize(md,'../Par/SquareThermal.py')
++md.extrude(11,1.)
++md=setflowequation(md,'pattyn','all')
++
++pos2=numpy.nonzero(md.mesh.elementonsurface)[0]
++md.thermal.spctemperature[md.mesh.elements[pos2,3:6]-1]=0.
++md.initialization.pressure=numpy.zeros((md.mesh.numberofvertices,1),int)
++md.basalforcings.geothermalflux[:]=0.1    #100mW/m^2
++
++#analytical results
++#the result is linear with depth and is equal to 0 on the upper surface (See BC)
++#d2T/dz2=0  -k*dT/dz(bed)=G  T(surface)=0  => T=-G/k*(z-surface)
++md.initialization.temperature=-0.1/md.materials.thermalconductivity*(md.mesh.z-md.geometry.surface)    #G=0.1 W/m2
++
++#modeled results
++md.cluster=generic('name',oshostname(),'np',2)
++md=solve(md,ThermalSolutionEnum())
++
++#plot results
++comp_temp=md.results.ThermalSolution.Temperature
++relative=numpy.abs((comp_temp-md.initialization.temperature)/md.initialization.temperature)*100.
++relative[numpy.nonzero(comp_temp==md.initialization.temperature)[0]]=0.
++#plotmodel(md,'data',comp_temp,'title','Modeled temperature [K]','data',md.initialization.temperature,'view',3,...
++#	'title','Analytical temperature','view',3,'data',comp_temp-md.initialization.temperature,...
++#	'title','Absolute error [K]','view',3,'data',relative,'title','Relative error [%]','view',3,...
++#	'figposition','mathieu','FontSize#all',20)
++if printingflag:
++	pass
++#	set(gcf,'Color','w')
++#	printmodel('thermalgeothermalflux','png','margin','on','marginsize',25,'frame','off','resolution',0.7,'hardcopy','off');
++#	system(['mv thermalgeothermalflux.png ' ISSM_DIR '/website/doc_pdf/validation/Images/Thermal ']);
++
++#Fields and tolerances to track changes
++field_names     =['GeothermalFluxTemperature']
++field_tolerances=[1e-13]
++field_values    =[comp_temp]
+
+Property changes on: ../trunk-jpl/test/NightlyRun/test1304.py
+___________________________________________________________________
+Added: svn:executable
+## -0,0 +1 ##
++*
+Index: ../trunk-jpl/test/NightlyRun/test1301.m
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/test1301.m	(revision 14101)
++++ ../trunk-jpl/test/NightlyRun/test1301.m	(revision 14102)
+@@ -9,7 +9,7 @@
+ md=setmask(md,'','');
+ md=parameterize(md,'../Par/SquareThermal.par');
+ md=extrude(md,3,2.);
+-md=setflowequation(md,'Pattyn','all');
++md=setflowequation(md,'pattyn','all');
+ 
+ %Some conditions specific to melting test
+ md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+@@ -23,24 +23,23 @@
+ %Mb*L*rho=G   => Mb=G/L*rho
+ melting=md.basalforcings.geothermalflux/(md.materials.rho_ice*md.materials.latentheat)*md.constants.yts;
+ 
+-%modeled  results
++%modeled results
+ md.cluster=generic('name',oshostname(),'np',2);
+ md=solve(md,ThermalSolutionEnum());
+ 
+ %plot results
+ comp_melting=md.results.ThermalSolution.BasalforcingsMeltingRate;
+-relative=abs((comp_melting-melting)./melting)*100;
+-relative(find(comp_melting==melting))=0;
++relative=abs((comp_melting-melting)./melting)*100.;
++relative(find(comp_melting==melting))=0.;
+ plotmodel(md,'data',comp_melting,'title','Modeled melting','data',melting,'title','Analytical melting',...
+ 	'data',comp_melting-melting,'title','Absolute error','data',relative,'title','Relative error [%]',...
+ 	'layer#all',1,'caxis#2',[1.02964 1.02966]*10^-4,'FontSize#all',20,'figposition','mathieu')
+-if printingflag, 
++if printingflag,
+ 	set(gcf,'Color','w')
+ 	printmodel('thermalmelting','png','margin','on','marginsize',25,'frame','off','resolution',0.7,'hardcopy','off');
+ 	system(['mv thermalmelting.png ' ISSM_DIR '/website/doc_pdf/validation/Images/Thermal ']);
+ end
+ 
+-
+ %Fields and tolerances to track changes
+ field_names     ={'BasalMelting'};
+ field_tolerances={1e-08};
+Index: ../trunk-jpl/test/NightlyRun/test1302.m
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/test1302.m	(revision 14101)
++++ ../trunk-jpl/test/NightlyRun/test1302.m	(revision 14102)
+@@ -8,11 +8,11 @@
+ md=setmask(md,'','');
+ md=parameterize(md,'../Par/SquareThermal.par');
+ md=extrude(md,30,1.);   %NB: the more one extrudes, the better (10-> relative~0.35%, 20->0.1%, 30->0.05%)
+-md=setflowequation(md,'Pattyn','all'); 
++md=setflowequation(md,'pattyn','all');
+ 
+ %Thermal boundary conditions
+-pos1=find(md.mesh.elementonbed);     md.thermal.spctemperature(md.mesh.elements(pos1,1:3))=10;
+-pos2=find(md.mesh.elementonsurface); md.thermal.spctemperature(md.mesh.elements(pos2,4:6))=0;
++pos1=find(md.mesh.elementonbed);     md.thermal.spctemperature(md.mesh.elements(pos1,1:3))=10.;
++pos2=find(md.mesh.elementonsurface); md.thermal.spctemperature(md.mesh.elements(pos2,4:6))=0.;
+ md.initialization.vz=0.1*ones(md.mesh.numberofvertices,1);
+ md.initialization.vel=sqrt( md.initialization.vx.^2+ md.initialization.vy.^2+ md.initialization.vz.^2);
+ md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+@@ -21,23 +21,23 @@
+ %analytical results
+ %d2T/dz2-w*rho_ice*c/k*dT/dz=0   T(surface)=0  T(bed)=10   => T=A exp(alpha z)+B
+ alpha=0.1/md.constants.yts*md.materials.rho_ice*md.materials.heatcapacity/md.materials.thermalconductivity;   %alpha=w rho_ice c /k  and w=0.1m/an
+-A=10/(exp(alpha*(-1000))-1);    %A=T(bed)/(exp(alpha*bed)-1)  with bed=-1000 T(bed)=10
++A=10./(exp(alpha*(-1000.))-1.);    %A=T(bed)/(exp(alpha*bed)-1)  with bed=-1000 T(bed)=10
+ B=-A;
+ md.initialization.temperature=A*exp(alpha*md.mesh.z)+B;
+ 
+-%modeled  results
++%modeled results
+ md.cluster=generic('name',oshostname(),'np',2);
+ md=solve(md,ThermalSolutionEnum());
+ 
+ %plot results
+ comp_temp=md.results.ThermalSolution.Temperature;
+-relative=abs((comp_temp-md.initialization.temperature)./md.initialization.temperature)*100;
+-relative(find(comp_temp==md.initialization.temperature))=0;
++relative=abs((comp_temp-md.initialization.temperature)./md.initialization.temperature)*100.;
++relative(find(comp_temp==md.initialization.temperature))=0.;
+ plotmodel(md,'data',comp_temp,'title','Modeled temperature [K]','data',md.initialization.temperature,'view',3,...
+ 	'title','Analytical temperature [K]','view',3,'data',comp_temp-md.initialization.temperature,...
+ 	'title','Absolute error [K]','view',3,'data',relative,'title','Relative error [%]','view',3,...
+ 	'figposition','mathieu','FontSize#all',20)
+-if printingflag, 
++if printingflag,
+ 	set(gcf,'Color','w')
+ 	printmodel('thermaladvection','png','margin','on','marginsize',25,'frame','off','resolution',0.7,'hardcopy','off');
+ 	system(['mv thermaladvection.png ' ISSM_DIR '/website/doc_pdf/validation/Images/EISMINT ']);
+Index: ../trunk-jpl/test/NightlyRun/test1401.m
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/test1401.m	(revision 14101)
++++ ../trunk-jpl/test/NightlyRun/test1401.m	(revision 14102)
+@@ -1,36 +1,36 @@
+ %test the anisotropic mesh adaptation
+-%function to capture = exp(-(sqrt((md.mesh.x+0.1).^2+(md.mesh.y+0.1).^2)-0.75).^2*10^6)+((md.mesh.x+0.1).^2+(md.mesh.y+0.1).^2)/2;
++%function to capture = exp(-(sqrt((md.mesh.x+0.1).^2+(md.mesh.y+0.1).^2)-0.75).^2*10.^6)+((md.mesh.x+0.1).^2+(md.mesh.y+0.1).^2)/2.;
+ printingflag=false;
+ 
+ %create square mesh
+-L=1; %in m
++L=1.; %in m
+ nx=70; %numberof nodes in x direction
+ ny=70;
+ md=model();
+ 
+ %mesh adaptation loop YAMS
+ md=squaremesh(md,L,L,nx,ny);
+-md.inversion.vel_obs=exp(-(sqrt((md.mesh.x+0.1).^2+(md.mesh.y+0.1).^2)-0.75).^2*10^6)+((md.mesh.x+0.1).^2+(md.mesh.y+0.1).^2)/2;
++md.inversion.vel_obs=exp(-(sqrt((md.mesh.x+0.1).^2+(md.mesh.y+0.1).^2)-0.75).^2*10.^6)+((md.mesh.x+0.1).^2+(md.mesh.y+0.1).^2)/2.;
+ plotmodel(md,'data',md.inversion.vel_obs,'data',md.inversion.vel_obs,'nlines',1,'ncols',2,'title','','figposition',[500 500 1000 500],'axis#all','equal','xlim#all',[0 1],'ylim#all',[0 1],'edgecolor#1','w'); pause(0.5);
+-if printingflag, 
++if printingflag,
+ 	set(gcf,'Color','w')
+ 	printmodel('mesh1_yams1','png','margin','on','marginsize',25,'frame','off','resolution',1,'hardcopy','off');
+ 	system(['mv mesh1_yams1.png ' ISSM_DIR '/website/doc_pdf/validation/Images/Mesh/ ']);
+ end
+ 
+-md=YamsCall(md,md.inversion.vel_obs,0.001,0.3,1.3,10^-4);
+-md.inversion.vel_obs=exp(-(sqrt((md.mesh.x+0.1).^2+(md.mesh.y+0.1).^2)-0.75).^2*10^6)+((md.mesh.x+0.1).^2+(md.mesh.y+0.1).^2)/2;
++md=YamsCall(md,md.inversion.vel_obs,0.001,0.3,1.3,10.^-4);
++md.inversion.vel_obs=exp(-(sqrt((md.mesh.x+0.1).^2+(md.mesh.y+0.1).^2)-0.75).^2*10.^6)+((md.mesh.x+0.1).^2+(md.mesh.y+0.1).^2)/2.;
+ plotmodel(md,'data',md.inversion.vel_obs,'data',md.inversion.vel_obs,'nlines',1,'ncols',2,'title','','figposition',[500 500 1000 500],'axis#all','equal','xlim#all',[0 1],'ylim#all',[0 1],'edgecolor#1','w'); pause(0.5);
+-if printingflag, 
++if printingflag,
+ 	set(gcf,'Color','w')
+ 	printmodel('mesh1_yams2','png','margin','on','marginsize',25,'frame','off','resolution',1,'hardcopy','off');
+ 	system(['mv mesh1_yams2.png ' ISSM_DIR '/website/doc_pdf/validation/Images/Mesh/ ']);
+ end
+ 
+ md=YamsCall(md,md.inversion.vel_obs,0.001,0.3,2.5,0.008);
+-md.inversion.vel_obs=exp(-(sqrt((md.mesh.x+0.1).^2+(md.mesh.y+0.1).^2)-0.75).^2*10^6)+((md.mesh.x+0.1).^2+(md.mesh.y+0.1).^2)/2;
++md.inversion.vel_obs=exp(-(sqrt((md.mesh.x+0.1).^2+(md.mesh.y+0.1).^2)-0.75).^2*10.^6)+((md.mesh.x+0.1).^2+(md.mesh.y+0.1).^2)/2.;
+ plotmodel(md,'data',md.inversion.vel_obs,'data',md.inversion.vel_obs,'nlines',1,'ncols',2,'title','','figposition',[500 500 1000 500],'axis#all','equal','xlim#all',[0 1],'ylim#all',[0 1],'edgecolor#1','w'); pause(0.5);
+-if printingflag, 
++if printingflag,
+ 	set(gcf,'Color','w')
+ 	printmodel('mesh1_yams3','png','margin','on','marginsize',25,'frame','off','resolution',1,'hardcopy','off');
+ 	system(['mv mesh1_yams3.png ' ISSM_DIR '/website/doc_pdf/validation/Images/Mesh/ ']);
+@@ -40,19 +40,19 @@
+ 
+ %mesh adaptation loop BAMG
+ md=squaremesh(md,L,L,nx,ny);
+-md.inversion.vel_obs=exp(-(sqrt((md.mesh.x+0.1).^2+(md.mesh.y+0.1).^2)-0.75).^2*10^6)+((md.mesh.x+0.1).^2+(md.mesh.y+0.1).^2)/2;
++md.inversion.vel_obs=exp(-(sqrt((md.mesh.x+0.1).^2+(md.mesh.y+0.1).^2)-0.75).^2*10.^6)+((md.mesh.x+0.1).^2+(md.mesh.y+0.1).^2)/2.;
+ plotmodel(md,'data',md.inversion.vel_obs,'data',md.inversion.vel_obs,'nlines',1,'ncols',2,'title','','figposition',[500 500 1000 500],'axis#all','equal','xlim#all',[0 1],'ylim#all',[0 1],'edgecolor#1','w'); pause(0.5);
+-if printingflag, 
++if printingflag,
+ 	set(gcf,'Color','w')
+ 	printmodel('mesh1_bamg1','png','margin','on','marginsize',25,'frame','off','resolution',1,'hardcopy','off');
+ 	system(['mv mesh1_bamg1.png ' ISSM_DIR '/website/doc_pdf/validation/Images/Mesh/ ']);
+ end
+ 
+ md.private.bamg=NaN;
+-md=bamg(md,'field',md.inversion.vel_obs,'hmin',0.001,'hmax',0.3,'gradation',1.3,'err',10^-4);
+-md.inversion.vel_obs=exp(-(sqrt((md.mesh.x+0.1).^2+(md.mesh.y+0.1).^2)-0.75).^2*10^6)+((md.mesh.x+0.1).^2+(md.mesh.y+0.1).^2)/2;
++md=bamg(md,'field',md.inversion.vel_obs,'hmin',0.001,'hmax',0.3,'gradation',1.3,'err',10.^-4);
++md.inversion.vel_obs=exp(-(sqrt((md.mesh.x+0.1).^2+(md.mesh.y+0.1).^2)-0.75).^2*10.^6)+((md.mesh.x+0.1).^2+(md.mesh.y+0.1).^2)/2.;
+ plotmodel(md,'data',md.inversion.vel_obs,'data',md.inversion.vel_obs,'nlines',1,'ncols',2,'title','','figposition',[500 500 1000 500],'axis#all','equal','xlim#all',[0 1],'ylim#all',[0 1],'edgecolor#1','w'); pause(0.5);
+-if printingflag, 
++if printingflag,
+ 	set(gcf,'Color','w')
+ 	printmodel('mesh1_bamg2','png','margin','on','marginsize',25,'frame','off','resolution',1,'hardcopy','off');
+ 	system(['mv mesh1_bamg2.png ' ISSM_DIR '/website/doc_pdf/validation/Images/Mesh/ ']);
+@@ -60,9 +60,9 @@
+ 
+ md.private.bamg=NaN;
+ md=bamg(md,'field',md.inversion.vel_obs,'hmin',0.001,'hmax',0.3,'gradation',2.5,'err',0.008);
+-md.inversion.vel_obs=exp(-(sqrt((md.mesh.x+0.1).^2+(md.mesh.y+0.1).^2)-0.75).^2*10^6)+((md.mesh.x+0.1).^2+(md.mesh.y+0.1).^2)/2;
++md.inversion.vel_obs=exp(-(sqrt((md.mesh.x+0.1).^2+(md.mesh.y+0.1).^2)-0.75).^2*10.^6)+((md.mesh.x+0.1).^2+(md.mesh.y+0.1).^2)/2.;
+ plotmodel(md,'data',md.inversion.vel_obs,'data',md.inversion.vel_obs,'nlines',1,'ncols',2,'title','','figposition',[500 500 1000 500],'axis#all','equal','xlim#all',[0 1],'ylim#all',[0 1],'edgecolor#1','w'); pause(0.5);
+-if printingflag, 
++if printingflag,
+ 	set(gcf,'Color','w')
+ 	printmodel('mesh1_bamg3','png','margin','on','marginsize',25,'frame','off','resolution',1,'hardcopy','off');
+ 	system(['mv mesh1_bamg3.png ' ISSM_DIR '/website/doc_pdf/validation/Images/Mesh/ ']);
+Index: ../trunk-jpl/test/NightlyRun/test1303.m
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/test1303.m	(revision 14101)
++++ ../trunk-jpl/test/NightlyRun/test1303.m	(revision 14102)
+@@ -9,29 +9,30 @@
+ md=setmask(md,'all','');
+ md=parameterize(md,'../Par/SquareThermal.par');
+ md=extrude(md,11,2.);
+-md=setflowequation(md,'Pattyn','all');
+-pos1=find(md.mesh.elementonbed);     md.thermal.spctemperature(md.mesh.elements(pos1,1:3))=10;
+-pos2=find(md.mesh.elementonsurface); md.thermal.spctemperature(md.mesh.elements(pos2,4:6))=0;
++md=setflowequation(md,'pattyn','all');
++
++pos1=find(md.mesh.elementonbed);     md.thermal.spctemperature(md.mesh.elements(pos1,1:3))=10.;
++pos2=find(md.mesh.elementonsurface); md.thermal.spctemperature(md.mesh.elements(pos2,4:6))=0.;
+ md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+ 
+ %analytical results
+ %d2T/dz2=0 T(bed)=10 T(surface)=0  => T=0*(z-bed)/thickness+10*(surface-z)/thickness
+ %each layer of the 3d mesh must have a constant value
+-md.initialization.temperature=10*(md.geometry.surface-md.mesh.z)./md.geometry.thickness;
++md.initialization.temperature=10.*(md.geometry.surface-md.mesh.z)./md.geometry.thickness;
+ 
+-%modeled  results
++%modeled results
+ md.cluster=generic('name',oshostname(),'np',2);
+ md=solve(md,ThermalSolutionEnum());
+ 
+ %plot results
+ comp_temp=md.results.ThermalSolution.Temperature;
+-relative=abs((comp_temp-md.initialization.temperature)./md.initialization.temperature)*100;
+-relative(find(comp_temp==md.initialization.temperature))=0;
++relative=abs((comp_temp-md.initialization.temperature)./md.initialization.temperature)*100.;
++relative(find(comp_temp==md.initialization.temperature))=0.;
+ plotmodel(md,'data',comp_temp,'title','Modeled temperature [K]','data',md.initialization.temperature,'view',3,...
+ 	'title','Analytical temperature [K]','view',3,'data',comp_temp-md.initialization.temperature,...
+ 	'title','Absolute error [K]','view',3,'data',relative,'title','Relative error [%]','view',3,...
+ 	'figposition','mathieu','FontSize#all',20)
+-if printingflag, 
++if printingflag,
+ 	set(gcf,'Color','w')
+ 	printmodel('thermalconduction','png','margin','on','marginsize',25,'frame','off','resolution',0.7,'hardcopy','off');
+ 	system(['mv thermalconduction.png ' ISSM_DIR '/website/doc_pdf/validation/Images/Thermal ']);
+Index: ../trunk-jpl/test/NightlyRun/InNeedOfDebugging/test1301.py
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/InNeedOfDebugging/test1301.py	(revision 14101)
++++ ../trunk-jpl/test/NightlyRun/InNeedOfDebugging/test1301.py	(revision 14102)
+@@ -1,87 +0,0 @@
+-"""
+-== == == == == == == == == == == == == == == == == == ==
+-Auto generated python script for ISSM:   test1301.m
+-Created on 2012-09-27 via translateToPy.py Ver 1.0 by mikep
+-== == == == == == == == == == == == == == == == == == ==
+-
+-Matlab script conversion into python
+-translateToPy.py Author: Michael Pellegrin
+-translateToPy.py Date: 09/24/12
+-== == == == == == == == == == == == == == == == == == ==
+-"""
+-
+-from MatlabFuncs import *
+-from model import *
+-from EnumDefinitions import *
+-from numpy import *
+-from triangle import *
+-from setmask import *
+-from parameterize import *
+-from setflowequation import *
+-from solve import *
+-
+-#  This file can be run to check that the melting in simple conduction is correctly modeled.
+-
+-#  There is no velocity (no advection) the only thermal boundary conditions are an imposed temperature
+-
+-#  at upper surface and an impose flux at its base. The result must be a linear temperature from the upper to the lower
+-
+-#  surface with an imposed slope (Geothermal flux). if it is not the case, something is thermal modeling has been changed...
+-
+-printingflag=false
+-
+-
+-md=model()
+-md=triangle(md,'../Exp/Square.exp',100000)
+-md=setmask(md,'','')
+-md=parameterize(md,'../Par/SquareThermal.py')
+-md.extrude(3,2.)
+-md=setflowequation(md,'Pattyn','all')
+-
+-
+-# Some conditions specific to melting test
+-
+-md.initialization.pressure=zeros(md.mesh.numberofvertices,1)
+-md.initialization.temperature=273.15*ones(md.mesh.numberofvertices,1)
+-pos=numpy.nonzero(md.mesh.vertexonsurface)
+-md.thermal.spctemperature(pos)=md.initialization.temperature(pos)
+-md.materials.rheology_B=paterson(md.initialization.temperature)
+-
+-
+-# analytical results
+-
+-# melting heat = geothermal flux
+-
+-# Mb*L*rho=G   => Mb=G/L*rho
+-
+-melting=md.basalforcings.geothermalflux/(md.materials.rho_ice*md.materials.latentheat)*md.constants.yts
+-
+-
+-# modeled  results
+-
+-md.cluster=generic('name',oshostname(),'np',2)
+-md=solve(md,ThermalSolutionEnum())
+-
+-
+-# plot results
+-
+-comp_melting=md.results.ThermalSolution.BasalforcingsMeltingRate
+-relative=abs((comp_melting-melting)./melting)*100
+-relative(find(comp_melting==melting))=0
+-plotmodel()(md,'data',comp_melting,'title','Modeled melting','data',melting,'title','Analytical melting',\
+-	'data',comp_melting-melting,'title','Absolute error','data',relative,'title','Relative error [%]',\
+-	'layer#all',1,'caxis#2',[1.02964 1.02966]*10^-4,'FontSize#all',20,'figposition','mathieu')
+-if printingflag, 
+-	set(gcf,'Color','w')
+-	printmodel()('thermalmelting','png','margin','on','marginsize',25,'frame','off','resolution',0.7,'hardcopy','off')
+-	system(['mv thermalmelting.png ' ISSM_DIR '/website/doc_pdf/validation/Images/Thermal '])
+-end
+-
+-
+-
+-
+-# Fields and tolerances to track changes
+-
+-field_names     =['BasalMelting']
+-field_tolerances=[1e-08]
+-field_values    =[comp_melting]
+Index: ../trunk-jpl/test/NightlyRun/InNeedOfDebugging/test1302.py
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/InNeedOfDebugging/test1302.py	(revision 14101)
++++ ../trunk-jpl/test/NightlyRun/InNeedOfDebugging/test1302.py	(revision 14102)
+@@ -1,86 +0,0 @@
+-"""
+-== == == == == == == == == == == == == == == == == == ==
+-Auto generated python script for ISSM:   test1302.m
+-Created on 2012-09-27 via translateToPy.py Ver 1.0 by mikep
+-== == == == == == == == == == == == == == == == == == ==
+-
+-Matlab script conversion into python
+-translateToPy.py Author: Michael Pellegrin
+-translateToPy.py Date: 09/24/12
+-== == == == == == == == == == == == == == == == == == ==
+-"""
+-
+-from MatlabFuncs import *
+-from model import *
+-from EnumDefinitions import *
+-from numpy import *
+-from triangle import *
+-from setmask import *
+-from parameterize import *
+-from setflowequation import *
+-from solve import *
+-
+-#  This file can be run to check that the advection-diffusion  is correctly modeled.
+-
+-#  There is u=v=0 and w=cst everywhere the only thermal boundary conditions are an imposed temperature
+-
+-#  at upper surface and an impose flux at its base.
+-
+-printingflag=false
+-
+-
+-md=model()
+-md=triangle(md,'../Exp/Square.exp',100000)
+-md=setmask(md,'','')
+-md=parameterize(md,'../Par/SquareThermal.py')
+-md.extrude(30,1.)   %NB: the more one extrudes, the better (10-> relative~0.35%, 20->0.1%, 30->0.05%.)
+-md=setflowequation(md,'Pattyn','all') 
+-
+-
+-# Thermal boundary conditions
+-
+-pos1=numpy.nonzero(md.mesh.elementonbed)     md.thermal.spctemperature(md.mesh.elements(pos1,1:3))=10
+-pos2=numpy.nonzero(md.mesh.elementonsurface) md.thermal.spctemperature(md.mesh.elements(pos2,4:6))=0
+-md.initialization.vz=0.1*ones(md.mesh.numberofvertices,1)
+-md.initialization.vel=sqrt( md.initialization.vx.^2+ md.initialization.vy.^2+ md.initialization.vz.^2)
+-md.initialization.pressure=zeros(md.mesh.numberofvertices,1)
+-
+-
+-md.thermal.stabilization=2
+-# analytical results
+-
+-# d2T/dz2-w*rho_ice*c/k*dT/dz=0   T(surface)=0  T(bed)=10   => T=A exp(alpha z)+B
+-
+-alpha=0.1/md.constants.yts*md.materials.rho_ice*md.materials.heatcapacity/md.materials.thermalconductivity   %alpha=w rho_ice c /k  and w=0.1m/an
+-A=10/(exp(alpha*(-1000))-1)    %A=T(bed)/(exp(alpha*bed)-1)  with bed=-1000 T(bed)=10
+-B=-A
+-md.initialization.temperature=A*exp(alpha*md.mesh.z)+B
+-
+-
+-# modeled  results
+-
+-md.cluster=generic('name',oshostname(),'np',2)
+-md=solve(md,ThermalSolutionEnum())
+-
+-
+-# plot results
+-
+-comp_temp=md.results.ThermalSolution.Temperature
+-relative=abs((comp_temp-md.initialization.temperature)./md.initialization.temperature)*100
+-relative(find(comp_temp==md.initialization.temperature))=0
+-plotmodel()(md,'data',comp_temp,'title','Modeled temperature [K]','data',md.initialization.temperature,'view',3,\
+-	'title','Analytical temperature [K]','view',3,'data',comp_temp-md.initialization.temperature,\
+-	'title','Absolute error [K]','view',3,'data',relative,'title','Relative error [%]','view',3,\
+-	'figposition','mathieu','FontSize#all',20)
+-if printingflag, 
+-	set(gcf,'Color','w')
+-	printmodel()('thermaladvection','png','margin','on','marginsize',25,'frame','off','resolution',0.7,'hardcopy','off')
+-	system(['mv thermaladvection.png ' ISSM_DIR '/website/doc_pdf/validation/Images/EISMINT '])
+-end
+-
+-
+-# Fields and tolerances to track changes
+-
+-field_names     =['AdvectionTemperature']
+-field_tolerances=[1e-13]
+-field_values    =[comp_temp]
+Index: ../trunk-jpl/test/NightlyRun/InNeedOfDebugging/test1303.py
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/InNeedOfDebugging/test1303.py	(revision 14101)
++++ ../trunk-jpl/test/NightlyRun/InNeedOfDebugging/test1303.py	(revision 14102)
+@@ -1,80 +0,0 @@
+-"""
+-== == == == == == == == == == == == == == == == == == ==
+-Auto generated python script for ISSM:   test1303.m
+-Created on 2012-09-27 via translateToPy.py Ver 1.0 by mikep
+-== == == == == == == == == == == == == == == == == == ==
+-
+-Matlab script conversion into python
+-translateToPy.py Author: Michael Pellegrin
+-translateToPy.py Date: 09/24/12
+-== == == == == == == == == == == == == == == == == == ==
+-"""
+-
+-from MatlabFuncs import *
+-from model import *
+-from EnumDefinitions import *
+-from numpy import *
+-from triangle import *
+-from setmask import *
+-from parameterize import *
+-from setflowequation import *
+-from solve import *
+-
+-#  This file can be run to check that the conduction is correctly modeled.
+-
+-#  There is no velocity (no advection) the only thermal boundary conditions are an imposed temperature
+-
+-#  at the lower and upper surface. The result must be a linear temperature from the upper to the lower
+-
+-#  surface. if it is not the case, something is thermal modeling has been changed...
+-
+-printingflag=false
+-
+-
+-md=model()
+-md=triangle(md,'../Exp/Square.exp',100000)
+-md=setmask(md,'all','')
+-md=parameterize(md,'../Par/SquareThermal.py')
+-md.extrude(11,2.)
+-md=setflowequation(md,'Pattyn','all')
+-pos1=numpy.nonzero(md.mesh.elementonbed)     md.thermal.spctemperature(md.mesh.elements(pos1,1:3))=10
+-pos2=numpy.nonzero(md.mesh.elementonsurface) md.thermal.spctemperature(md.mesh.elements(pos2,4:6))=0
+-md.initialization.pressure=zeros(md.mesh.numberofvertices,1)
+-
+-
+-# analytical results
+-
+-# d2T/dz2=0 T(bed)=10 T(surface)=0  => T=0*(z-bed)/thickness+10*(surface-z)/thickness
+-
+-# each layer of the 3d mesh must have a constant value
+-
+-md.initialization.temperature=10*(md.geometry.surface-md.mesh.z)./md.geometry.thickness
+-
+-
+-# modeled  results
+-
+-md.cluster=generic('name',oshostname(),'np',2)
+-md=solve(md,ThermalSolutionEnum())
+-
+-
+-# plot results
+-
+-comp_temp=md.results.ThermalSolution.Temperature
+-relative=abs((comp_temp-md.initialization.temperature)./md.initialization.temperature)*100
+-relative(find(comp_temp==md.initialization.temperature))=0
+-plotmodel()(md,'data',comp_temp,'title','Modeled temperature [K]','data',md.initialization.temperature,'view',3,\
+-	'title','Analytical temperature [K]','view',3,'data',comp_temp-md.initialization.temperature,\
+-	'title','Absolute error [K]','view',3,'data',relative,'title','Relative error [%]','view',3,\
+-	'figposition','mathieu','FontSize#all',20)
+-if printingflag, 
+-	set(gcf,'Color','w')
+-	printmodel()('thermalconduction','png','margin','on','marginsize',25,'frame','off','resolution',0.7,'hardcopy','off')
+-	system(['mv thermalconduction.png ' ISSM_DIR '/website/doc_pdf/validation/Images/Thermal '])
+-end
+-
+-
+-# Fields and tolerances to track changes
+-
+-field_names     =['ConductionTemperature']
+-field_tolerances=[1e-13]
+-field_values    =[comp_temp]
+Index: ../trunk-jpl/test/NightlyRun/InNeedOfDebugging/test1304.py
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/InNeedOfDebugging/test1304.py	(revision 14101)
++++ ../trunk-jpl/test/NightlyRun/InNeedOfDebugging/test1304.py	(revision 14102)
+@@ -1,82 +0,0 @@
+-"""
+-== == == == == == == == == == == == == == == == == == ==
+-Auto generated python script for ISSM:   test1304.m
+-Created on 2012-09-27 via translateToPy.py Ver 1.0 by mikep
+-== == == == == == == == == == == == == == == == == == ==
+-
+-Matlab script conversion into python
+-translateToPy.py Author: Michael Pellegrin
+-translateToPy.py Date: 09/24/12
+-== == == == == == == == == == == == == == == == == == ==
+-"""
+-
+-from MatlabFuncs import *
+-from model import *
+-from EnumDefinitions import *
+-from numpy import *
+-from triangle import *
+-from setmask import *
+-from parameterize import *
+-from setflowequation import *
+-from solve import *
+-
+-#  This file can be run to check that the geothermal flux in simple conduction is correctly modeled.
+-
+-#  There is no velocity (no advection) the only thermal boundary conditions are an imposed temperature
+-
+-#  at upper surface and an impose flux at its base. The result must be a linear temperature from the upper to the lower
+-
+-#  surface with an imposed slope (Geothermal flux). if it is not the case, something is thermal modeling has been changed...
+-
+-printingflag=false
+-
+-
+-md=model()
+-md=triangle(md,'../Exp/Square.exp',100000)
+-md=setmask(md,'','')
+-md=parameterize(md,'../Par/SquareThermal.py')
+-md.extrude(11,1.)
+-md=setflowequation(md,'Pattyn','all')
+-
+-
+-pos2=numpy.nonzero(md.mesh.elementonsurface) md.thermal.spctemperature(md.mesh.elements(pos2,4:6))=0
+-md.initialization.pressure=zeros(md.mesh.numberofvertices,1)
+-md.basalforcings.geothermalflux(:)=0.1 %100mW/m^2
+-
+-
+-# analytical results
+-
+-# the result is linear with depth and is equal to 0 on the upper surface (See BC)
+-
+-# d2T/dz2=0  -k*dT/dz(bed)=G  T(surface)=0  => T=-G/k*(z-surface)
+-
+-md.initialization.temperature=-0.1/md.materials.thermalconductivity*(md.mesh.z-md.geometry.surface) %G=0.1 W/m2
+-
+-
+-# modeled  results
+-
+-md.cluster=generic('name',oshostname(),'np',2)
+-md=solve(md,ThermalSolutionEnum())
+-
+-
+-# plot results
+-
+-comp_temp=md.results.ThermalSolution.Temperature
+-relative=abs((comp_temp-md.initialization.temperature)./md.initialization.temperature)*100
+-relative(find(comp_temp==md.initialization.temperature))=0
+-plotmodel()(md,'data',comp_temp,'title','Modeled temperature [K]','data',md.initialization.temperature,'view',3,\
+-	'title','Analytical temperature','view',3,'data',comp_temp-md.initialization.temperature,\
+-	'title','Absolute error [K]','view',3,'data',relative,'title','Relative error [%]','view',3,\
+-	'figposition','mathieu','FontSize#all',20)
+-if printingflag, 
+-	set(gcf,'Color','w')
+-	printmodel()('thermalgeothermalflux','png','margin','on','marginsize',25,'frame','off','resolution',0.7,'hardcopy','off')
+-	system(['mv thermalgeothermalflux.png ' ISSM_DIR '/website/doc_pdf/validation/Images/Thermal '])
+-end
+-
+-
+-# Fields and tolerances to track changes
+-
+-field_names     =['GeothermalFluxTemperature']
+-field_tolerances=[1e-13]
+-field_values    =[comp_temp]
+Index: ../trunk-jpl/test/NightlyRun/test1402.m
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/test1402.m	(revision 14101)
++++ ../trunk-jpl/test/NightlyRun/test1402.m	(revision 14102)
+@@ -2,43 +2,43 @@
+ printingflag=false;
+ 
+ %create square mesh
+-L=1; %in m
++L=1.; %in m
+ nx=30; %numberof nodes in x direction
+ ny=30;
+ md=model();
+ 
+ %mesh adaptation loop YAMS
+ md=squaremesh(md,L,L,nx,ny);
+-u=4*md.mesh.x-2; v=4*md.mesh.y-2;
+-md.inversion.vel_obs=tanh(30*(u.^2+v.^2-0.25)) ...
+-	+tanh(30*((u-0.75).^2+(v-0.75).^2-0.25)) +tanh(30*((u-0.75).^2+(v+0.75).^2-0.25)) ...
+-	+tanh(30*((u+0.75).^2+(v-0.75).^2-0.25)) +tanh(30*((u+0.75).^2+(v+0.75).^2-0.25)) ;
++u=4.*md.mesh.x-2.; v=4.*md.mesh.y-2.;
++md.inversion.vel_obs=tanh(30.*(u.^2+v.^2-0.25)) ...
++	+tanh(30.*((u-0.75).^2+(v-0.75).^2-0.25)) +tanh(30.*((u-0.75).^2+(v+0.75).^2-0.25)) ...
++	+tanh(30.*((u+0.75).^2+(v-0.75).^2-0.25)) +tanh(30.*((u+0.75).^2+(v+0.75).^2-0.25));
+ plotmodel(md,'data',md.inversion.vel_obs,'data',md.inversion.vel_obs,'nlines',1,'ncols',2,'title','','figposition',[500 500 1000 500],'axis#all','equal','xlim#all',[0 1],'ylim#all',[0 1],'edgecolor#1','w'); pause(0.5);
+-if printingflag, 
++if printingflag,
+ 	set(gcf,'Color','w')
+ 	printmodel('mesh2_yams1','png','margin','on','marginsize',25,'frame','off','resolution',1,'hardcopy','off');
+ 	system(['mv mesh2_yams1.png ' ISSM_DIR '/website/doc_pdf/validation/Images/Mesh/ ']);
+ end
+ 
+-md=YamsCall(md,md.inversion.vel_obs,0.005,0.3,2.3,10^-2);
+-u=4*md.mesh.x-2; v=4*md.mesh.y-2;
+-md.inversion.vel_obs=tanh(30*(u.^2+v.^2-0.25)) ...
+-	+tanh(30*((u-0.75).^2+(v-0.75).^2-0.25)) +tanh(30*((u-0.75).^2+(v+0.75).^2-0.25)) ...
+-	+tanh(30*((u+0.75).^2+(v-0.75).^2-0.25)) +tanh(30*((u+0.75).^2+(v+0.75).^2-0.25)) ;
++md=YamsCall(md,md.inversion.vel_obs,0.005,0.3,2.3,10.^2);
++u=4.*md.mesh.x-2.; v=4.*md.mesh.y-2.;
++md.inversion.vel_obs=tanh(30.*(u.^2+v.^2-0.25)) ...
++	+tanh(30.*((u-0.75).^2+(v-0.75).^2-0.25)) +tanh(30.*((u-0.75).^2+(v+0.75).^2-0.25)) ...
++	+tanh(30.*((u+0.75).^2+(v-0.75).^2-0.25)) +tanh(30.*((u+0.75).^2+(v+0.75).^2-0.25));
+ plotmodel(md,'data',md.inversion.vel_obs,'data',md.inversion.vel_obs,'nlines',1,'ncols',2,'title','','figposition',[500 500 1000 500],'axis#all','equal','xlim#all',[0 1],'ylim#all',[0 1],'edgecolor#1','w'); pause(0.5);
+-if printingflag, 
++if printingflag,
+ 	set(gcf,'Color','w')
+ 	printmodel('mesh2_yams2','png','margin','on','marginsize',25,'frame','off','resolution',1,'hardcopy','off');
+ 	system(['mv mesh2_yams2.png ' ISSM_DIR '/website/doc_pdf/validation/Images/Mesh/ ']);
+ end
+ 
+ md=YamsCall(md,md.inversion.vel_obs,0.005,0.3,3,0.005);
+-u=4*md.mesh.x-2; v=4*md.mesh.y-2;
+-md.inversion.vel_obs=tanh(30*(u.^2+v.^2-0.25)) ...
+-	+tanh(30*((u-0.75).^2+(v-0.75).^2-0.25)) +tanh(30*((u-0.75).^2+(v+0.75).^2-0.25)) ...
+-	+tanh(30*((u+0.75).^2+(v-0.75).^2-0.25)) +tanh(30*((u+0.75).^2+(v+0.75).^2-0.25)) ;
++u=4.*md.mesh.x-2.; v=4.*md.mesh.y-2.;
++md.inversion.vel_obs=tanh(30.*(u.^2+v.^2-0.25)) ...
++	+tanh(30.*((u-0.75).^2+(v-0.75).^2-0.25)) +tanh(30.*((u-0.75).^2+(v+0.75).^2-0.25)) ...
++	+tanh(30.*((u+0.75).^2+(v-0.75).^2-0.25)) +tanh(30.*((u+0.75).^2+(v+0.75).^2-0.25));
+ plotmodel(md,'data',md.inversion.vel_obs,'data',md.inversion.vel_obs,'nlines',1,'ncols',2,'title','','figposition',[500 500 1000 500],'axis#all','equal','xlim#all',[0 1],'ylim#all',[0 1],'edgecolor#1','w'); pause(0.5);
+-if printingflag, 
++if printingflag,
+ 	set(gcf,'Color','w')
+ 	printmodel('mesh2_yams3','png','margin','on','marginsize',25,'frame','off','resolution',1,'hardcopy','off');
+ 	system(['mv mesh2_yams3.png ' ISSM_DIR '/website/doc_pdf/validation/Images/Mesh/ ']);
+@@ -48,25 +48,25 @@
+ 
+ %mesh adaptation loop BAMG
+ md=squaremesh(md,L,L,nx,ny);
+-u=4*md.mesh.x-2; v=4*md.mesh.y-2;
+-md.inversion.vel_obs=tanh(30*(u.^2+v.^2-0.25)) ...
+-	+tanh(30*((u-0.75).^2+(v-0.75).^2-0.25)) +tanh(30*((u-0.75).^2+(v+0.75).^2-0.25)) ...
+-	+tanh(30*((u+0.75).^2+(v-0.75).^2-0.25)) +tanh(30*((u+0.75).^2+(v+0.75).^2-0.25)) ;
++u=4.*md.mesh.x-2.; v=4.*md.mesh.y-2.;
++md.inversion.vel_obs=tanh(30.*(u.^2+v.^2-0.25)) ...
++	+tanh(30.*((u-0.75).^2+(v-0.75).^2-0.25)) +tanh(30.*((u-0.75).^2+(v+0.75).^2-0.25)) ...
++	+tanh(30.*((u+0.75).^2+(v-0.75).^2-0.25)) +tanh(30.*((u+0.75).^2+(v+0.75).^2-0.25));
+ plotmodel(md,'data',md.inversion.vel_obs,'data',md.inversion.vel_obs,'nlines',1,'ncols',2,'title','','figposition',[500 500 1000 500],'axis#all','equal','xlim#all',[0 1],'ylim#all',[0 1],'edgecolor#1','w'); pause(0.5);
+-if printingflag, 
++if printingflag,
+ 	set(gcf,'Color','w')
+ 	printmodel('mesh2_bamg1','png','margin','on','marginsize',25,'frame','off','resolution',1,'hardcopy','off');
+ 	system(['mv mesh2_bamg1.png ' ISSM_DIR '/website/doc_pdf/validation/Images/Mesh/ ']);
+ end
+ 
+ md.private.bamg=NaN;
+-md=bamg(md,'field',md.inversion.vel_obs,'hmin',0.005,'hmax',0.3,'gradation',2.3,'err',10^-2);
+-u=4*md.mesh.x-2; v=4*md.mesh.y-2;
+-md.inversion.vel_obs=tanh(30*(u.^2+v.^2-0.25)) ...
+-	+tanh(30*((u-0.75).^2+(v-0.75).^2-0.25)) +tanh(30*((u-0.75).^2+(v+0.75).^2-0.25)) ...
+-	+tanh(30*((u+0.75).^2+(v-0.75).^2-0.25)) +tanh(30*((u+0.75).^2+(v+0.75).^2-0.25)) ;
++md=bamg(md,'field',md.inversion.vel_obs,'hmin',0.005,'hmax',0.3,'gradation',2.3,'err',10.^2);
++u=4.*md.mesh.x-2.; v=4.*md.mesh.y-2.;
++md.inversion.vel_obs=tanh(30.*(u.^2+v.^2-0.25)) ...
++	+tanh(30.*((u-0.75).^2+(v-0.75).^2-0.25)) +tanh(30.*((u-0.75).^2+(v+0.75).^2-0.25)) ...
++	+tanh(30.*((u+0.75).^2+(v-0.75).^2-0.25)) +tanh(30.*((u+0.75).^2+(v+0.75).^2-0.25));
+ plotmodel(md,'data',md.inversion.vel_obs,'data',md.inversion.vel_obs,'nlines',1,'ncols',2,'title','','figposition',[500 500 1000 500],'axis#all','equal','xlim#all',[0 1],'ylim#all',[0 1],'edgecolor#1','w'); pause(0.5);
+-if printingflag, 
++if printingflag,
+ 	set(gcf,'Color','w')
+ 	printmodel('mesh2_bamg2','png','margin','on','marginsize',25,'frame','off','resolution',1,'hardcopy','off');
+ 	system(['mv mesh2_bamg2.png ' ISSM_DIR '/website/doc_pdf/validation/Images/Mesh/ ']);
+@@ -74,12 +74,12 @@
+ 
+ md.private.bamg=NaN;
+ md=bamg(md,'field',md.inversion.vel_obs,'hmin',0.005,'hmax',0.3,'gradation',3,'err',0.005);
+-u=4*md.mesh.x-2; v=4*md.mesh.y-2;
+-md.inversion.vel_obs=tanh(30*(u.^2+v.^2-0.25)) ...
+-	+tanh(30*((u-0.75).^2+(v-0.75).^2-0.25)) +tanh(30*((u-0.75).^2+(v+0.75).^2-0.25)) ...
+-	+tanh(30*((u+0.75).^2+(v-0.75).^2-0.25)) +tanh(30*((u+0.75).^2+(v+0.75).^2-0.25)) ;
++u=4.*md.mesh.x-2.; v=4.*md.mesh.y-2.;
++md.inversion.vel_obs=tanh(30.*(u.^2+v.^2-0.25)) ...
++	+tanh(30.*((u-0.75).^2+(v-0.75).^2-0.25)) +tanh(30.*((u-0.75).^2+(v+0.75).^2-0.25)) ...
++	+tanh(30.*((u+0.75).^2+(v-0.75).^2-0.25)) +tanh(30.*((u+0.75).^2+(v+0.75).^2-0.25));
+ plotmodel(md,'data',md.inversion.vel_obs,'data',md.inversion.vel_obs,'nlines',1,'ncols',2,'title','','figposition',[500 500 1000 500],'axis#all','equal','xlim#all',[0 1],'ylim#all',[0 1],'edgecolor#1','w'); pause(0.5);
+-if printingflag, 
++if printingflag,
+ 	set(gcf,'Color','w')
+ 	printmodel('mesh2_bamg3','png','margin','on','marginsize',25,'frame','off','resolution',1,'hardcopy','off');
+ 	system(['mv mesh2_bamg3.png ' ISSM_DIR '/website/doc_pdf/validation/Images/Mesh/ ']);
+@@ -87,12 +87,12 @@
+ 
+ md.private.bamg=NaN;
+ md=bamg(md,'field',md.inversion.vel_obs,'hmin',0.005,'hmax',0.3,'gradation',1.5,'err',0.003,'anisomax',1);
+-u=4*md.mesh.x-2; v=4*md.mesh.y-2;
+-md.inversion.vel_obs=tanh(30*(u.^2+v.^2-0.25)) ...
+-	+tanh(30*((u-0.75).^2+(v-0.75).^2-0.25)) +tanh(30*((u-0.75).^2+(v+0.75).^2-0.25)) ...
+-	+tanh(30*((u+0.75).^2+(v-0.75).^2-0.25)) +tanh(30*((u+0.75).^2+(v+0.75).^2-0.25)) ;
++u=4.*md.mesh.x-2.; v=4.*md.mesh.y-2.;
++md.inversion.vel_obs=tanh(30.*(u.^2+v.^2-0.25)) ...
++	+tanh(30.*((u-0.75).^2+(v-0.75).^2-0.25)) +tanh(30.*((u-0.75).^2+(v+0.75).^2-0.25)) ...
++	+tanh(30.*((u+0.75).^2+(v-0.75).^2-0.25)) +tanh(30.*((u+0.75).^2+(v+0.75).^2-0.25));
+ plotmodel(md,'data',md.inversion.vel_obs,'data',md.inversion.vel_obs,'nlines',1,'ncols',2,'title','','figposition',[500 500 1000 500],'axis#all','equal','xlim#all',[0 1],'ylim#all',[0 1],'edgecolor#1','w'); pause(0.5);
+-if printingflag, 
++if printingflag,
+ 	set(gcf,'Color','w')
+ 	printmodel('mesh2_bamgiso','png','margin','on','marginsize',25,'frame','off','resolution',1,'hardcopy','off');
+ 	system(['mv mesh2_bamgiso.png ' ISSM_DIR '/website/doc_pdf/validation/Images/Mesh/ ']);
+Index: ../trunk-jpl/test/NightlyRun/test1304.m
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/test1304.m	(revision 14101)
++++ ../trunk-jpl/test/NightlyRun/test1304.m	(revision 14102)
+@@ -9,9 +9,9 @@
+ md=setmask(md,'','');
+ md=parameterize(md,'../Par/SquareThermal.par');
+ md=extrude(md,11,1.);
+-md=setflowequation(md,'Pattyn','all');
++md=setflowequation(md,'pattyn','all');
+ 
+-pos2=find(md.mesh.elementonsurface); md.thermal.spctemperature(md.mesh.elements(pos2,4:6))=0;
++pos2=find(md.mesh.elementonsurface); md.thermal.spctemperature(md.mesh.elements(pos2,4:6))=0.;
+ md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+ md.basalforcings.geothermalflux(:)=0.1; %100mW/m^2
+ 
+@@ -20,19 +20,19 @@
+ %d2T/dz2=0  -k*dT/dz(bed)=G  T(surface)=0  => T=-G/k*(z-surface)
+ md.initialization.temperature=-0.1/md.materials.thermalconductivity*(md.mesh.z-md.geometry.surface); %G=0.1 W/m2
+ 
+-%modeled  results
++%modeled results
+ md.cluster=generic('name',oshostname(),'np',2);
+ md=solve(md,ThermalSolutionEnum());
+ 
+ %plot results
+ comp_temp=md.results.ThermalSolution.Temperature;
+-relative=abs((comp_temp-md.initialization.temperature)./md.initialization.temperature)*100;
+-relative(find(comp_temp==md.initialization.temperature))=0;
++relative=abs((comp_temp-md.initialization.temperature)./md.initialization.temperature)*100.;
++relative(find(comp_temp==md.initialization.temperature))=0.;
+ plotmodel(md,'data',comp_temp,'title','Modeled temperature [K]','data',md.initialization.temperature,'view',3,...
+ 	'title','Analytical temperature','view',3,'data',comp_temp-md.initialization.temperature,...
+ 	'title','Absolute error [K]','view',3,'data',relative,'title','Relative error [%]','view',3,...
+ 	'figposition','mathieu','FontSize#all',20)
+-if printingflag, 
++if printingflag,
+ 	set(gcf,'Color','w')
+ 	printmodel('thermalgeothermalflux','png','margin','on','marginsize',25,'frame','off','resolution',0.7,'hardcopy','off');
+ 	system(['mv thermalgeothermalflux.png ' ISSM_DIR '/website/doc_pdf/validation/Images/Thermal ']);
+Index: ../trunk-jpl/test/NightlyRun/test1301.py
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/test1301.py	(revision 0)
++++ ../trunk-jpl/test/NightlyRun/test1301.py	(revision 14102)
+@@ -0,0 +1,60 @@
++import numpy
++from model import *
++from triangle import *
++from setmask import *
++from parameterize import *
++from setflowequation import *
++from paterson import *
++from EnumDefinitions import *
++from solve import *
++from MatlabFuncs import *
++
++"""
++This file can be run to check that the melting in simple conduction is correctly modeled.
++There is no velocity (no advection) the only thermal boundary conditions are an imposed temperature
++at upper surface and an impose flux at its base. The result must be a linear temperature from the upper to the lower
++surface with an imposed slope (Geothermal flux). if it is not the case, something is thermal modeling has been changed...
++"""
++
++printingflag=False
++
++md=model()
++md=triangle(md,'../Exp/Square.exp',100000.)
++md=setmask(md,'','')
++md=parameterize(md,'../Par/SquareThermal.py')
++md.extrude(3,2.)
++md=setflowequation(md,'pattyn','all')
++
++#Some conditions specific to melting test
++md.initialization.pressure=numpy.zeros((md.mesh.numberofvertices,1),int)
++md.initialization.temperature=273.15*numpy.ones((md.mesh.numberofvertices,1))
++pos=numpy.nonzero(md.mesh.vertexonsurface)[0]
++md.thermal.spctemperature[pos]=md.initialization.temperature[pos]
++md.materials.rheology_B=paterson(md.initialization.temperature)
++
++#analytical results
++#melting heat = geothermal flux
++#Mb*L*rho=G   => Mb=G/L*rho
++melting=md.basalforcings.geothermalflux/(md.materials.rho_ice*md.materials.latentheat)*md.constants.yts
++
++#modeled results
++md.cluster=generic('name',oshostname(),'np',2)
++md=solve(md,ThermalSolutionEnum())
++
++#plot results
++comp_melting=md.results.ThermalSolution.BasalforcingsMeltingRate
++relative=numpy.abs((comp_melting-melting)/melting)*100.
++relative[numpy.nonzero(comp_melting==melting)[0]]=0.
++#plotmodel(md,'data',comp_melting,'title','Modeled melting','data',melting,'title','Analytical melting',...
++#	'data',comp_melting-melting,'title','Absolute error','data',relative,'title','Relative error [%]',...
++#	'layer#all',1,'caxis#2',[1.02964 1.02966]*10^-4,'FontSize#all',20,'figposition','mathieu')
++if printingflag:
++	pass
++#	set(gcf,'Color','w')
++#	printmodel('thermalmelting','png','margin','on','marginsize',25,'frame','off','resolution',0.7,'hardcopy','off');
++#	system(['mv thermalmelting.png ' ISSM_DIR '/website/doc_pdf/validation/Images/Thermal ']);
++
++#Fields and tolerances to track changes
++field_names     =['BasalMelting']
++field_tolerances=[1e-08]
++field_values    =[comp_melting]
+
+Property changes on: ../trunk-jpl/test/NightlyRun/test1301.py
+___________________________________________________________________
+Added: svn:executable
+## -0,0 +1 ##
++*
+Index: ../trunk-jpl/test/NightlyRun/python_skipped_tests.txt
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/python_skipped_tests.txt	(revision 14101)
++++ ../trunk-jpl/test/NightlyRun/python_skipped_tests.txt	(revision 14102)
+@@ -10,3 +10,5 @@
+ test417    needs Dakota
+ test418    needs Dakota
+ test420    needs Dakota
++test1401    roundoff error in metric causes different meshes from matlab
++test1402    roundoff error in metric causes different meshes from matlab
+Index: ../trunk-jpl/test/NightlyRun/test1302.py
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/test1302.py	(revision 0)
++++ ../trunk-jpl/test/NightlyRun/test1302.py	(revision 14102)
+@@ -0,0 +1,65 @@
++import numpy
++import sys
++from model import *
++from triangle import *
++from setmask import *
++from parameterize import *
++from setflowequation import *
++from EnumDefinitions import *
++from solve import *
++from MatlabFuncs import *
++
++"""
++This file can be run to check that the advection-diffusion  is correctly modeled.
++There is u=v=0 and w=cst everywhere the only thermal boundary conditions are an imposed temperature
++at upper surface and an impose flux at its base.
++"""
++
++printingflag=False
++
++md=model()
++md=triangle(md,'../Exp/Square.exp',100000.)
++md=setmask(md,'','')
++md=parameterize(md,'../Par/SquareThermal.py')
++md.extrude(30,1.)    #NB: the more one extrudes, the better (10-> relative~0.35%, 20->0.1%, 30->0.05%)
++md=setflowequation(md,'pattyn','all')
++
++#Thermal boundary conditions
++pos1=numpy.nonzero(md.mesh.elementonbed)[0]
++md.thermal.spctemperature[md.mesh.elements[pos1,0:3]-1]=10.
++pos2=numpy.nonzero(md.mesh.elementonsurface)[0]
++md.thermal.spctemperature[md.mesh.elements[pos2,3:6]-1]=0.
++md.initialization.vz=0.1*numpy.ones((md.mesh.numberofvertices,1))
++md.initialization.vel=numpy.sqrt( md.initialization.vx**2+ md.initialization.vy**2+ md.initialization.vz**2)
++md.initialization.pressure=numpy.zeros((md.mesh.numberofvertices,1),int)
++
++md.thermal.stabilization=2
++#analytical results
++#d2T/dz2-w*rho_ice*c/k*dT/dz=0   T(surface)=0  T(bed)=10   => T=A exp(alpha z)+B
++alpha=0.1/md.constants.yts*md.materials.rho_ice*md.materials.heatcapacity/md.materials.thermalconductivity    #alpha=w rho_ice c /k  and w=0.1m/an
++A=10./(numpy.exp(alpha*(-1000.))-1.)    #A=T(bed)/(exp(alpha*bed)-1)  with bed=-1000 T(bed)=10
++B=-A
++md.initialization.temperature=A*numpy.exp(alpha*md.mesh.z)+B
++
++#modeled results
++md.cluster=generic('name',oshostname(),'np',2)
++md=solve(md,ThermalSolutionEnum())
++
++#plot results
++comp_temp=md.results.ThermalSolution.Temperature
++relative=numpy.abs((comp_temp-md.initialization.temperature)/md.initialization.temperature)*100.
++relative[numpy.nonzero(comp_temp==md.initialization.temperature)[0]]=0.
++#plotmodel(md,'data',comp_temp,'title','Modeled temperature [K]','data',md.initialization.temperature,'view',3,...
++#	'title','Analytical temperature [K]','view',3,'data',comp_temp-md.initialization.temperature,...
++#	'title','Absolute error [K]','view',3,'data',relative,'title','Relative error [%]','view',3,...
++#	'figposition','mathieu','FontSize#all',20)
++if printingflag:
++	pass
++#	set(gcf,'Color','w')
++#	printmodel('thermaladvection','png','margin','on','marginsize',25,'frame','off','resolution',0.7,'hardcopy','off');
++#	system(['mv thermaladvection.png ' ISSM_DIR '/website/doc_pdf/validation/Images/EISMINT ']);
++
++#Fields and tolerances to track changes
++field_names     =['AdvectionTemperature']
++field_tolerances=[1e-13]
++field_values    =[comp_temp]
+
+Property changes on: ../trunk-jpl/test/NightlyRun/test1302.py
+___________________________________________________________________
+Added: svn:executable
+## -0,0 +1 ##
++*
+Index: ../trunk-jpl/test/NightlyRun/test1303.py
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/test1303.py	(revision 0)
++++ ../trunk-jpl/test/NightlyRun/test1303.py	(revision 14102)
+@@ -0,0 +1,60 @@
++import numpy
++import sys
++from model import *
++from triangle import *
++from setmask import *
++from parameterize import *
++from setflowequation import *
++from EnumDefinitions import *
++from solve import *
++from MatlabFuncs import *
++
++"""
++This file can be run to check that the conduction is correctly modeled.
++There is no velocity (no advection) the only thermal boundary conditions are an imposed temperature
++at the lower and upper surface. The result must be a linear temperature from the upper to the lower
++surface. if it is not the case, something is thermal modeling has been changed...
++"""
++
++printingflag=False
++
++md=model()
++md=triangle(md,'../Exp/Square.exp',100000.)
++md=setmask(md,'all','')
++md=parameterize(md,'../Par/SquareThermal.py')
++md.extrude(11,2.)
++md=setflowequation(md,'pattyn','all')
++
++pos1=numpy.nonzero(md.mesh.elementonbed)[0]
++md.thermal.spctemperature[md.mesh.elements[pos1,0:3]-1]=10.
++pos2=numpy.nonzero(md.mesh.elementonsurface)[0]
++md.thermal.spctemperature[md.mesh.elements[pos2,3:6]-1]=0.
++md.initialization.pressure=numpy.zeros((md.mesh.numberofvertices,1),int)
++
++#analytical results
++#d2T/dz2=0 T(bed)=10 T(surface)=0  => T=0*(z-bed)/thickness+10*(surface-z)/thickness
++#each layer of the 3d mesh must have a constant value
++md.initialization.temperature=10.*(md.geometry.surface-md.mesh.z)/md.geometry.thickness
++
++#modeled results
++md.cluster=generic('name',oshostname(),'np',2)
++md=solve(md,ThermalSolutionEnum())
++
++#plot results
++comp_temp=md.results.ThermalSolution.Temperature
++relative=numpy.abs((comp_temp-md.initialization.temperature)/md.initialization.temperature)*100.
++relative[numpy.nonzero(comp_temp==md.initialization.temperature)[0]]=0.
++#plotmodel(md,'data',comp_temp,'title','Modeled temperature [K]','data',md.initialization.temperature,'view',3,...
++#	'title','Analytical temperature [K]','view',3,'data',comp_temp-md.initialization.temperature,...
++#	'title','Absolute error [K]','view',3,'data',relative,'title','Relative error [%]','view',3,...
++#	'figposition','mathieu','FontSize#all',20)
++if printingflag:
++	pass
++#	set(gcf,'Color','w')
++#	printmodel('thermalconduction','png','margin','on','marginsize',25,'frame','off','resolution',0.7,'hardcopy','off');
++#	system(['mv thermalconduction.png ' ISSM_DIR '/website/doc_pdf/validation/Images/Thermal ']);
++
++#Fields and tolerances to track changes
++field_names     =['ConductionTemperature']
++field_tolerances=[1e-13]
++field_values    =[comp_temp]
+
+Property changes on: ../trunk-jpl/test/NightlyRun/test1303.py
+___________________________________________________________________
+Added: svn:executable
+## -0,0 +1 ##
++*
Index: /issm/oecreview/Archive/14064-14311/ISSM-14102-14103.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14102-14103.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14102-14103.diff	(revision 14312)
@@ -0,0 +1,76 @@
+Index: ../trunk-jpl/src/m/classes/timestepping.py
+===================================================================
+--- ../trunk-jpl/src/m/classes/timestepping.py	(revision 14102)
++++ ../trunk-jpl/src/m/classes/timestepping.py	(revision 14103)
+@@ -15,11 +15,11 @@
+ 	#properties
+ 	def __init__(self):
+ 		# {{{ Properties
+-		self.start_time      = 0
+-		self.final_time      = 0
+-		self.time_step       = 0
++		self.start_time      = 0.
++		self.final_time      = 0.
++		self.time_step       = 0.
+ 		self.time_adapt      = 0
+-		self.cfl_coefficient = 0
++		self.cfl_coefficient = 0.
+ 		
+ 		#set defaults
+ 		self.setdefaultparameters()
+@@ -40,14 +40,14 @@
+ 		# {{{setdefaultparameters
+ 		
+ 		#time between 2 time steps
+-		self.time_step=1/2
++		self.time_step=1./2.
+ 
+ 		#final time
+-		self.final_time=10*self.time_step
++		self.final_time=10.*self.time_step
+ 
+ 		#time adaptation? 
+ 		self.time_adapt=0
+-		self.cfl_coefficient=.5
++		self.cfl_coefficient=0.5
+ 
+ 		return self
+ 	#}}}
+Index: ../trunk-jpl/src/m/classes/timestepping.m
+===================================================================
+--- ../trunk-jpl/src/m/classes/timestepping.m	(revision 14102)
++++ ../trunk-jpl/src/m/classes/timestepping.m	(revision 14103)
+@@ -5,11 +5,11 @@
+ 
+ classdef timestepping
+ 	properties (SetAccess=public) 
+-		start_time      = 0;
+-		final_time      = 0;
+-		time_step       = 0;
++		start_time      = 0.;
++		final_time      = 0.;
++		time_step       = 0.;
+ 		time_adapt      = 0;
+-		cfl_coefficient = 0;
++		cfl_coefficient = 0.;
+ 	end
+ 	methods
+ 		function obj = timestepping(varargin) % {{{
+@@ -23,14 +23,14 @@
+ 		function obj = setdefaultparameters(obj) % {{{
+ 
+ 			%time between 2 time steps
+-			obj.time_step=1/2;
++			obj.time_step=1./2.;
+ 
+ 			%final time
+-			obj.final_time=10*obj.time_step;
++			obj.final_time=10.*obj.time_step;
+ 
+ 			%time adaptation? 
+ 			obj.time_adapt=0;
+-			obj.cfl_coefficient=.5;
++			obj.cfl_coefficient=0.5;
+ 		end % }}}
+ 		function md = checkconsistency(obj,md,solution,analyses) % {{{
+ 
Index: /issm/oecreview/Archive/14064-14311/ISSM-14103-14104.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14103-14104.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14103-14104.diff	(revision 14312)
@@ -0,0 +1,17 @@
+Index: ../trunk-jpl/src/m/miscellaneous/MatlabFuncs.py
+===================================================================
+--- ../trunk-jpl/src/m/miscellaneous/MatlabFuncs.py	(revision 14103)
++++ ../trunk-jpl/src/m/miscellaneous/MatlabFuncs.py	(revision 14104)
+@@ -96,3 +96,12 @@
+ 
+ 	return a
+ 
++def heaviside(x):
++	import numpy
++
++	y=numpy.zeros_like(x)
++	y[numpy.nonzero(x> 0.)]=1.
++	y[numpy.nonzero(x==0.)]=0.5
++
++	return y
++
Index: /issm/oecreview/Archive/14064-14311/ISSM-14104-14105.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14104-14105.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14104-14105.diff	(revision 14312)
@@ -0,0 +1,18 @@
+Index: ../trunk-jpl/src/m/solve/parseresultsfromdisk.py
+===================================================================
+--- ../trunk-jpl/src/m/solve/parseresultsfromdisk.py	(revision 14104)
++++ ../trunk-jpl/src/m/solve/parseresultsfromdisk.py	(revision 14105)
+@@ -42,10 +42,12 @@
+ 	#Read fields until the end of the file.
+ 	result=ReadData(fid)
+ 	while result:
+-		if result['step'] > len(results):
++		if   result['step'] > len(results):
+ 			for i in xrange(len(results),result['step']-1):
+ 				results.append(None)
+ 			results.append(resultsclass.results())
++		elif results[result['step']-1] is None:
++			results[result['step']-1]=resultsclass.results()
+ 		#Get time and step
+ 		setattr(results[result['step']-1],'step',result['step'])
+ 		setattr(results[result['step']-1],'time',result['time']) 
Index: /issm/oecreview/Archive/14064-14311/ISSM-14105-14106.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14105-14106.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14105-14106.diff	(revision 14312)
@@ -0,0 +1,422 @@
+Index: ../trunk-jpl/test/Par/SquareEISMINT.py
+===================================================================
+--- ../trunk-jpl/test/Par/SquareEISMINT.py	(revision 0)
++++ ../trunk-jpl/test/Par/SquareEISMINT.py	(revision 14106)
+@@ -0,0 +1,49 @@
++import numpy
++from SetMarineIceSheetBC import *
++
++#Ok, start defining model parameters here
++
++print "      creating thickness"
++ymin=numpy.min(md.mesh.y)
++ymax=numpy.max(md.mesh.y)
++md.geometry.thickness=500.*numpy.ones((md.mesh.numberofvertices,1))
++md.geometry.bed=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness
++md.geometry.surface=md.geometry.bed+md.geometry.thickness
++
++print "      creating drag"
++md.friction.coefficient=200.*numpy.ones((md.mesh.numberofvertices,1))    #q=1.
++#Take care of iceshelves: no basal drag
++pos=numpy.nonzero(md.mask.elementonfloatingice)[0]
++md.friction.coefficient[md.mesh.elements[pos,:]-1]=0.
++md.friction.p=numpy.ones((md.mesh.numberofelements,1))
++md.friction.q=numpy.ones((md.mesh.numberofelements,1))
++
++print "      creating initial values"
++md.initialization.temperature=(273.-20.)*numpy.ones((md.mesh.numberofvertices,1))
++md.initialization.vx=numpy.zeros((md.mesh.numberofvertices,1))
++md.initialization.vy=numpy.zeros((md.mesh.numberofvertices,1))
++md.initialization.vz=numpy.zeros((md.mesh.numberofvertices,1))
++md.initialization.vel=numpy.zeros((md.mesh.numberofvertices,1))
++md.initialization.pressure=numpy.zeros((md.mesh.numberofvertices,1))
++
++print "      creating flow law parameter"
++md.materials.rheology_B=1.7687*10**8*numpy.ones((md.mesh.numberofvertices,1))
++md.materials.rheology_n=3.*numpy.ones((md.mesh.numberofelements,1))
++
++print "      creating surface mass balance"
++md.surfaceforcings.mass_balance=0.2*numpy.ones((md.mesh.numberofvertices,1))    #0m/a
++md.basalforcings.melting_rate=0.*numpy.ones((md.mesh.numberofvertices,1))    #0m/a
++
++print "      boundary conditions"
++md=SetMarineIceSheetBC(md,'../Exp/SquareFrontEISMINT.exp')
++
++#Evolution of the ice shelf
++pos=numpy.nonzero(md.mesh.y==200000.)    #nodes on the upper boundary condition
++md.balancethickness.spcthickness=float('NaN')*numpy.ones((md.mesh.numberofvertices,1))
++md.balancethickness.spcthickness[pos]=500.
++md.prognostic.spcthickness=float('NaN')*numpy.ones((md.mesh.numberofvertices,1))
++md.prognostic.spcthickness[pos]=500.
++md.prognostic.stabilization=0    #Better result with no artificial diffusivity
++md.thermal.stabilization=0
++md.timestepping.final_time=500.
++md.timestepping.time_step=1
+Index: ../trunk-jpl/test/Par/RoundSheetEISMINT.par
+===================================================================
+--- ../trunk-jpl/test/Par/RoundSheetEISMINT.par	(revision 14105)
++++ ../trunk-jpl/test/Par/RoundSheetEISMINT.par	(revision 14106)
+@@ -1,35 +1,35 @@
+ %Ok, start defining model parameters here
+ disp('      creating thickness');
+-md.geometry.thickness=10*ones(md.mesh.numberofvertices,1);
++md.geometry.thickness=10.*ones(md.mesh.numberofvertices,1);
+ md.geometry.bed=zeros(md.mesh.numberofvertices,1);
+ md.geometry.surface=md.geometry.bed+md.geometry.thickness;
+ 
+ disp('      creating drag');
+-md.friction.coefficient=20*ones(md.mesh.numberofvertices,1); %q=1. %no drag is specified in the analytical solution
++md.friction.coefficient=20.*ones(md.mesh.numberofvertices,1); %q=1. no drag is specified in the analytical solution
+ md.friction.p=ones(md.mesh.numberofelements,1);
+ md.friction.q=ones(md.mesh.numberofelements,1);
+ 
+ disp('      creating temperatures');
+ tmin=238.15; %K
+-st=1.67*10^-2/1000; %k/m;
++st=1.67*10^-2/1000.; %k/m
+ radius=sqrt((md.mesh.x).^2+(md.mesh.y).^2);
+ md.initialization.temperature=(tmin+st*radius);
+ md.basalforcings.geothermalflux=4.2*10^-2*ones(md.mesh.numberofvertices,1);
+ 
+-disp('      creating flow law paramter');
+-md.materials.rheology_B=6.81*10^(7)*ones(md.mesh.numberofvertices,1); %to have the same B as the analytical solution 
+-md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
++disp('      creating flow law parameter');
++md.materials.rheology_B=6.81*10^7*ones(md.mesh.numberofvertices,1); %to have the same B as the analytical solution 
++md.materials.rheology_n=3.*ones(md.mesh.numberofelements,1);
+ 
+ disp('      creating surface mass balance');
+ smb_max=0.5; %m/yr
+-sb=10^-2/1000; %m/yr/m
+-rel=450*1000; %m
++sb=10^-2/1000.; %m/yr/m
++rel=450.*1000.; %m
+ md.surfaceforcings.mass_balance=min(smb_max,sb*(rel-radius));
+ 
+ disp('      creating velocities');
+ constant=0.3;
+-md.inversion.vx_obs=constant/2*md.mesh.x.*(md.geometry.thickness).^-1;
+-md.inversion.vy_obs=constant/2*md.mesh.y.*(md.geometry.thickness).^-1;
++md.inversion.vx_obs=constant/2.*md.mesh.x.*(md.geometry.thickness).^-1;
++md.inversion.vy_obs=constant/2.*md.mesh.y.*(md.geometry.thickness).^-1;
+ md.inversion.vel_obs=(sqrt((md.inversion.vx_obs).^2+(md.inversion.vy_obs).^2));
+ md.initialization.vx=zeros(md.mesh.numberofvertices,1);
+ md.initialization.vy=zeros(md.mesh.numberofvertices,1);
+@@ -37,23 +37,23 @@
+ md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+ 
+ %Deal with boundary conditions:
+-disp('      boundary conditions for diagnostic model: ');
++disp('      boundary conditions for diagnostic model:');
+ md=SetMarineIceSheetBC(md,'../Exp/RoundFrontEISMINT.exp');
+ 
+-radius=sqrt((md.mesh.x).*md.mesh.x+(md.mesh.y).*md.mesh.y);
++radius=sqrt((md.mesh.x).^2+(md.mesh.y).^2);
+ pos=find(radius==min(radius));
+-md.mesh.x(pos)=0; md.mesh.y(pos)=0; %the closest node to the center is changed to be exactly at the center
++md.mesh.x(pos)=0.; md.mesh.y(pos)=0.; %the closest node to the center is changed to be exactly at the center
+ 
+-md.diagnostic.spcvx(pos)=0;
+-md.diagnostic.spcvy(pos)=0;
+-md.diagnostic.spcvz(pos)=0;
++md.diagnostic.spcvx(pos)=0.;
++md.diagnostic.spcvy(pos)=0.;
++md.diagnostic.spcvz(pos)=0.;
+ 
+ %parallel options
+-md.timestepping.final_time=50000;
++md.timestepping.final_time=50000.;
+ 
+ %Constants
+-md.materials.rho_ice=910;
++md.materials.rho_ice=910.;
+ md.materials.thermalconductivity=2.1;
+ md.materials.latentheat=3.35*10^5;
+ md.materials.beta=8.66*10^-4/(md.materials.rho_ice*md.constants.g); %conversion from K/m to K/Pa
+-md.constants.yts=31556926;
++md.constants.yts=31556926.;
+Index: ../trunk-jpl/test/Par/RoundSheetEISMINT.py
+===================================================================
+--- ../trunk-jpl/test/Par/RoundSheetEISMINT.py	(revision 0)
++++ ../trunk-jpl/test/Par/RoundSheetEISMINT.py	(revision 14106)
+@@ -0,0 +1,63 @@
++import numpy
++from SetMarineIceSheetBC import *
++
++#Ok, start defining model parameters here
++print "      creating thickness"
++md.geometry.thickness=10.*numpy.ones((md.mesh.numberofvertices,1))
++md.geometry.bed=numpy.zeros((md.mesh.numberofvertices,1))
++md.geometry.surface=md.geometry.bed+md.geometry.thickness
++
++print "      creating drag"
++md.friction.coefficient=20.*numpy.ones((md.mesh.numberofvertices,1))    #q=1. no drag is specified in the analytical solution
++md.friction.p=numpy.ones((md.mesh.numberofelements,1))
++md.friction.q=numpy.ones((md.mesh.numberofelements,1))
++
++print "      creating temperatures"
++tmin=238.15    #K
++st=1.67*10**-2/1000.    #k/m
++radius=numpy.sqrt((md.mesh.x)**2+(md.mesh.y)**2).reshape(-1,1)
++md.initialization.temperature=tmin+st*radius
++md.basalforcings.geothermalflux=4.2*10**-2*numpy.ones((md.mesh.numberofvertices,1))
++
++print "      creating flow law parameter"
++md.materials.rheology_B=6.81*10**7*numpy.ones((md.mesh.numberofvertices,1))    #to have the same B as the analytical solution 
++md.materials.rheology_n=3.*numpy.ones((md.mesh.numberofelements,1))
++
++print "      creating surface mass balance"
++smb_max=0.5    #m/yr
++sb=10**-2/1000.    #m/yr/m
++rel=450.*1000.    #m
++md.surfaceforcings.mass_balance=numpy.minimum(smb_max*numpy.ones_like(radius),sb*(rel-radius))
++
++print "      creating velocities"
++constant=0.3
++md.inversion.vx_obs=constant/2.*md.mesh.x.reshape(-1,1)*(md.geometry.thickness)**-1
++md.inversion.vy_obs=constant/2.*md.mesh.y.reshape(-1,1)*(md.geometry.thickness)**-1
++md.inversion.vel_obs=numpy.sqrt((md.inversion.vx_obs)**2+(md.inversion.vy_obs)**2)
++md.initialization.vx=numpy.zeros((md.mesh.numberofvertices,1))
++md.initialization.vy=numpy.zeros((md.mesh.numberofvertices,1))
++md.initialization.vz=numpy.zeros((md.mesh.numberofvertices,1))
++md.initialization.pressure=numpy.zeros((md.mesh.numberofvertices,1))
++
++#Deal with boundary conditions:
++print "      boundary conditions for diagnostic model:"
++md=SetMarineIceSheetBC(md,'../Exp/RoundFrontEISMINT.exp')
++
++radius=numpy.sqrt((md.mesh.x)**2+(md.mesh.y)**2)
++pos=numpy.nonzero(radius==numpy.min(radius))[0]
++md.mesh.x[pos]=0.
++md.mesh.y[pos]=0.    #the closest node to the center is changed to be exactly at the center
++
++md.diagnostic.spcvx[pos]=0.
++md.diagnostic.spcvy[pos]=0.
++md.diagnostic.spcvz[pos]=0.
++
++#parallel options
++md.timestepping.final_time=50000.
++
++#Constants
++md.materials.rho_ice=910.
++md.materials.thermalconductivity=2.1
++md.materials.latentheat=3.35*10**5
++md.materials.beta=8.66*10**-4/(md.materials.rho_ice*md.constants.g)    #conversion from K/m to K/Pa
++md.constants.yts=31556926.
+
+Property changes on: ../trunk-jpl/test/Par/RoundSheetEISMINT.py
+___________________________________________________________________
+Added: svn:executable
+## -0,0 +1 ##
++*
+Index: ../trunk-jpl/test/Par/RoundSheetStaticEISMINT.par
+===================================================================
+--- ../trunk-jpl/test/Par/RoundSheetStaticEISMINT.par	(revision 14105)
++++ ../trunk-jpl/test/Par/RoundSheetStaticEISMINT.par	(revision 14106)
+@@ -1,54 +1,54 @@
+ disp('      creating thickness');
+ hmin=0.01;
+ hmax=2756.7;
+-radius=(sqrt((md.mesh.x).^2+(md.mesh.y).^2));
++radius=sqrt((md.mesh.x).^2+(md.mesh.y).^2);
+ radiusmax=max(radius);
+-md.geometry.thickness=hmin*ones(size(md.mesh.x,1),1)+hmax*(4*((1/2)^(4/3)*ones(size(md.mesh.x,1),1)-((radius)./(2*radiusmax)).^(4/3))).^(3/8);
+-md.geometry.bed=0*md.geometry.thickness;
++md.geometry.thickness=hmin*ones(size(md.mesh.x,1),1)+hmax*(4.*((1./2.)^(4./3.)*ones(size(md.mesh.x,1),1)-((radius)./(2.*radiusmax)).^(4./3.))).^(3./8.);
++md.geometry.bed=0.*md.geometry.thickness;
+ md.geometry.surface=md.geometry.bed+md.geometry.thickness;
+ 
+ disp('      creating drag');
+-md.friction.coefficient=20*ones(md.mesh.numberofvertices,1); %q=1. %no drag is specified in the analytical solution
++md.friction.coefficient=20.*ones(md.mesh.numberofvertices,1); %q=1. no drag is specified in the analytical solution
+ %Take care of iceshelves: no basal drag
+ pos=find(md.mask.elementonfloatingice);
+-md.friction.coefficient(md.mesh.elements(pos,:))=0;
++md.friction.coefficient(md.mesh.elements(pos,:))=0.;
+ md.friction.p=ones(md.mesh.numberofelements,1);
+ md.friction.q=ones(md.mesh.numberofelements,1);
+ 
+ disp('      creating temperatures');
+ tmin=238.15; %K
+-st=1.67*10^-2/1000; %k/m;
+-md.initialization.temperature=(tmin+st*radius);
++st=1.67*10^-2/1000.; %k/m
++md.initialization.temperature=tmin+st*radius;
+ md.basalforcings.geothermalflux=4.2*10^-2*ones(md.mesh.numberofvertices,1);
+ 
+-disp('      creating flow law paramter');
+-md.materials.rheology_B=6.81*10^(7)*ones(md.mesh.numberofvertices,1); %to have the same B as the analytical solution 
+-md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
++disp('      creating flow law parameter');
++md.materials.rheology_B=6.81*10^7*ones(md.mesh.numberofvertices,1); %to have the same B as the analytical solution 
++md.materials.rheology_n=3.*ones(md.mesh.numberofelements,1);
+ 
+ disp('      creating surface mass balance');
+ smb_max=0.5; %m/yr
+-sb=10^-2/1000; %m/yr/m
+-rel=450*1000; %m
++sb=10^-2/1000.; %m/yr/m
++rel=450.*1000.; %m
+ md.surfaceforcings.mass_balance=min(smb_max,sb*(rel-radius));
+ 
+ disp('      creating velocities');
+ constant=0.3;
+-md.inversion.vx_obs=constant/2*md.mesh.x.*(md.geometry.thickness).^-1;
+-md.inversion.vy_obs=constant/2*md.mesh.y.*(md.geometry.thickness).^-1;
+-md.inversion.vel_obs=(sqrt((md.inversion.vx_obs).^2+(md.inversion.vy_obs).^2));
++md.inversion.vx_obs=constant/2.*md.mesh.x.*(md.geometry.thickness).^-1;
++md.inversion.vy_obs=constant/2.*md.mesh.y.*(md.geometry.thickness).^-1;
++md.inversion.vel_obs=sqrt((md.inversion.vx_obs).^2+(md.inversion.vy_obs).^2);
+ md.initialization.vx=zeros(md.mesh.numberofvertices,1);
+ md.initialization.vy=zeros(md.mesh.numberofvertices,1);
+ md.initialization.vz=zeros(md.mesh.numberofvertices,1);
+ md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+ 
+ %Deal with boundary conditions:
+-disp('      boundary conditions for diagnostic model: ');
++disp('      boundary conditions for diagnostic model:');
+ md=SetMarineIceSheetBC(md,'../Exp/RoundFrontEISMINT.exp');
+ 
+-radius=sqrt((md.mesh.x).*md.mesh.x+(md.mesh.y).*md.mesh.y);
++radius=sqrt((md.mesh.x).^2+(md.mesh.y).^2);
+ pos=find(radius==min(radius));
+-md.mesh.x(pos)=0; md.mesh.y(pos)=0; %the closest node to the center is changed to be exactly at the center
++md.mesh.x(pos)=0.; md.mesh.y(pos)=0.; %the closest node to the center is changed to be exactly at the center
+ 
+-md.diagnostic.spcvx(pos)=0;
+-md.diagnostic.spcvy(pos)=0;
+-md.diagnostic.spcvz(pos)=0;
++md.diagnostic.spcvx(pos)=0.;
++md.diagnostic.spcvy(pos)=0.;
++md.diagnostic.spcvz(pos)=0.;
+Index: ../trunk-jpl/test/Par/RoundSheetStaticEISMINT.py
+===================================================================
+--- ../trunk-jpl/test/Par/RoundSheetStaticEISMINT.py	(revision 0)
++++ ../trunk-jpl/test/Par/RoundSheetStaticEISMINT.py	(revision 14106)
+@@ -0,0 +1,58 @@
++import numpy
++from SetMarineIceSheetBC import *
++
++print "      creating thickness"
++hmin=0.01
++hmax=2756.7
++radius=numpy.sqrt((md.mesh.x)**2+(md.mesh.y)**2).reshape(-1,1)
++radiusmax=numpy.max(radius)
++md.geometry.thickness=hmin*numpy.ones((numpy.size(md.mesh.x),1))+hmax*(4.*((1./2.)**(4./3.)*numpy.ones((numpy.size(md.mesh.x),1))-((radius)/(2.*radiusmax))**(4./3.)))**(3./8.)
++md.geometry.bed=0.*md.geometry.thickness
++md.geometry.surface=md.geometry.bed+md.geometry.thickness
++
++print "      creating drag"
++md.friction.coefficient=20.*numpy.ones((md.mesh.numberofvertices,1))    #q=1. no drag is specified in the analytical solution
++#Take care of iceshelves: no basal drag
++pos=numpy.nonzero(md.mask.elementonfloatingice)[0]
++md.friction.coefficient[md.mesh.elements[pos,:]-1]=0.
++md.friction.p=numpy.ones((md.mesh.numberofelements,1))
++md.friction.q=numpy.ones((md.mesh.numberofelements,1))
++
++print "      creating temperatures"
++tmin=238.15    #K
++st=1.67*10**-2/1000.    #k/m
++md.initialization.temperature=tmin+st*radius
++md.basalforcings.geothermalflux=4.2*10**-2*numpy.ones((md.mesh.numberofvertices,1))
++
++print "      creating flow law parameter"
++md.materials.rheology_B=6.81*10**7*numpy.ones((md.mesh.numberofvertices,1))    #to have the same B as the analytical solution 
++md.materials.rheology_n=3.*numpy.ones((md.mesh.numberofelements,1))
++
++print "      creating surface mass balance"
++smb_max=0.5    #m/yr
++sb=10**-2/1000.    #m/yr/m
++rel=450.*1000.    #m
++md.surfaceforcings.mass_balance=numpy.minimum(smb_max*numpy.ones_like(radius),sb*(rel-radius))
++
++print "      creating velocities"
++constant=0.3
++md.inversion.vx_obs=constant/2.*md.mesh.x.reshape(-1,1)*(md.geometry.thickness)**-1
++md.inversion.vy_obs=constant/2.*md.mesh.y.reshape(-1,1)*(md.geometry.thickness)**-1
++md.inversion.vel_obs=numpy.sqrt((md.inversion.vx_obs)**2+(md.inversion.vy_obs)**2)
++md.initialization.vx=numpy.zeros((md.mesh.numberofvertices,1))
++md.initialization.vy=numpy.zeros((md.mesh.numberofvertices,1))
++md.initialization.vz=numpy.zeros((md.mesh.numberofvertices,1))
++md.initialization.pressure=numpy.zeros((md.mesh.numberofvertices,1))
++
++#Deal with boundary conditions:
++print "      boundary conditions for diagnostic model:"
++md=SetMarineIceSheetBC(md,'../Exp/RoundFrontEISMINT.exp')
++
++radius=numpy.sqrt((md.mesh.x)**2+(md.mesh.y)**2)
++pos=numpy.nonzero(radius==numpy.min(radius))[0]
++md.mesh.x[pos]=0.
++md.mesh.y[pos]=0.    #the closest node to the center is changed to be exactly at the center
++
++md.diagnostic.spcvx[pos]=0.
++md.diagnostic.spcvy[pos]=0.
++md.diagnostic.spcvz[pos]=0.
+
+Property changes on: ../trunk-jpl/test/Par/RoundSheetStaticEISMINT.py
+___________________________________________________________________
+Added: svn:executable
+## -0,0 +1 ##
++*
+Index: ../trunk-jpl/test/Par/SquareEISMINT.par
+===================================================================
+--- ../trunk-jpl/test/Par/SquareEISMINT.par	(revision 14105)
++++ ../trunk-jpl/test/Par/SquareEISMINT.par	(revision 14106)
+@@ -3,44 +3,44 @@
+ disp('      creating thickness');
+ ymin=min(md.mesh.y);
+ ymax=max(md.mesh.y);
+-md.geometry.thickness=500*ones(md.mesh.numberofvertices,1);
++md.geometry.thickness=500.*ones(md.mesh.numberofvertices,1);
+ md.geometry.bed=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness;
+ md.geometry.surface=md.geometry.bed+md.geometry.thickness;
+ 
+ disp('      creating drag');
+-md.friction.coefficient=200*ones(md.mesh.numberofvertices,1); %q=1.
++md.friction.coefficient=200.*ones(md.mesh.numberofvertices,1); %q=1.
+ %Take care of iceshelves: no basal drag
+ pos=find(md.mask.elementonfloatingice);
+-md.friction.coefficient(md.mesh.elements(pos,:))=0;
++md.friction.coefficient(md.mesh.elements(pos,:))=0.;
+ md.friction.p=ones(md.mesh.numberofelements,1);
+ md.friction.q=ones(md.mesh.numberofelements,1);
+ 
+ disp('      creating initial values');
+-md.initialization.temperature=(273-20)*ones(md.mesh.numberofvertices,1);
++md.initialization.temperature=(273.-20.)*ones(md.mesh.numberofvertices,1);
+ md.initialization.vx=zeros(md.mesh.numberofvertices,1);
+ md.initialization.vy=zeros(md.mesh.numberofvertices,1);
+ md.initialization.vz=zeros(md.mesh.numberofvertices,1);
+ md.initialization.vel=zeros(md.mesh.numberofvertices,1);
+ md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+ 
+-disp('      creating flow law paramter');
++disp('      creating flow law parameter');
+ md.materials.rheology_B=1.7687*10^8*ones(md.mesh.numberofvertices,1);
+-md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
++md.materials.rheology_n=3.*ones(md.mesh.numberofelements,1);
+ 
+ disp('      creating surface mass balance');
+ md.surfaceforcings.mass_balance=0.2*ones(md.mesh.numberofvertices,1); %0m/a
+-md.basalforcings.melting_rate=0*ones(md.mesh.numberofvertices,1); %0m/a
++md.basalforcings.melting_rate=0.*ones(md.mesh.numberofvertices,1); %0m/a
+ 
+-disp('      boundary conditions ');
++disp('      boundary conditions');
+ md=SetMarineIceSheetBC(md,'../Exp/SquareFrontEISMINT.exp');
+ 
+ %Evolution of the ice shelf
+-pos=find(md.mesh.y==200000); %nodes on the upper boundary condition
++pos=find(md.mesh.y==200000.); %nodes on the upper boundary condition
+ md.balancethickness.spcthickness=NaN*ones(md.mesh.numberofvertices,1);
+-md.balancethickness.spcthickness(pos)=500;
++md.balancethickness.spcthickness(pos)=500.;
+ md.prognostic.spcthickness=NaN*ones(md.mesh.numberofvertices,1);
+-md.prognostic.spcthickness(pos)=500;
++md.prognostic.spcthickness(pos)=500.;
+ md.prognostic.stabilization=0; %Better result with no artificial diffusivity
+-md.thermal.stabilization=0; 
+-md.timestepping.final_time=500;
++md.thermal.stabilization=0;
++md.timestepping.final_time=500.;
+ md.timestepping.time_step=1;
Index: /issm/oecreview/Archive/14064-14311/ISSM-14106-14107.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14106-14107.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14106-14107.diff	(revision 14312)
@@ -0,0 +1,574 @@
+Index: ../trunk-jpl/test/NightlyRun/test1202.m
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/test1202.m	(revision 14106)
++++ ../trunk-jpl/test/NightlyRun/test1202.m	(revision 14107)
+@@ -18,7 +18,7 @@
+ 
+ plotmodel(md,'data',vx,'contourlevels',{0,20,40,60,60,100,120,140,160,180,-20,-40,-60,-80,-100,-120,-140,-160,-180}, ...
+ 	'contourcolor','k')
+-if printingflag, 
++if printingflag,
+ 	set(gcf,'Color','w')
+ 	printmodel('eismintdiag1vx','png','margin','on','marginsize',25,'frame','off','resolution',2,'hardcopy','off');
+ 	system(['mv eismintdiag1vx.png ' ISSM_DIR '/website/doc_pdf/validation/Images/EISMINT/IceShelf ']);
+@@ -26,7 +26,7 @@
+ 
+ plotmodel(md,'data',vy,'contourlevels',{-100,-200,-300,-400,-500,-600,-700,-800,-900,-1000},...
+ 	'contourcolor','k')
+-if printingflag, 
++if printingflag,
+ 	set(gcf,'Color','w')
+ 	printmodel('eismintdiag1vy','png','margin','on','marginsize',25,'frame','off','resolution',2,'hardcopy','off');
+ 	system(['mv eismintdiag1vy.png ' ISSM_DIR '/website/doc_pdf/validation/Images/EISMINT/IceShelf ']);
+Index: ../trunk-jpl/test/NightlyRun/test1203.m
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/test1203.m	(revision 14106)
++++ ../trunk-jpl/test/NightlyRun/test1203.m	(revision 14107)
+@@ -1,7 +1,7 @@
+ %Test on the diagnostic model and the prognostic in 2d
+ printingflag=false;
+ 
+-%test 5 and 6 : 
++%test 5 and 6: 
+ md=model();
+ md=triangle(md,'../Exp/SquareEISMINT.exp',5100.); %test3
+ md=setmask(md,'all','');
+@@ -10,7 +10,7 @@
+ 
+ %Impose a non zero velocity on the upper boundary condition (y=max(y))
+ pos=find(md.mesh.y==max(md.mesh.y));
+-md.diagnostic.spcvy(pos)=400*(((md.mesh.x(pos)-100000)/25000).^2-ones(size(pos,1),1)).*heaviside((1+eps)*ones(size(pos,1),1)-((md.mesh.x(pos)-100000)/25000).^2);
++md.diagnostic.spcvy(pos)=400.*(((md.mesh.x(pos)-100000.)/25000.).^2-ones(size(pos,1),1)).*heaviside((1.+eps)*ones(size(pos,1),1)-((md.mesh.x(pos)-100000.)/25000.).^2);
+ 
+ %Compute solution for MacAyeal's model 
+ md.cluster=generic('name',oshostname(),'np',8);
+@@ -22,14 +22,14 @@
+ %plot results
+ plotmodel(md,'data',vx,'contourlevels',{0,20,40,60,80,100,-20,-40,-60,-80,-100},...
+ 	'contourcolor','k')
+-if printingflag, 
++if printingflag,
+ 	set(gcf,'Color','w')
+ 	printmodel('eismintdiag2vx','png','margin','on','marginsize',25,'frame','off','resolution',2,'hardcopy','off');
+ 	system(['mv eismintdiag2vx.png ' ISSM_DIR '/website/doc_pdf/validation/Images/EISMINT/IceShelf ']);
+ end
+ plotmodel(md,'data',vy,'contourlevels',{-100,-200,-300,-400,-500,-600,-700,-800,-900,-1000},...
+ 	'contourcolor','k')
+-if printingflag, 
++if printingflag,
+ 	set(gcf,'Color','w')
+ 	printmodel('eismintdiag2vy','png','margin','on','marginsize',25,'frame','off','resolution',2,'hardcopy','off');
+ 	system(['mv eismintdiag2vy.png ' ISSM_DIR '/website/doc_pdf/validation/Images/EISMINT/IceShelf ']);
+Index: ../trunk-jpl/test/NightlyRun/test1201.py
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/test1201.py	(revision 0)
++++ ../trunk-jpl/test/NightlyRun/test1201.py	(revision 14107)
+@@ -0,0 +1,78 @@
++import numpy
++from model import *
++from bamg import *
++from setmask import *
++from parameterize import *
++from setflowequation import *
++from EnumDefinitions import *
++from solve import *
++from MatlabFuncs import *
++
++"""
++This test is a test from the EISMINT for Ice shelves Vincent Rommelaere 1996
++"""
++
++printingflag=False
++
++results=[]
++
++for stabilization in xrange(1,4):
++	#The goal is to test the prognostic model
++	md=bamg(model(),'domain','../Exp/SquareEISMINT.exp','hmax',3000.)
++	md=setmask(md,'all','')
++	md=parameterize(md,'../Par/SquareEISMINT.py')
++	md.surfaceforcings.mass_balance[:]=0.
++	md=setflowequation(md,'macayeal','all')
++	md.cluster=generic('name',oshostname(),'np',8)
++
++	print "      initial velocity"
++	md.initialization.vx=numpy.zeros((md.mesh.numberofvertices,1))
++	md.initialization.vy=-400.*numpy.ones((md.mesh.numberofvertices,1))
++
++	#Stabilization
++	if stabilization==2:
++		md.prognostic.stabilization=0
++	else:
++		md.prognostic.stabilization=stabilization
++
++	#spc thickness
++	pos=numpy.nonzero(md.mesh.y>199999.9)[0]
++	times=numpy.arange(0,501)
++	md.prognostic.spcthickness=float('NaN')*numpy.ones((md.mesh.numberofvertices+1,numpy.size(times)))
++	md.prognostic.spcthickness[-1,:]=times
++	md.prognostic.spcthickness[pos,:]=numpy.tile(500.+100.*numpy.sin(2.*numpy.pi*times/200.),(numpy.size(pos),1))
++	if stabilization==3:
++		pos=numpy.nonzero(numpy.isnan(md.prognostic.spcthickness))
++		md.prognostic.spcthickness[pos]=500.    #No NaN for DG
++
++	#solve
++	md.transient.isdiagnostic=False
++	md.settings.output_frequency=500    #keep only last step
++	md.verbose=verbose()
++	md=solve(md,TransientSolutionEnum())
++	results.append(md.results.TransientSolution[-1].Thickness)
++
++#plot results
++#[elements,x,y,z,s,h1]=SectionValues(md,results[0],'../Exp/CrossLineEISMINT.exp',100.);
++#[elements,x,y,z,s,h2]=SectionValues(md,results[1],'../Exp/CrossLineEISMINT.exp',100.);
++#[elements,x,y,z,s,h3]=SectionValues(md,results[2],'../Exp/CrossLineEISMINT.exp',100.);
++#[elements,x,y,z,s,hth]=SectionValues(md, 500+100*sin(2*pi/200*(500-md.mesh.y/400)),'../Exp/CrossLineEISMINT.exp',100.);
++#plot(s,h1,'r',s,h2,'b',s,h3,'g',s,hth,'k')
++#legend('Art. diff.','No Art. diff.','D.G.','Theoretical')
++if printingflag:
++	pass
++#	set(gcf,'Color','w')
++#	export_fig([issmdir() '/website/doc_pdf/validation/Images/EISMINT/IceShelf/eismintmasscthickness.pdf']);
++
++#Fields and tolerances to track changes
++field_names     =[ \
++	'ThicknessArtDiff','ThicknessNoArtDiff','ThicknessDG' \
++]
++field_tolerances=[\
++	1e-13, 1e-13, 1e-13\
++]
++field_values=[
++	results[0], \
++	results[1], \
++	results[2], \
++]
+Index: ../trunk-jpl/test/NightlyRun/test1204.m
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/test1204.m	(revision 14106)
++++ ../trunk-jpl/test/NightlyRun/test1204.m	(revision 14107)
+@@ -10,7 +10,7 @@
+ 
+ %Impose a non zero velocity on the upper boundary condition (y=max(y))
+ pos=find(md.mesh.y==max(md.mesh.y));
+-md.diagnostic.spcvy(pos)=400*(((md.mesh.x(pos)-100000)/25000).^2-ones(size(pos,1),1)).*heaviside((1+eps)*ones(size(pos,1),1)-((md.mesh.x(pos)-100000)/25000).^2);
++md.diagnostic.spcvy(pos)=400.*(((md.mesh.x(pos)-100000.)/25000.).^2-ones(size(pos,1),1)).*heaviside((1.+eps)*ones(size(pos,1),1)-((md.mesh.x(pos)-100000.)/25000.).^2);
+ 
+ %Compute solution for MacAyeal's model 
+ md.cluster=generic('name',oshostname(),'np',8);
+@@ -20,27 +20,27 @@
+ md.initialization.vx=(md.results.DiagnosticSolution.Vx);
+ md.initialization.vy=(md.results.DiagnosticSolution.Vy);
+ 
+-md.timestepping.time_step=1;
+-md.timestepping.final_time=5000;
++md.timestepping.time_step=1.;
++md.timestepping.final_time=5000.;
+ md.prognostic.stabilization=1;
+ md=solve(md,TransientSolutionEnum());
+ 
+ plotmodel(md,'data',(md.results.TransientSolution(end).Vx))
+-if printingflag, 
++if printingflag,
+ 	set(gcf,'Color','w')
+ 	printmodel('eisminttrans2vx','png','margin','on','marginsize',25,'frame','off','resolution',2,'hardcopy','off');
+ 	system(['mv eisminttrans2vx.png ' ISSM_DIR '/website/doc_pdf/validation/Images/EISMINT/IceShelf ']);
+ end
+ 
+ plotmodel(md,'data',(md.results.TransientSolution(end).Vy))
+-if printingflag, 
++if printingflag,
+ 	set(gcf,'Color','w')
+ 	printmodel('eisminttrans2vy','png','margin','on','marginsize',25,'frame','off','resolution',2,'hardcopy','off');
+ 	system(['mv eisminttrans2vy.png ' ISSM_DIR '/website/doc_pdf/validation/Images/EISMINT/IceShelf ']);
+ end
+ 
+ plotmodel(md,'data',(md.results.TransientSolution(end).Thickness))
+-if printingflag, 
++if printingflag,
+ 	set(gcf,'Color','w')
+ 	printmodel('eisminttrans2thickness','png','margin','on','marginsize',25,'frame','off','resolution',2,'hardcopy','off');
+ 	system(['mv eisminttrans2thickness.png ' ISSM_DIR '/website/doc_pdf/validation/Images/EISMINT/IceShelf ']);
+Index: ../trunk-jpl/test/NightlyRun/test1202.py
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/test1202.py	(revision 0)
++++ ../trunk-jpl/test/NightlyRun/test1202.py	(revision 14107)
+@@ -0,0 +1,54 @@
++import numpy
++from model import *
++from triangle import *
++from setmask import *
++from parameterize import *
++from setflowequation import *
++from EnumDefinitions import *
++from solve import *
++from MatlabFuncs import *
++
++"""
++Test on the diagnostic model and the prognostic in 2d
++"""
++
++printingflag=False
++
++#tests 3 and 4: using Glen's flow law
++md=model()
++md=triangle(md,'../Exp/SquareEISMINT.exp',3550.)
++md=setmask(md,'all','')
++md=parameterize(md,'../Par/SquareEISMINT.py')
++md=setflowequation(md,'macayeal','all')    #MacAyeal's model and 2d
++
++#Compute solution for MacAyeal's model 
++md.cluster=generic('name',oshostname(),'np',8)
++md=solve(md,DiagnosticSolutionEnum())
++
++#plot results
++vx=md.results.DiagnosticSolution.Vx
++vy=md.results.DiagnosticSolution.Vy
++
++#plotmodel(md,'data',vx,'contourlevels',{0,20,40,60,60,100,120,140,160,180,-20,-40,-60,-80,-100,-120,-140,-160,-180}, ...
++#	'contourcolor','k')
++if printingflag:
++	pass
++#	set(gcf,'Color','w')
++#	printmodel('eismintdiag1vx','png','margin','on','marginsize',25,'frame','off','resolution',2,'hardcopy','off');
++#	system(['mv eismintdiag1vx.png ' ISSM_DIR '/website/doc_pdf/validation/Images/EISMINT/IceShelf ']);
++
++#plotmodel(md,'data',vy,'contourlevels',{-100,-200,-300,-400,-500,-600,-700,-800,-900,-1000},...
++#	'contourcolor','k')
++if printingflag:
++	pass
++#	set(gcf,'Color','w')
++#	printmodel('eismintdiag1vy','png','margin','on','marginsize',25,'frame','off','resolution',2,'hardcopy','off');
++#	system(['mv eismintdiag1vy.png ' ISSM_DIR '/website/doc_pdf/validation/Images/EISMINT/IceShelf ']);
++
++#Fields and tolerances to track changes
++field_names     =['Vx','Vy']
++field_tolerances=[1e-13,1e-13]
++field_values=[\
++	vx, \
++	vy, \
++	]
+Index: ../trunk-jpl/test/NightlyRun/test1208.py
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/test1208.py	(revision 0)
++++ ../trunk-jpl/test/NightlyRun/test1208.py	(revision 14107)
+@@ -0,0 +1,58 @@
++import numpy
++from model import *
++from triangle import *
++from setmask import *
++from parameterize import *
++from setflowequation import *
++from EnumDefinitions import *
++from solve import *
++from MatlabFuncs import *
++
++"""
++EISMINT benchmark experiment A
++"""
++
++numlayers=8
++resolution=50000.
++
++#To begin with the numerical model
++md=triangle(model(),'../Exp/SquareEISMINT750000.exp',resolution)
++md=setmask(md,'','')
++md=parameterize(md,'../Par/RoundSheetEISMINT.py')
++
++#We extrude the model to have a 3d model
++md.extrude(numlayers,1.)
++md=setflowequation(md,'hutter','all')
++
++#Spc the nodes on the bed
++pos=numpy.nonzero(md.mesh.vertexonbed)
++md.diagnostic.spcvx[pos]=0.
++md.diagnostic.spcvy[pos]=0.
++md.diagnostic.spcvz[pos]=0.
++
++#Adapt the time steps to the resolution
++md.timestepping.time_step=15.
++md.settings.output_frequency=500
++md.timestepping.final_time=30000.
++md.prognostic.stabilization=1
++md.thermal.stabilization=1
++
++#Now we can solve the problem 
++md.cluster=generic('name',oshostname(),'np',8)
++md=solve(md,TransientSolutionEnum())
++
++#Fields and tolerances to track changes
++field_names     =['Vx','Vy','Vz','Vel','Pressure','Thickness','Bed','Surface','Temperature','BasalforcingsMeltingRate']
++field_tolerances=[1e-08,1e-08,1e-07,1e-08,1e-08,1e-08,1e-08,1e-08,1e-07,1e-07]
++field_values=[\
++	md.results.TransientSolution[-1].Vx,\
++	md.results.TransientSolution[-1].Vy,\
++	md.results.TransientSolution[-1].Vz,\
++	md.results.TransientSolution[-1].Vel,\
++	md.results.TransientSolution[-1].Pressure,\
++	md.results.TransientSolution[-1].Thickness,\
++	md.results.TransientSolution[-1].Bed,\
++	md.results.TransientSolution[-1].Surface,\
++	md.results.TransientSolution[-1].Temperature,\
++	md.results.TransientSolution[-1].BasalforcingsMeltingRate,\
++	]
+
+Property changes on: ../trunk-jpl/test/NightlyRun/test1208.py
+___________________________________________________________________
+Added: svn:executable
+## -0,0 +1 ##
++*
+Index: ../trunk-jpl/test/NightlyRun/python_skipped_tests.txt
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/python_skipped_tests.txt	(revision 14106)
++++ ../trunk-jpl/test/NightlyRun/python_skipped_tests.txt	(revision 14107)
+@@ -10,5 +10,16 @@
+ test417    needs Dakota
+ test418    needs Dakota
+ test420    needs Dakota
+-test1401    roundoff error in metric causes different meshes from matlab
+-test1402    roundoff error in metric causes different meshes from matlab
++
++test1401,test1402
++Roundoff error in ComputeHessian and ComputeMetric causes different meshes
++from matlab, specifically in the handling of 0/0=nan, eps/0=inf, etc.  Since
++the mesh is of a different size, NR fails.  (Note Matlab test1402 currently
++fails.)
++
++test1205,test1206,test1207
++The expression for the thickness in the RoundSheetStaticEISMINT.par/py files
++includes an expression (1/2)^(4/3)-(r/(2*rmax))^(4/3).  For r close to rmax,
++the outer circumference, this equals roundoff zero, but differences
++propagate into the sixth digit of the thickness, which is enough to fail NR.
++
+Index: ../trunk-jpl/test/NightlyRun/test1203.py
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/test1203.py	(revision 0)
++++ ../trunk-jpl/test/NightlyRun/test1203.py	(revision 14107)
+@@ -0,0 +1,58 @@
++import numpy
++import sys
++from model import *
++from triangle import *
++from setmask import *
++from parameterize import *
++from setflowequation import *
++from EnumDefinitions import *
++from solve import *
++from MatlabFuncs import *
++
++"""
++Test on the diagnostic model and the prognostic in 2d
++"""
++
++printingflag=False
++
++#test 5 and 6: 
++md=model()
++md=triangle(md,'../Exp/SquareEISMINT.exp',5100.)    #test3
++md=setmask(md,'all','')
++md=parameterize(md,'../Par/SquareEISMINT.py')
++md=setflowequation(md,'macayeal','all')    #MacAyeal's model and 2d
++
++#Impose a non zero velocity on the upper boundary condition (y=max(y))
++pos=numpy.nonzero(md.mesh.y==numpy.max(md.mesh.y))
++md.diagnostic.spcvy[pos]=400.*(((md.mesh.x[pos].reshape(-1,1)-100000.)/25000.)**2-numpy.ones((numpy.size(pos),1)))*heaviside((1.+sys.float_info.epsilon)*numpy.ones((numpy.size(pos),1))-((md.mesh.x[pos].reshape(-1,1)-100000.)/25000.)**2)
++
++#Compute solution for MacAyeal's model 
++md.cluster=generic('name',oshostname(),'np',8)
++md=solve(md,DiagnosticSolutionEnum())
++
++vx=md.results.DiagnosticSolution.Vx
++vy=md.results.DiagnosticSolution.Vy
++
++#plot results
++#plotmodel(md,'data',vx,'contourlevels',{0,20,40,60,80,100,-20,-40,-60,-80,-100},...
++#	'contourcolor','k')
++if printingflag:
++	pass
++#	set(gcf,'Color','w')
++#	printmodel('eismintdiag2vx','png','margin','on','marginsize',25,'frame','off','resolution',2,'hardcopy','off');
++#	system(['mv eismintdiag2vx.png ' ISSM_DIR '/website/doc_pdf/validation/Images/EISMINT/IceShelf ']);
++#plotmodel(md,'data',vy,'contourlevels',{-100,-200,-300,-400,-500,-600,-700,-800,-900,-1000},...
++#	'contourcolor','k')
++if printingflag:
++	pass
++#	set(gcf,'Color','w')
++#	printmodel('eismintdiag2vy','png','margin','on','marginsize',25,'frame','off','resolution',2,'hardcopy','off');
++#	system(['mv eismintdiag2vy.png ' ISSM_DIR '/website/doc_pdf/validation/Images/EISMINT/IceShelf ']);
++
++#Fields and tolerances to track changes
++field_names     =['Vx','Vy']
++field_tolerances=[1e-13,1e-13]
++field_values=[\
++	vx, \
++	vy, \
++	]
+Index: ../trunk-jpl/test/NightlyRun/test1208.m
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/test1208.m	(revision 14106)
++++ ../trunk-jpl/test/NightlyRun/test1208.m	(revision 14107)
+@@ -1,6 +1,6 @@
+ %EISMINT benchmark experiment A
+ numlayers=8;
+-resolution=50000;
++resolution=50000.;
+ 
+ %To begin with the numerical model
+ md=triangle(model(),'../Exp/SquareEISMINT750000.exp',resolution);
+@@ -13,14 +13,14 @@
+ 
+ %Spc the nodes on the bed
+ pos=find(md.mesh.vertexonbed);
+-md.diagnostic.spcvx(pos)=0;
+-md.diagnostic.spcvy(pos)=0;
+-md.diagnostic.spcvz(pos)=0;
++md.diagnostic.spcvx(pos)=0.;
++md.diagnostic.spcvy(pos)=0.;
++md.diagnostic.spcvz(pos)=0.;
+ 
+ %Adapt the time steps to the resolution
+-md.timestepping.time_step=15;
++md.timestepping.time_step=15.;
+ md.settings.output_frequency=500;
+-md.timestepping.final_time=30000;
++md.timestepping.final_time=30000.;
+ md.prognostic.stabilization=1;
+ md.thermal.stabilization=1;
+ 
+Index: ../trunk-jpl/test/NightlyRun/test1204.py
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/test1204.py	(revision 0)
++++ ../trunk-jpl/test/NightlyRun/test1204.py	(revision 14107)
+@@ -0,0 +1,70 @@
++import numpy
++import sys
++from model import *
++from triangle import *
++from setmask import *
++from parameterize import *
++from setflowequation import *
++from EnumDefinitions import *
++from solve import *
++from MatlabFuncs import *
++
++"""
++Test on the diagnostic model and the prognostic in 2d
++"""
++
++printingflag=False
++
++#tests 3 and 4: using Glen's flow law
++md=model()
++md=triangle(md,'../Exp/SquareEISMINT.exp',3550.)
++md=setmask(md,'all','')
++md=parameterize(md,'../Par/SquareEISMINT.py')
++md=setflowequation(md,'macayeal','all')    #MacAyeal's model and 2d
++
++#Impose a non zero velocity on the upper boundary condition (y=max(y))
++pos=numpy.nonzero(md.mesh.y==max(md.mesh.y))
++md.diagnostic.spcvy[pos]=400.*(((md.mesh.x[pos].reshape(-1,1)-100000.)/25000.)**2-numpy.ones((numpy.size(pos),1)))*heaviside((1.+sys.float_info.epsilon)*numpy.ones((numpy.size(pos),1))-((md.mesh.x[pos].reshape(-1,1)-100000.)/25000.)**2)
++
++#Compute solution for MacAyeal's model 
++md.cluster=generic('name',oshostname(),'np',8)
++md=solve(md,DiagnosticSolutionEnum())
++
++#plot results
++md.initialization.vx=md.results.DiagnosticSolution.Vx
++md.initialization.vy=md.results.DiagnosticSolution.Vy
++
++md.timestepping.time_step=1.
++md.timestepping.final_time=5000.
++md.prognostic.stabilization=1
++md=solve(md,TransientSolutionEnum())
++
++#plotmodel(md,'data',(md.results.TransientSolution(end).Vx))
++if printingflag:
++	pass
++#	set(gcf,'Color','w')
++#	printmodel('eisminttrans2vx','png','margin','on','marginsize',25,'frame','off','resolution',2,'hardcopy','off');
++#	system(['mv eisminttrans2vx.png ' ISSM_DIR '/website/doc_pdf/validation/Images/EISMINT/IceShelf ']);
++
++#plotmodel(md,'data',(md.results.TransientSolution(end).Vy))
++if printingflag:
++	pass
++#	set(gcf,'Color','w')
++#	printmodel('eisminttrans2vy','png','margin','on','marginsize',25,'frame','off','resolution',2,'hardcopy','off');
++#	system(['mv eisminttrans2vy.png ' ISSM_DIR '/website/doc_pdf/validation/Images/EISMINT/IceShelf ']);
++
++#plotmodel(md,'data',(md.results.TransientSolution(end).Thickness))
++if printingflag:
++	pass
++#	set(gcf,'Color','w')
++#	printmodel('eisminttrans2thickness','png','margin','on','marginsize',25,'frame','off','resolution',2,'hardcopy','off');
++#	system(['mv eisminttrans2thickness.png ' ISSM_DIR '/website/doc_pdf/validation/Images/EISMINT/IceShelf ']);
++
++#Fields and tolerances to track changes
++field_names     =['Vx','Vy','Thickness']
++field_tolerances=[1e-13,1e-13,1e-13]
++field_values=[\
++	md.results.TransientSolution[-1].Vx, \
++	md.results.TransientSolution[-1].Vy, \
++	md.results.TransientSolution[-1].Thickness, \
++	]
+Index: ../trunk-jpl/test/NightlyRun/test1201.m
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/test1201.m	(revision 14106)
++++ ../trunk-jpl/test/NightlyRun/test1201.m	(revision 14107)
+@@ -5,16 +5,16 @@
+ 
+ for stabilization=1:3;
+ 	%The goal is to test the prognostic model
+-	md=bamg(model(),'domain','../Exp/SquareEISMINT.exp','hmax',3000);
++	md=bamg(model(),'domain','../Exp/SquareEISMINT.exp','hmax',3000.);
+ 	md=setmask(md,'all','');
+ 	md=parameterize(md,'../Par/SquareEISMINT.par');
+-	md.surfaceforcings.mass_balance(:)=0;
++	md.surfaceforcings.mass_balance(:)=0.;
+ 	md=setflowequation(md,'macayeal','all');
+ 	md.cluster=generic('name',oshostname(),'np',8);
+ 
+ 	disp('      initial velocity');
+ 	md.initialization.vx=zeros(md.mesh.numberofvertices,1);
+-	md.initialization.vy=-400*ones(md.mesh.numberofvertices,1);
++	md.initialization.vy=-400.*ones(md.mesh.numberofvertices,1);
+ 
+ 	%Stabilization
+ 	if stabilization==2,
+@@ -28,9 +28,9 @@
+ 	times=0:1:500;
+ 	md.prognostic.spcthickness=NaN*ones(md.mesh.numberofvertices+1,length(times));
+ 	md.prognostic.spcthickness(end,:)=times;
+-	md.prognostic.spcthickness(pos,:)=repmat(500+100*sin(2*pi*times/200),length(pos),1);
++	md.prognostic.spcthickness(pos,:)=repmat(500.+100.*sin(2.*pi*times/200.),length(pos),1);
+ 	if stabilization==3,
+-		pos=find(isnan(md.prognostic.spcthickness)); md.prognostic.spcthickness(pos)=500; %No NaN for DG
++		pos=find(isnan(md.prognostic.spcthickness)); md.prognostic.spcthickness(pos)=500.; %No NaN for DG
+ 	end
+ 
+ 	%solve
+@@ -42,20 +42,20 @@
+ end
+ 
+ %plot results
+-[elements,x,y,z,s,h1]=SectionValues(md,results{1},'../Exp/CrossLineEISMINT.exp',100);
+-[elements,x,y,z,s,h2]=SectionValues(md,results{2},'../Exp/CrossLineEISMINT.exp',100);
+-[elements,x,y,z,s,h3]=SectionValues(md,results{3},'../Exp/CrossLineEISMINT.exp',100);
+-[elements,x,y,z,s,hth]=SectionValues(md, 500+100*sin(2*pi/200*(500-md.mesh.y/400)),'../Exp/CrossLineEISMINT.exp',100);
++[elements,x,y,z,s,h1]=SectionValues(md,results{1},'../Exp/CrossLineEISMINT.exp',100.);
++[elements,x,y,z,s,h2]=SectionValues(md,results{2},'../Exp/CrossLineEISMINT.exp',100.);
++[elements,x,y,z,s,h3]=SectionValues(md,results{3},'../Exp/CrossLineEISMINT.exp',100.);
++[elements,x,y,z,s,hth]=SectionValues(md, 500+100*sin(2*pi/200*(500-md.mesh.y/400)),'../Exp/CrossLineEISMINT.exp',100.);
+ plot(s,h1,'r',s,h2,'b',s,h3,'g',s,hth,'k')
+ legend('Art. diff.','No Art. diff.','D.G.','Theoretical')
+-if printingflag, 
++if printingflag,
+ 	set(gcf,'Color','w')
+ 	export_fig([issmdir() '/website/doc_pdf/validation/Images/EISMINT/IceShelf/eismintmasscthickness.pdf']);
+ end
+ 
+ %Fields and tolerances to track changes
+ field_names     ={ ...
+-	'ThicknessArtDigg','ThicknessNoArtDiff','ThicknessDG' ...
++	'ThicknessArtDiff','ThicknessNoArtDiff','ThicknessDG' ...
+ };
+ field_tolerances={...
+ 	1e-13, 1e-13, 1e-13...
Index: /issm/oecreview/Archive/14064-14311/ISSM-14107-14108.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14107-14108.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14107-14108.diff	(revision 14312)
@@ -0,0 +1,116 @@
+Index: ../trunk-jpl/src/android/ISSM_Visual/src/gov/nasa/jpl/issm/visual/colormap/colormap.c
+===================================================================
+--- ../trunk-jpl/src/android/ISSM_Visual/src/gov/nasa/jpl/issm/visual/colormap/colormap.c	(revision 0)
++++ ../trunk-jpl/src/android/ISSM_Visual/src/gov/nasa/jpl/issm/visual/colormap/colormap.c	(revision 14108)
+@@ -0,0 +1,83 @@
++int nrows=64;
++double hsv[nrows,3]={
++1.0000         0         0
++    1.0000    0.0938         0
++    1.0000    0.1875         0
++    1.0000    0.2812         0
++    1.0000    0.3750         0
++    1.0000    0.4688         0
++    1.0000    0.5625         0
++    1.0000    0.6562         0
++    1.0000    0.7500         0
++    1.0000    0.8438         0
++    1.0000    0.9375         0
++    0.9688    1.0000         0
++    0.8750    1.0000         0
++    0.7812    1.0000         0
++    0.6875    1.0000         0
++    0.5938    1.0000         0
++    0.5000    1.0000         0
++    0.4062    1.0000         0
++    0.3125    1.0000         0
++    0.2188    1.0000         0
++    0.1250    1.0000         0
++    0.0312    1.0000         0
++         0    1.0000    0.0625
++         0    1.0000    0.1562
++         0    1.0000    0.2500
++         0    1.0000    0.3438
++         0    1.0000    0.4375
++         0    1.0000    0.5312
++         0    1.0000    0.6250
++         0    1.0000    0.7188
++         0    1.0000    0.8125
++         0    1.0000    0.9062
++         0    1.0000    1.0000
++         0    0.9062    1.0000
++         0    0.8125    1.0000
++         0    0.7188    1.0000
++         0    0.6250    1.0000
++         0    0.5312    1.0000
++         0    0.4375    1.0000
++         0    0.3438    1.0000
++         0    0.2500    1.0000
++         0    0.1562    1.0000
++         0    0.0625    1.0000
++    0.0312         0    1.0000
++    0.1250         0    1.0000
++    0.2188         0    1.0000
++    0.3125         0    1.0000
++    0.4062         0    1.0000
++    0.5000         0    1.0000
++    0.5938         0    1.0000
++    0.6875         0    1.0000
++    0.7812         0    1.0000
++    0.8750         0    1.0000
++    0.9688         0    1.0000
++    1.0000         0    0.9375
++    1.0000         0    0.8438
++    1.0000         0    0.7500
++    1.0000         0    0.6562
++    1.0000         0    0.5625
++    1.0000         0    0.4688
++    1.0000         0    0.3750
++    1.0000         0    0.2812
++    1.0000         0    0.1875
++    1.0000         0    0.0938
++}
++
++
++
++value v=5*10^-5; // (m/s)
++value vmin,vmax;
++
++
++
++double alpha=(vmax-alpha)/(vmax-vmin);
++int i=(int)(alpha*nrows);
++
++double r,g,b;
++
++r=hsv[i,1];
++g=hsv[i,2];
++b=hsv[i,3];
+Index: ../trunk-jpl/src/android/ISSM_Visual/src/gov/nasa/jpl/issm/visual/colormap/list_of_colormaps
+===================================================================
+--- ../trunk-jpl/src/android/ISSM_Visual/src/gov/nasa/jpl/issm/visual/colormap/list_of_colormaps	(revision 0)
++++ ../trunk-jpl/src/android/ISSM_Visual/src/gov/nasa/jpl/issm/visual/colormap/list_of_colormaps	(revision 14108)
+@@ -0,0 +1,23 @@
++hsv        - Hue-saturation-value color map.
++hot        - Black-red-yellow-white color map.
++gray       - Linear gray-scale color map.
++bone       - Gray-scale with tinge of blue color map.
++copper     - Linear copper-tone color map.
++pink       - Pastel shades of pink color map.
++white      - All white color map.
++flag       - Alternating red, white, blue, and black color map.
++lines      - Color map with the line colors.
++colorcube  - Enhanced color-cube color map.
++vga        - Windows colormap for 16 colors.
++jet        - Variant of HSV.
++prism      - Prism color map.
++cool       - Shades of cyan and magenta color map.
++autumn     - Shades of red and yellow color map.
++spring     - Shades of magenta and yellow color map.
++winter     - Shades of blue and green color map.
++summer  
++
++
++
++a=colormap('hsv');
++a
Index: /issm/oecreview/Archive/14064-14311/ISSM-14108-14109.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14108-14109.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14108-14109.diff	(revision 14312)
@@ -0,0 +1,773 @@
+Index: ../trunk-jpl/src/android/ISSM/jni/Main.cpp
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/Main.cpp	(revision 14108)
++++ ../trunk-jpl/src/android/ISSM/jni/Main.cpp	(revision 14109)
+@@ -78,7 +78,6 @@
+ 		/*log:*/
+ 		__android_log_print(ANDROID_LOG_INFO, "Native","Solving ");
+ 
+-		/*fill out the first two slots, extract the same way in java using get(int position)*/
+ 		jdouble *dBuf = (jdouble *)env->GetDirectBufferAddress(buf);
+ 
+ 		/*pass bBuff to fem model to allocate data. In the future: fm -> Solve(dBuf, alpha)*/
+@@ -138,13 +137,13 @@
+ 			}
+ 		}
+ 
+-		/*for(i=0;i<148;i++){
++		for(i=0;i<148;i++){
+ 		__android_log_print(ANDROID_LOG_INFO, "Native","%g %g %g | %g %g %g | %g %g %g | %g %g %g\n",
+ 				dBuf[12*i+0],dBuf[12*i+1],dBuf[12*i+2],
+ 				dBuf[12*i+3],dBuf[12*i+4],dBuf[12*i+5],
+ 				dBuf[12*i+6],dBuf[12*i+7],dBuf[12*i+8],
+ 				dBuf[12*i+9],dBuf[12*i+10],dBuf[12*i+11]);
+-		}*/
++		}
+ 
+ 		/*delete temporary data:*/
+ 		delete patch;
+Index: ../trunk-jpl/src/android/ISSM/project.properties
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/project.properties	(revision 14108)
++++ ../trunk-jpl/src/android/ISSM/project.properties	(revision 14109)
+@@ -11,4 +11,4 @@
+ #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
+ 
+ # Project target.
+-target=android-14
++target=android-15
+Index: ../trunk-jpl/src/android/ISSM/AndroidManifest.xml
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/AndroidManifest.xml	(revision 14108)
++++ ../trunk-jpl/src/android/ISSM/AndroidManifest.xml	(revision 14109)
+@@ -1,8 +1,8 @@
+ <manifest xmlns:android="http://schemas.android.com/apk/res/android"
+     package="com.example.issm"
+     android:versionCode="1"
+-    android:versionName="1.0" >
+-
++    android:versionName="1.0"
++    android:installLocation="preferExternal" >
+     <uses-sdk
+         android:minSdkVersion="10"
+         android:targetSdkVersion="15" />
+Index: ../trunk-jpl/src/android/ISSM/src/com/example/issm/MyGLRenderer.java
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/src/com/example/issm/MyGLRenderer.java	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/src/com/example/issm/MyGLRenderer.java	(revision 14109)
+@@ -0,0 +1,295 @@
++/*
++ * Copyright (C) 2012 The Android Open Source Project
++ *
++ * Licensed under the Apache License, Version 2.0 (the "License");
++ * you may not use this file except in compliance with the License.
++ * You may obtain a copy of the License at
++ *
++ *      http://www.apache.org/licenses/LICENSE-2.0
++ *
++ * Unless required by applicable law or agreed to in writing, software
++ * distributed under the License is distributed on an "AS IS" BASIS,
++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
++ * See the License for the specific language governing permissions and
++ * limitations under the License.
++ */
++
++package com.example.issm;
++import java.nio.ByteBuffer;
++import java.nio.ByteOrder;
++import java.nio.FloatBuffer;
++
++import javax.microedition.khronos.egl.EGLConfig;
++import javax.microedition.khronos.opengles.GL10;
++
++import android.opengl.GLES20;
++import android.opengl.GLSurfaceView;
++import android.opengl.Matrix;
++
++public class MyGLRenderer implements GLSurfaceView.Renderer 
++{
++	public volatile float mAngle;
++	
++	/**
++	 * Store the model matrix. This matrix is used to move models from object space (where each model can be thought
++	 * of being located at the center of the universe) to world space.
++	 */
++	private float[][] mModelMatrix;
++	
++	/**
++	 * Store the view matrix. This can be thought of as our camera. This matrix transforms world space to eye space;
++	 * it positions things relative to our eye.
++	 */
++	private float[][] mViewMatrix;
++
++	/** Store the projection matrix. This is used to project the scene onto a 2D viewport. */
++	private float[][] mProjectionMatrix;
++
++	/** Allocate storage for the final combined matrix. This will be passed into the shader program. */
++	private float[][] mMVPMatrix;
++
++	/** This will be used to pass in the transformation matrix. */
++	private int mMatrixHandle;
++	
++    private FloatBuffer[] triangleVert;
++    
++    private float[][] triangleData2DArr;
++    
++    private int mPositionHandle;
++    
++    private int mColorHandle;
++    
++	/** How many bytes per float. */
++    private final int mBytesPerFloat = 4;
++
++    /** How many elements per vertex. */
++    private final int mStrideBytes = 7 * mBytesPerFloat;
++
++    /** Offset of the position data. */
++    private final int mPositionOffset = 0;
++
++    /** Size of the position data in elements. */
++    private final int mPositionDataSize = 3;
++
++    /** Offset of the color data. */
++    private final int mColorOffset = 3;
++
++    /** Size of the color data in elements. */
++    private final int mColorDataSize = 4;	
++
++    public MyGLRenderer(float[][] vertices)
++    {	
++    	triangleData2DArr = new float[vertices.length][21];
++    	triangleVert = new FloatBuffer[vertices.length];
++    	
++    	for (int i = 0; i < vertices.length; i++)
++    	{
++    		for (int j = 0; j < 21; j++)
++    			triangleData2DArr[i][j] = vertices[i][j]; 
++    	}
++	    		
++	    // initialize vertex byte buffer for shape coordinates
++    	for (int i = 0; i < vertices.length; i++)
++    	{
++    		triangleVert[i] = ByteBuffer.allocateDirect(triangleData2DArr[i].length * mBytesPerFloat)
++    													.order(ByteOrder.nativeOrder()).asFloatBuffer();
++    		triangleVert[i].put(triangleData2DArr[i]).position(0);
++    	}
++    }
++    
++    public void onSurfaceCreated(GL10 unused, EGLConfig config) 
++    {
++        // Set the background frame color
++        GLES20.glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
++        
++		// Position the eye behind the origin.
++		final float eyeX = 0.0f;
++		final float eyeY = 0.0f;
++		final float eyeZ = 1.5f;
++
++		// We are looking toward the distance
++		final float lookX = 0.0f;
++		final float lookY = 0.0f;
++		final float lookZ = -5.0f;
++
++		// Set our up vector. This is where our head would be pointing were we holding the camera.
++		final float upX = 0.0f;
++		final float upY = 1.0f;
++		final float upZ = 0.0f;
++
++		// Set the view matrix. This matrix can be said to represent the camera position.
++		// NOTE: In OpenGL 1, a ModelView matrix is used, which is a combination of a model and
++		// view matrix. In OpenGL 2, we can keep track of these matrices separately if we choose.
++		mViewMatrix = new float[triangleVert.length][16];
++		
++		for (int i = 0; i < triangleVert.length; i++)
++			Matrix.setLookAtM(mViewMatrix[i], 0, eyeX, eyeY, eyeZ, lookX, lookY, lookZ, upX, upY, upZ);
++        
++		final String vertexShader =
++				"uniform mat4 u_MVPMatrix;      \n"		// A constant representing the combined model/view/projection matrix.
++			  + "attribute vec4 a_Position;     \n"		// Per-vertex position information we will pass in.
++			  + "attribute vec4 a_Color;        \n"		// Per-vertex color information we will pass in.			  
++			  + "varying vec4 v_Color;          \n"		// This will be passed into the fragment shader.
++			  + "void main()                    \n"		// The entry point for our vertex shader.
++			  + "{                              \n"
++			  + "   v_Color = a_Color;          \n"		// Pass the color through to the fragment shader. 
++			  											// It will be interpolated across the triangle.
++			  + "   gl_Position = u_MVPMatrix   \n" 	// gl_Position is a special variable used to store the final position.
++			  + "               * a_Position;   \n"     // Multiply the vertex by the matrix to get the final point in 			                                            			 
++			  + "}                              \n";    // normalized screen coordinates.
++
++			final String fragmentShader =
++				"precision mediump float;       \n"		// Set the default precision to medium. We don't need as high of a											// precision in the fragment shader.				
++			  + "varying vec4 v_Color;          \n"		// This is the color from the vertex shader interpolated across the 
++			  											// triangle per fragment.			  
++			  + "void main()                    \n"		// The entry point for our fragment shader.
++			  + "{                              \n"
++			  + "   gl_FragColor = v_Color;     \n"		// Pass the color directly through the pipeline.		  
++			  + "}                              \n";												
++
++    	   
++        int vertexShaderHandle = GLES20.glCreateShader(GLES20.GL_VERTEX_SHADER);
++		// Pass in the shader source.
++		GLES20.glShaderSource(vertexShaderHandle, vertexShader);
++
++		// Compile the shader.
++		GLES20.glCompileShader(vertexShaderHandle);
++
++		// Get the compilation status.
++		final int[] compileStatus1 = new int[1];
++		GLES20.glGetShaderiv(vertexShaderHandle, GLES20.GL_COMPILE_STATUS, compileStatus1, 0);
++
++		// If the compilation failed, delete the shader.
++		if (compileStatus1[0] == 0) 
++		{				
++			GLES20.glDeleteShader(vertexShaderHandle);
++			vertexShaderHandle = 0;
++		}
++		
++         
++    	int fragmentShaderHandle = GLES20.glCreateShader(GLES20.GL_FRAGMENT_SHADER);
++		// Pass in the shader source.
++		GLES20.glShaderSource(fragmentShaderHandle, fragmentShader);
++
++		// Compile the shader.
++		GLES20.glCompileShader(fragmentShaderHandle);
++
++		// Get the compilation status.
++		final int[] compileStatus2 = new int[1];
++		GLES20.glGetShaderiv(fragmentShaderHandle, GLES20.GL_COMPILE_STATUS, compileStatus2, 0);
++
++		// If the compilation failed, delete the shader.
++		if (compileStatus2[0] == 0) 
++		{				
++			GLES20.glDeleteShader(fragmentShaderHandle);
++			fragmentShaderHandle = 0;
++		}
++
++        
++        int mProgram = GLES20.glCreateProgram();
++		// Bind the vertex shader to the program.
++		GLES20.glAttachShader(mProgram, vertexShaderHandle);			
++
++		// Bind the fragment shader to the program.
++		GLES20.glAttachShader(mProgram, fragmentShaderHandle);
++
++		// Bind attributes
++		GLES20.glBindAttribLocation(mProgram, 0, "a_Position");
++		GLES20.glBindAttribLocation(mProgram, 1, "a_Color");
++
++		// Link the two shaders together into a program.
++		GLES20.glLinkProgram(mProgram);
++
++		// Get the link status.
++		final int[] linkStatus = new int[1];
++		GLES20.glGetProgramiv(mProgram, GLES20.GL_LINK_STATUS, linkStatus, 0);
++
++		// If the link failed, delete the program.
++		if (linkStatus[0] == 0) 
++		{				
++			GLES20.glDeleteProgram(mProgram);
++			mProgram = 0;
++		}
++		
++		for (int i = 0; i < triangleVert.length; i++)
++		{
++			mMatrixHandle = GLES20.glGetUniformLocation(mProgram, "u_MVPMatrix");        
++	        mPositionHandle = GLES20.glGetAttribLocation(mProgram, "a_Position");
++	        mColorHandle = GLES20.glGetAttribLocation(mProgram, "a_Color");
++		}
++        
++        // Add program to OpenGL environment
++        GLES20.glUseProgram(mProgram);
++    }
++    
++    public void onSurfaceChanged(GL10 unused, int width, int height) 
++    {
++        // Adjust the viewport based on geometry changes,
++        // such as screen rotation
++        GLES20.glViewport(0, 0, width, height);
++        
++		// Create a new perspective projection matrix. The height will stay the same
++		// while the width will vary as per aspect ratio.
++		final float ratio = (float) width / height;
++		
++		mProjectionMatrix = new float[triangleVert.length][16];
++		for (int i = 0; i < triangleVert.length; i++)
++			Matrix.frustumM(mProjectionMatrix[i], 0, -ratio*0.5f, ratio*1.0f, 0.0f, 1.0f, 1.0f, 14f);
++		//Matrix.frustumM(m, offset, left, right, bottom, top, near, far)
++    }
++    
++    public void onDrawFrame(GL10 glUnused) 
++    {
++    	// Draw background color
++    	GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT);
++    	
++    	mModelMatrix = new float[triangleVert.length][16];
++        // Draw the triangle facing straight on.
++    	for (int i = 0; i < triangleVert.length; i++)
++    		Matrix.setIdentityM(mModelMatrix[i], 0);
++    		
++    	mMVPMatrix = new float[triangleVert.length][16];
++    	draw(triangleVert); 
++
++    }
++
++    private void draw(final FloatBuffer[] aTriangleBuffer)
++    {
++    	for (int i = 0; i < aTriangleBuffer.length; i++)
++    	{
++	        // Pass in the position information
++	        aTriangleBuffer[i].position(mPositionOffset);
++	        GLES20.glVertexAttribPointer(mPositionHandle, mPositionDataSize, GLES20.GL_FLOAT, false,
++	                				     mStrideBytes, aTriangleBuffer[i]);
++	        
++	        GLES20.glEnableVertexAttribArray(mPositionHandle);
++	     
++	        
++	        // Pass in the color information
++	        aTriangleBuffer[i].position(mColorOffset);
++	        GLES20.glVertexAttribPointer(mColorHandle, mColorDataSize, GLES20.GL_FLOAT, false,
++	                					 mStrideBytes, aTriangleBuffer[i]);
++	        
++	        GLES20.glEnableVertexAttribArray(mColorHandle);
++	        
++	        //Matrix.setRotateM(mModelMatrix[i], 0, mAngle, 0, 0, -1.0f);
++
++			// This multiplies the view matrix by the model matrix, and stores the result in the MVP matrix
++	        // (which currently contains model * view).
++	        Matrix.multiplyMM(mMVPMatrix[i], 0, mViewMatrix[i], 0, mModelMatrix[i], 0);
++	        
++	        // This multiplies the modelview matrix by the projection matrix, and stores the result in the MVP matrix
++	        // (which now contains model * view * projection).
++	        Matrix.multiplyMM(mMVPMatrix[i], 0, mProjectionMatrix[i], 0, mMVPMatrix[i], 0);
++	        
++	        GLES20.glUniformMatrix4fv(mMatrixHandle, 1, false, mMVPMatrix[i], 0);
++	        
++	        // Draw the triangle
++	        GLES20.glDrawArrays(GLES20.GL_TRIANGLES, 0, 3);
++	        
++	        // Disable vertex array
++	        GLES20.glDisableVertexAttribArray(mPositionHandle);
++    	}
++    }
++
++}
+Index: ../trunk-jpl/src/android/ISSM/src/com/example/issm/ISSM.java
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/src/com/example/issm/ISSM.java	(revision 14108)
++++ ../trunk-jpl/src/android/ISSM/src/com/example/issm/ISSM.java	(revision 14109)
+@@ -5,7 +5,9 @@
+ import java.nio.ByteBuffer;
+ import java.nio.ByteOrder;
+ import java.nio.DoubleBuffer;
++import java.text.DecimalFormat;
+ 
++import android.opengl.GLSurfaceView;
+ import android.os.Bundle;
+ import android.app.Activity;
+ import android.content.res.AssetManager;
+@@ -15,6 +17,8 @@
+ import android.view.View.OnClickListener;
+ import android.widget.Button;
+ import android.widget.EditText;
++import android.widget.FrameLayout;
++import android.widget.SeekBar;
+ import android.widget.TextView;
+ 
+ 
+@@ -27,6 +31,12 @@
+ 	private String mapName;
+ 	private String issmFolder;
+ 	private int size;
++    private GLSurfaceView mGLView;
++	private FrameLayout frame;
++	private SeekBar bar;
++    private TextView /*txtStatus,*/ txtValue;
++    
++
+     @Override
+   //------------------------------------------------------------------------------------------------    
+     public void onCreate(Bundle savedInstanceState) {
+@@ -40,8 +50,8 @@
+         	}
+         }
+         setContentView(R.layout.activity_issm);
+-        this.input  = (EditText) super.findViewById(R.id.input);
+-        this.output  = (TextView) super.findViewById(R.id.output);
++        this.bar  = (SeekBar) findViewById(R.id.seekBar);
++        this.txtValue  = (TextView) super.findViewById(R.id.value);
+         Button button = (Button) super.findViewById(R.id.button1);
+         button.setOnClickListener(this);
+         
+@@ -50,6 +60,8 @@
+         issmNative = new IssmJni();
+         this.createModel();
+         buff = ByteBuffer.allocateDirect(size*12*8).order(ByteOrder.nativeOrder()).asDoubleBuffer();
++        
++
+     }
+ //------------------------------------------------------------------------------------------------    
+     public void createModel()
+@@ -68,28 +80,21 @@
+     public void fillBuffer()
+     {
+     	issmNative.solveISSMModel(5,buff);
+-
+-		//for(int i=0;i< size*12;i++)
+-			//System.out.println(buff.get(i));
+-
+     }
+  //------------------------------------------------------------------------------------------------   
+     public void onClick(View view) 
+ 	{
+ 		//factorial method
+-		String input = this.input.getText().toString();
++		/*String input = this.input.getText().toString();
+ 		if(TextUtils.isEmpty(input))
+ 		{
+ 			return;
+-		}		
+-		long resultfromFac = issmNative.fac(Long.parseLong(input));
++		}*/		
+ 		//example of how to fill buffer Native
+ 		this.fillBuffer();
+ 		
+-		//print result from fac and the first two slot of filled buffer.
+-		this.output.setText("Result = " + resultfromFac + "\n" 
+-										+ "First slot from buffer:\n" 
+-										+ buff.get(0) + " size " +  size);
+-
++		mGLView = new MyGLSurfaceView(this, buff, size);
++	    frame = (FrameLayout)findViewById(R.id.frame);
++	    frame.addView(mGLView);
+ 	}
+ }
+Index: ../trunk-jpl/src/android/ISSM/src/com/example/issm/MyGLSurfaceView.java
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/src/com/example/issm/MyGLSurfaceView.java	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/src/com/example/issm/MyGLSurfaceView.java	(revision 14109)
+@@ -0,0 +1,233 @@
++package com.example.issm;
++
++import java.nio.DoubleBuffer;
++
++import android.content.Context;
++import android.opengl.GLSurfaceView;
++import android.view.MotionEvent;
++
++
++class MyGLSurfaceView extends GLSurfaceView 
++{
++	private MyGLRenderer mRend;
++	private int iter = 0;
++	DoubleBuffer db;
++	int size;
++	double vmax = 0, vmin=0;
++	final int rowNumber = 64;
++	double[][] colorMap =  {
++		{	1.0000,         0,         0 },
++		{   1.0000,    0.0938    ,     0 },
++		{    1.0000,    0.1875    ,     0},
++		{   1.0000,    0.2812    ,     0},
++		{   1.0000,    0.3750    ,     0},
++		{   1.0000,    0.4688   ,      0},
++		{   1.0000,    0.5625   ,      0},
++		{   1.0000,    0.6562   ,      0},
++		{   1.0000,    0.7500   ,      0},
++		{   1.0000,    0.8438   ,      0},
++		{   1.0000,    0.9375 ,        0},
++		{   0.9688,    1.0000 ,        0},
++		{   0.8750,    1.0000  ,       0},
++		{   0.7812,    1.0000  ,       0},
++		{   0.6875,    1.0000 ,        0},
++		{   0.5938,    1.0000 ,        0},
++		{   0.5000,    1.0000 ,        0},
++		{   0.4062,    1.0000 ,        0},
++		{   0.3125,   1.0000 ,        0},
++		{   0.2188,   1.0000 ,        0},
++		{   0.1250,  1.0000  ,       0},
++		{   0.0312,    1.0000,         0},
++		{        0,    1.0000,    0.0625},
++		{        0,    1.0000,    0.1562},
++		{        0,    1.0000,    0.2500},
++		{       0,    1.0000,    0.3438},
++		{        0,    1.0000,    0.4375},
++		{        0,    1.0000,    0.5312},
++		{        0,    1.0000,    0.6250},
++		{        0,    1.0000,    0.7188},
++		{        0,    1.0000,    0.8125},
++		{        0,    1.0000,   0.9062},
++		{        0,    1.0000,    1.0000},
++		{        0,    0.9062,   1.0000},
++		{        0,    0.8125,    1.0000},
++		{        0,    0.7188,    1.0000},
++		{        0,    0.6250,   1.0000},
++		{        0,    0.5312,    1.0000},
++		{        0,    0.4375,    1.0000},
++		{        0,    0.3438,    1.0000},
++		{        0,    0.2500,    1.0000},
++		{        0,    0.1562,    1.0000},
++		{        0,    0.0625,    1.0000},
++		{   0.0312,         0,    1.0000},
++		{   0.1250,         0,    1.0000},
++		{   0.2188,         0,    1.0000},
++		{   0.3125,         0,    1.0000},
++		{   0.4062,         0,    1.0000},
++		{   0.5000,         0,    1.0000},
++		{   0.5938,         0,    1.0000},
++		{   0.6875,         0,    1.0000},
++		{   0.7812,         0,    1.0000},
++		{   0.8750,         0,    1.0000},
++		{   0.9688,         0,    1.0000},
++		{   1.0000,         0,    0.9375},
++		{   1.0000,         0,    0.8438},
++		{   1.0000,         0,    0.7500},
++		{   1.0000,         0,    0.6562},
++		{   1.0000,         0,    0.5625},
++		{   1.0000,         0,    0.4688},
++		{   1.0000,         0,    0.3750},
++		{   1.0000,         0,   0.2812},
++		{   1.0000,         0,    0.1875},
++		{   1.0000,         0,    0.0938}};
++	float[][] colorMapInFloat;
++    public MyGLSurfaceView(Context context, DoubleBuffer db, int size) 
++    {
++        super(context);
++
++        // Create an OpenGL ES 2.0 context.
++        setEGLContextClientVersion(2);
++        this.db = db;
++        this.size = size;
++        colorMapInFloat = new float[64][3];
++        
++        for (int i = 0 ; i < 64; i++)
++        {
++        	for (int j = 0 ; j < 3; j++)
++        	{
++        		colorMapInFloat[i][j] = (float) colorMap[i][j];
++        	}
++        }
++        vmin = db.get(9);
++        findMinMaxVelocity();
++        System.out.println("max" +vmax +"  "+ "min"+vmin ); 
++        intialize();
++    }
++    private void intialize()
++    {
++    	final int NMAX_TRIANGLES = 2000;
++        final int MAX_VERTICES = 21;
++        float f[][] = new float[size][MAX_VERTICES];
++        int n, random;
++        final int SCALE_FACTOR = 700000;
++		for (int i = 0; i < size; i++)
++		{
++				f[i][0] = (float)db.get(12*i+0)/SCALE_FACTOR;
++				f[i][1] = (float)db.get(12*i+1)/SCALE_FACTOR;
++				f[i][2] = (float)db.get(12*i+2)/SCALE_FACTOR;
++				f[i][7] = (float)db.get(12*i+3)/SCALE_FACTOR;
++				f[i][8] = (float)db.get(12*i+4)/SCALE_FACTOR;
++				f[i][9] = (float)db.get(12*i+5)/SCALE_FACTOR;
++				f[i][14] = (float)db.get(12*i+6)/SCALE_FACTOR;
++				f[i][15] = (float)db.get(12*i+7)/SCALE_FACTOR;
++				f[i][16] = (float)db.get(12*i+8)/SCALE_FACTOR;
++				
++				f[i][6] = 1.0f;
++				f[i][13] = 1.0f;
++				f[i][20] = 1.0f;
++				
++				int index1 = getRowColor(db.get(12*i+9));
++				int index2 = getRowColor(db.get(12*i+10));
++				int index3 = getRowColor(db.get(12*i+11));
++				
++				float r1 = colorMapInFloat[index1][0];
++				float g1 = colorMapInFloat[index1][1];
++				float b1 = colorMapInFloat[index1][2];
++				
++				float r2 = colorMapInFloat[index2][0];
++				float g2 = colorMapInFloat[index2][1];
++				float b2 = colorMapInFloat[index2][2];
++				
++				float r3 = colorMapInFloat[index3][0];
++				float g3 = colorMapInFloat[index3][1];
++				float b3 = colorMapInFloat[index3][2];
++				
++				
++				f[i][3] = r1;
++				f[i][4] = g1;
++				f[i][5] = b1;
++				
++				f[i][10] = r2;
++				f[i][11] = g2;
++				f[i][12] = b2;
++				
++				f[i][17] = r3;
++				f[i][18] = g3;
++				f[i][19] = b3;
++
++		}
++    	mRend = new MyGLRenderer(f);
++    	// Set the Renderer for drawing on the GLSurfaceView
++        setRenderer(mRend);
++
++        // Render the view only when there is a change in the drawing data
++        setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY);
++    }
++    private void findMinMaxVelocity()
++    {
++    	for(int i = 0; i < size*12; i++)
++    	{
++    		if(i%12==9 || i%12==10 ||i%12==11 )
++    		{
++    			if (db.get(i) <  vmin) vmin = db.get(i);
++    			if (db.get(i) >= vmax) vmax = db.get(i);
++    		}
++    		else continue; 
++    	}
++    	
++    }
++    private float getData()
++    {
++    	float result = (float) db.get(iter)/1000000;
++    	//System.out.println("result" + result);
++    	if(iter < size*12) iter++;
++    	else iter = 0;
++    	return result;
++    }
++    
++    private int getRowColor(double velocity)
++    {
++    	//velocity = 0;
++    	double alpha=(vmax-velocity)/(vmax-vmin) ;
++    	int row = (int) (alpha * (rowNumber-1));
++    	return row;
++    }
++    
++    private final float TOUCH_SCALE_FACTOR = 180.0f / 320;
++    private float mPreviousX;
++    
++    private float mPreviousY;
++    @Override
++    public boolean onTouchEvent(MotionEvent e) {
++        // MotionEvent reports input details from the touch screen
++        // and other input controls. In this case, you are only
++        // interested in events where the touch position changed.
++
++        float x = e.getX();
++        float y = e.getY();
++
++        switch (e.getAction()) {
++            case MotionEvent.ACTION_MOVE:
++
++                float dx = x - mPreviousX;
++                float dy = y - mPreviousY;
++
++                // reverse direction of rotation above the mid-line
++                if (y > getHeight() / 2) {
++                  dx = dx * -1 ;
++                }
++
++                // reverse direction of rotation to left of the mid-line
++                if (x < getWidth() / 2) {
++                  dy = dy * -1 ;
++                }
++
++                mRend.mAngle += (dx + dy) * TOUCH_SCALE_FACTOR;  // = 180.0f / 320
++                requestRender();
++        }
++
++        mPreviousX = x;
++        mPreviousY = y;
++        return true;
++    }
++}
+\ No newline at end of file
+Index: ../trunk-jpl/src/android/ISSM/gen/com/example/issm/R.java
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/gen/com/example/issm/R.java	(revision 14108)
++++ ../trunk-jpl/src/android/ISSM/gen/com/example/issm/R.java	(revision 14109)
+@@ -20,11 +20,13 @@
+         public static final int ic_launcher=0x7f020001;
+     }
+     public static final class id {
+-        public static final int button1=0x7f080001;
+-        public static final int button2=0x7f080003;
+-        public static final int input=0x7f080000;
+-        public static final int menu_settings=0x7f080004;
+-        public static final int output=0x7f080002;
++        public static final int button1=0x7f080004;
++        public static final int button2=0x7f080005;
++        public static final int frame=0x7f080003;
++        public static final int menu_settings=0x7f080006;
++        public static final int relativeLay=0x7f080000;
++        public static final int seekBar=0x7f080001;
++        public static final int value=0x7f080002;
+     }
+     public static final class layout {
+         public static final int activity_issm=0x7f030000;
+Index: ../trunk-jpl/src/android/ISSM/res/layout/activity_issm.xml
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/res/layout/activity_issm.xml	(revision 14108)
++++ ../trunk-jpl/src/android/ISSM/res/layout/activity_issm.xml	(revision 14109)
+@@ -1,33 +1,44 @@
+ <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+     xmlns:tools="http://schemas.android.com/tools"
++    android:id="@+id/relativeLay"
+     android:layout_width="match_parent"
+-    android:layout_height="match_parent" >
++    android:layout_height="match_parent"
++    android:orientation="horizontal" >
+ 
+-    <EditText
+-        android:id="@+id/input"
+-        android:layout_width="wrap_content"
++    <SeekBar
++        android:id="@+id/seekBar"
++        android:layout_width="match_parent"
+         android:layout_height="wrap_content"
++        android:layout_alignParentBottom="true"
+         android:layout_alignParentLeft="true"
+-        android:ems="10"
+-        android:inputType="number" />
++        android:layout_marginBottom="41dp" />
+ 
+-    <Button
+-        android:id="@+id/button1"
++    <TextView
++        android:id="@+id/value"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+-        android:layout_alignRight="@+id/input"
+-        android:layout_below="@+id/input"
+-        android:layout_marginRight="46dp"
+-        android:layout_marginTop="23dp"
+-        android:text="calculate" />
++        android:layout_above="@+id/seekBar"
++        android:layout_centerHorizontal="true"
++        android:layout_marginBottom="15dp"
++        android:text="alpha value = 0" />
+ 
+-    <TextView
+-        android:id="@+id/output"
++    <FrameLayout
++        xmlns:android="http://schemas.android.com/apk/res/android"
++        xmlns:tools="http://schemas.android.com/tools"
++        android:id="@+id/frame"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+-        android:layout_alignParentLeft="true"
+-        android:layout_below="@+id/button1"
+-        android:layout_marginTop="39dp"
+-        android:textSize="20sp" />
++        android:layout_above="@+id/value"
++        android:layout_centerHorizontal="true"
++        android:layout_marginBottom="12dp" >
++    </FrameLayout>
+ 
++    <Button
++        android:id="@+id/button1"
++        android:layout_width="wrap_content"
++        android:layout_height="wrap_content"
++        android:layout_above="@+id/seekBar"
++        android:layout_alignParentRight="true"
++        android:text="Reset" />
++
+ </RelativeLayout>
Index: /issm/oecreview/Archive/14064-14311/ISSM-14109-14110.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14109-14110.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14109-14110.diff	(revision 14312)
@@ -0,0 +1,62 @@
+Index: ../trunk-jpl/src/android/ISSM/assets/Map/antarctica.bin
+===================================================================
+Cannot display: file marked as a binary type.
+svn:mime-type = application/octet-stream
+Index: ../trunk-jpl/src/android/ISSM/assets/Map/greenland.bin
+===================================================================
+Cannot display: file marked as a binary type.
+svn:mime-type = application/octet-stream
+Index: ../trunk-jpl/src/android/ISSM/bin/AndroidManifest.xml
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/bin/AndroidManifest.xml	(revision 14109)
++++ ../trunk-jpl/src/android/ISSM/bin/AndroidManifest.xml	(revision 14110)
+@@ -1,8 +1,8 @@
+ <manifest xmlns:android="http://schemas.android.com/apk/res/android"
+     package="com.example.issm"
+     android:versionCode="1"
+-    android:versionName="1.0" >
+-
++    android:versionName="1.0"
++    android:installLocation="preferExternal" >
+     <uses-sdk
+         android:minSdkVersion="10"
+         android:targetSdkVersion="15" />
+Index: ../trunk-jpl/src/android/ISSM/res/layout/activity_issm.xml
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/res/layout/activity_issm.xml	(revision 14109)
++++ ../trunk-jpl/src/android/ISSM/res/layout/activity_issm.xml	(revision 14110)
+@@ -39,6 +39,6 @@
+         android:layout_height="wrap_content"
+         android:layout_above="@+id/seekBar"
+         android:layout_alignParentRight="true"
+-        android:text="Reset" />
++        android:text="Solve" />
+ 
+ </RelativeLayout>
+Index: ../trunk-jpl/src/android/ISSM/res/layout/activity_mapselection.xml
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/res/layout/activity_mapselection.xml	(revision 14109)
++++ ../trunk-jpl/src/android/ISSM/res/layout/activity_mapselection.xml	(revision 14110)
+@@ -8,10 +8,10 @@
+             style="@layout/activity_mapselection"
+             android:layout_width="wrap_content"
+             android:layout_height="wrap_content"
++            android:layout_alignParentBottom="true"
+             android:layout_alignParentLeft="true"
+-            android:layout_alignParentTop="true"
+-            android:layout_marginLeft="63dp"
+-            android:layout_marginTop="97dp"
++            android:layout_marginBottom="33dp"
++            android:layout_marginLeft="32dp"
+             android:text="Greenland" />
+ 
+         <Button
+@@ -20,7 +20,7 @@
+             android:layout_height="wrap_content"
+             android:layout_alignBaseline="@+id/button1"
+             android:layout_alignBottom="@+id/button1"
+-            android:layout_marginLeft="64dp"
++            android:layout_marginLeft="24dp"
+             android:layout_toRightOf="@+id/button1"
+             android:text="Antarctica" />
+ 
Index: /issm/oecreview/Archive/14064-14311/ISSM-14110-14111.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14110-14111.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14110-14111.diff	(revision 14312)
@@ -0,0 +1,64 @@
+Index: ../trunk-jpl/src/android/ISSM/gen/com/example/issm/R.java
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/gen/com/example/issm/R.java	(revision 14110)
++++ ../trunk-jpl/src/android/ISSM/gen/com/example/issm/R.java	(revision 14111)
+@@ -1,47 +0,0 @@
+-/* AUTO-GENERATED FILE.  DO NOT MODIFY.
+- *
+- * This class was automatically generated by the
+- * aapt tool from the resource data it found.  It
+- * should not be modified by hand.
+- */
+-
+-package com.example.issm;
+-
+-public final class R {
+-    public static final class attr {
+-    }
+-    public static final class dimen {
+-        public static final int padding_large=0x7f040002;
+-        public static final int padding_medium=0x7f040001;
+-        public static final int padding_small=0x7f040000;
+-    }
+-    public static final class drawable {
+-        public static final int ic_action_search=0x7f020000;
+-        public static final int ic_launcher=0x7f020001;
+-    }
+-    public static final class id {
+-        public static final int button1=0x7f080004;
+-        public static final int button2=0x7f080005;
+-        public static final int frame=0x7f080003;
+-        public static final int menu_settings=0x7f080006;
+-        public static final int relativeLay=0x7f080000;
+-        public static final int seekBar=0x7f080001;
+-        public static final int value=0x7f080002;
+-    }
+-    public static final class layout {
+-        public static final int activity_issm=0x7f030000;
+-        public static final int activity_mapselection=0x7f030001;
+-    }
+-    public static final class menu {
+-        public static final int activity_issm=0x7f070000;
+-    }
+-    public static final class string {
+-        public static final int app_name=0x7f050000;
+-        public static final int hello_world=0x7f050001;
+-        public static final int menu_settings=0x7f050002;
+-        public static final int title_activity_issm=0x7f050003;
+-    }
+-    public static final class style {
+-        public static final int AppTheme=0x7f060000;
+-    }
+-}
+Index: ../trunk-jpl/src/android/ISSM/gen/com/example/issm/BuildConfig.java
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/gen/com/example/issm/BuildConfig.java	(revision 14110)
++++ ../trunk-jpl/src/android/ISSM/gen/com/example/issm/BuildConfig.java	(revision 14111)
+@@ -1,6 +0,0 @@
+-/** Automatically generated file. DO NOT MODIFY */
+-package com.example.issm;
+-
+-public final class BuildConfig {
+-    public final static boolean DEBUG = true;
+-}
+\ No newline at end of file
Index: /issm/oecreview/Archive/14064-14311/ISSM-14111-14112.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14111-14112.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14111-14112.diff	(revision 14312)
@@ -0,0 +1,14 @@
+Index: ../trunk-jpl/src/android/ISSM/assets/Map/greenland.bin
+===================================================================
+Cannot display: file marked as a binary type.
+svn:mime-type = application/octet-stream
+Index: ../trunk-jpl/src/android/ISSM/assets/Map/greenland.petsc
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/assets/Map/greenland.petsc	(revision 14111)
++++ ../trunk-jpl/src/android/ISSM/assets/Map/greenland.petsc	(revision 14112)
+@@ -1,4 +1,4 @@
+-%Petsc options file: android.petsc written from Matlab solver array
++%Petsc options file: SeaRISEgreenland.petsc written from Matlab solver array
+ 
+ +NoneAnalysis
+ -mat_type aij
Index: /issm/oecreview/Archive/14064-14311/ISSM-14134-14135.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14134-14135.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14134-14135.diff	(revision 14312)
@@ -0,0 +1,15 @@
+Index: ../trunk-jpl/test/Par/ISMIPE.par
+===================================================================
+--- ../trunk-jpl/test/Par/ISMIPE.par	(revision 14134)
++++ ../trunk-jpl/test/Par/ISMIPE.par	(revision 14135)
+@@ -6,8 +6,8 @@
+ md.geometry.bed=zeros(md.mesh.numberofvertices,1);
+ for i=1:md.mesh.numberofvertices
+ 	y=md.mesh.y(i);
+-	point1=floor(y/100.)+1.;
+-	point2=min(point1+1,51.);
++	point1=floor(y/100.)+1;
++	point2=min(point1+1,51);
+ 	coeff=(y-(point1-1.)*100.)/100.;
+ 	md.geometry.bed(i)=(1.-coeff)*data(point1,2)+coeff*data(point2,2);
+ 	md.geometry.surface(i)=(1.-coeff)*data(point1,3)+coeff*data(point2,3);
Index: /issm/oecreview/Archive/14064-14311/ISSM-14139-14140.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14139-14140.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14139-14140.diff	(revision 14312)
@@ -0,0 +1,13 @@
+Index: ../trunk-jpl/src/m/classes/initialization.py
+===================================================================
+--- ../trunk-jpl/src/m/classes/initialization.py	(revision 14139)
++++ ../trunk-jpl/src/m/classes/initialization.py	(revision 14140)
+@@ -89,8 +89,6 @@
+ 		WriteData(fid,'data',self.vz,'format','DoubleMat','mattype',1,'enum',VzEnum())
+ 		WriteData(fid,'data',self.pressure,'format','DoubleMat','mattype',1,'enum',PressureEnum())
+ 		WriteData(fid,'data',self.temperature,'format','DoubleMat','mattype',1,'enum',TemperatureEnum())
+-		WriteData(fid,'data',self.surfacetemp,'format','DoubleMat','mattype',1,'enum',TemperatureSurfaceEnum()) 
+-		WriteData(fid,'data',self.basaltemp,'format','DoubleMat','mattype',1,'enum',TemperatureBasalEnum())
+ 		WriteData(fid,'data',self.watercolumn,'format','DoubleMat','mattype',1,'enum',WatercolumnEnum())
+ 		WriteData(fid,'data',self.waterfraction,'format','DoubleMat','mattype',1,'enum',WaterfractionEnum())
+ 	# }}}
Index: /issm/oecreview/Archive/14064-14311/ISSM-14140-14141.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14140-14141.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14140-14141.diff	(revision 14312)
@@ -0,0 +1,425 @@
+Index: ../trunk-jpl/src/m/classes/thermal.py
+===================================================================
+--- ../trunk-jpl/src/m/classes/thermal.py	(revision 14140)
++++ ../trunk-jpl/src/m/classes/thermal.py	(revision 14141)
+@@ -31,7 +31,7 @@
+ 	def __repr__(self):
+ 		# {{{ Display
+ 		string='   Thermal solution parameters:'
+-		string="%s\n\n%s"%(string,fielddisplay(self,'spctemperature','temperature constraints (NaN means no constraint)'))
++		string="%s\n%s"%(string,fielddisplay(self,'spctemperature','temperature constraints (NaN means no constraint)'))
+ 		string="%s\n%s"%(string,fielddisplay(self,'stabilization','0->no, 1->artificial_diffusivity, 2->SUPG'))
+ 		string="%s\n%s"%(string,fielddisplay(self,'maxiter','maximum number of non linear iterations'))
+ 		string="%s\n%s"%(string,fielddisplay(self,'penalty_lock','stabilize unstable thermal constraints that keep zigzagging after n iteration (default is 0, no stabilization)'))
+Index: ../trunk-jpl/src/m/classes/mask.m
+===================================================================
+--- ../trunk-jpl/src/m/classes/mask.m	(revision 14140)
++++ ../trunk-jpl/src/m/classes/mask.m	(revision 14141)
+@@ -34,6 +34,8 @@
+ 			md = checkfield(md,'mask.vertexonwater'      ,'size',[md.mesh.numberofvertices 1],'values',[0 1]);
+ 		end % }}}
+ 		function disp(obj) % {{{
++			disp(sprintf('   masks:'));
++
+ 			fielddisplay(obj,'elementonfloatingice','element on floating ice flags list');
+ 			fielddisplay(obj,'vertexonfloatingice','vertex on floating ice flags list');
+ 			fielddisplay(obj,'elementongroundedice','element on grounded ice  list');
+Index: ../trunk-jpl/src/m/classes/balancethickness.py
+===================================================================
+--- ../trunk-jpl/src/m/classes/balancethickness.py	(revision 14140)
++++ ../trunk-jpl/src/m/classes/balancethickness.py	(revision 14141)
+@@ -28,7 +28,7 @@
+ 		
+ 		string='   balance thickness solution parameters:' 
+ 		
+-		string="%s\n\n%s"%(string,fielddisplay(self,'spcthickness','thickness constraints (NaN means no constraint)'))
++		string="%s\n%s"%(string,fielddisplay(self,'spcthickness','thickness constraints (NaN means no constraint)'))
+ 		string="%s\n%s"%(string,fielddisplay(self,'thickening_rate','ice thickening rate used in the mass conservation (dh/dt)'))
+ 		string="%s\n%s"%(string,fielddisplay(self,'stabilization',"0: None, 1: SU, 2: MacAyeal's artificial diffusivity, 3:DG"))
+ 		return string
+Index: ../trunk-jpl/src/m/classes/groundingline.py
+===================================================================
+--- ../trunk-jpl/src/m/classes/groundingline.py	(revision 14140)
++++ ../trunk-jpl/src/m/classes/groundingline.py	(revision 14141)
+@@ -29,7 +29,7 @@
+ 		# {{{ Display
+ 		string='   grounding line solution parameters:'
+ 
+-		string="%s\n\n%s"%(string,fielddisplay(self,'migration','type of grounding line migration: ''SoftMigration'',''AgressiveMigration'' or ''None'''))
++		string="%s\n%s"%(string,fielddisplay(self,'migration','type of grounding line migration: ''SoftMigration'',''AgressiveMigration'' or ''None'''))
+ 		string="%s\n%s"%(string,fielddisplay(self,'melting_rate','melting rate applied when previously grounded parts start floating'))
+ 		return string
+ 		#}}}	
+Index: ../trunk-jpl/src/m/classes/inversion.m
+===================================================================
+--- ../trunk-jpl/src/m/classes/inversion.m	(revision 14140)
++++ ../trunk-jpl/src/m/classes/inversion.m	(revision 14141)
+@@ -104,6 +104,7 @@
+ 			end
+ 		end % }}}
+ 		function disp(obj) % {{{
++			disp(sprintf('      inversion parameters:'));
+ 			fielddisplay(obj,'iscontrol','is inversion activated?');
+ 			fielddisplay(obj,'incomplete_adjoint','do we assume linear viscosity?');
+ 			fielddisplay(obj,'control_parameters','parameter where inverse control is carried out; ex: {''FrictionCoefficient''}, or {''MaterialsRheologyBbar''}');
+Index: ../trunk-jpl/src/m/classes/hydrology.py
+===================================================================
+--- ../trunk-jpl/src/m/classes/hydrology.py	(revision 14140)
++++ ../trunk-jpl/src/m/classes/hydrology.py	(revision 14141)
+@@ -31,7 +31,7 @@
+ 		# {{{ Display
+ 		
+ 		string='   hydrology solution parameters:'
+-		string="%s\n\n%s"%(string,fielddisplay(self,'spcwatercolumn','water thickness constraints (NaN means no constraint)'))
++		string="%s\n%s"%(string,fielddisplay(self,'spcwatercolumn','water thickness constraints (NaN means no constraint)'))
+ 		string="%s\n%s"%(string,fielddisplay(self,'n','Manning roughness coefficient'))
+ 		string="%s\n%s"%(string,fielddisplay(self,'CR','tortuosity parameter'))
+ 		string="%s\n%s"%(string,fielddisplay(self,'p','dimensionless exponent in Manning velocity formula'))
+Index: ../trunk-jpl/src/m/classes/surfaceforcings.py
+===================================================================
+--- ../trunk-jpl/src/m/classes/surfaceforcings.py	(revision 14140)
++++ ../trunk-jpl/src/m/classes/surfaceforcings.py	(revision 14141)
+@@ -44,7 +44,7 @@
+ 		# {{{ Display
+ 		string="   surface forcings parameters:"
+ 
+-		string="%s\n\n%s"%(string,fielddisplay(self,'precipitation','surface precipitation [m/yr water eq]'))
++		string="%s\n%s"%(string,fielddisplay(self,'precipitation','surface precipitation [m/yr water eq]'))
+ 		string="%s\n%s"%(string,fielddisplay(self,'mass_balance','surface mass balance [m/yr ice eq]'))
+ 		string="%s\n%s"%(string,fielddisplay(self,'ispdd','is pdd activated (0 or 1, default is 0)'))
+ 		string="%s\n%s"%(string,fielddisplay(self,'isdelta18o','is temperature and precipitation delta18o parametrisation activated (0 or 1, default is 0)'))
+@@ -68,7 +68,6 @@
+ 
+ 		return string
+ 		#}}}
+-		
+ 	def setdefaultparameters(self):
+ 		# {{{setdefaultparameters
+ 		  
+Index: ../trunk-jpl/src/m/classes/rifts.py
+===================================================================
+--- ../trunk-jpl/src/m/classes/rifts.py	(revision 14140)
++++ ../trunk-jpl/src/m/classes/rifts.py	(revision 14141)
+@@ -28,7 +28,7 @@
+ 		# {{{ Display
+ 		string='   rifts parameters:'
+ 
+-		string="%s\n\n%s"%(string,fielddisplay(self,'riftstruct','structure containing all rift information (vertices coordinates, segments, type of melange, ...)'))
++		string="%s\n%s"%(string,fielddisplay(self,'riftstruct','structure containing all rift information (vertices coordinates, segments, type of melange, ...)'))
+ 		string="%s\n%s"%(string,fielddisplay(self,'riftproperties',''))
+ 		return string
+ 		#}}}
+Index: ../trunk-jpl/src/m/classes/mesh.py
+===================================================================
+--- ../trunk-jpl/src/m/classes/mesh.py	(revision 14140)
++++ ../trunk-jpl/src/m/classes/mesh.py	(revision 14141)
+@@ -62,9 +62,11 @@
+ 		#}}}
+ 	def __repr__(self):
+ 		# {{{ Display
++		string="   Mesh:" 
+ 
++
+ 		if self.dimension==3:
+-			string="\n%s"%("      Elements and vertices of the original 2d mesh:")
++			string="%s\n%s"%(string,"\n      Elements and vertices of the original 2d mesh:")
+ 			
+ 			string="%s\n%s"%(string,fielddisplay(self,"numberofelements2d","number of elements"))
+ 			string="%s\n%s"%(string,fielddisplay(self,"numberofvertices2d","number of vertices"))
+@@ -72,9 +74,9 @@
+ 			string="%s\n%s"%(string,fielddisplay(self,"x2d","vertices x coordinate"))
+ 			string="%s\n%s"%(string,fielddisplay(self,"y2d","vertices y coordinate"))
+ 
+-			string="%s\n%s" %(string,"Elements and vertices of the extruded 3d mesh:")
++			string="%s\n%s"%(string,"\n\n      Elements and vertices of the extruded 3d mesh:")
+ 		else:
+-			string="\n%s"%("      Elements and vertices:")
++			string="%s\n%s"%(string,"\n      Elements and vertices:")
+ 		string="%s\n%s"%(string,fielddisplay(self,"numberofelements","number of elements"))
+ 		string="%s\n%s"%(string,fielddisplay(self,"numberofvertices","number of vertices"))
+ 		string="%s\n%s"%(string,fielddisplay(self,"elements","index into (x,y,z), coordinates of the vertices"))
+@@ -84,7 +86,7 @@
+ 		string="%s\n%s"%(string,fielddisplay(self,"edges","edges of the 2d mesh (vertex1 vertex2 element1 element2)"))
+ 		string="%s\n%s"%(string,fielddisplay(self,"numberofedges","number of edges of the 2d mesh"))
+ 
+-		string="%s%s"%(string,"\n      Properties:")
++		string="%s%s"%(string,"\n\n      Properties:")
+ 		string="%s\n%s"%(string,fielddisplay(self,"dimension","mesh dimension (2d or 3d)"))
+ 		string="%s\n%s"%(string,fielddisplay(self,"numberoflayers","number of extrusion layers"))
+ 		string="%s\n%s"%(string,fielddisplay(self,"vertexonbed","lower vertices flags list"))
+@@ -102,11 +104,11 @@
+ 		string="%s\n%s"%(string,fielddisplay(self,"elementconnectivity","list of vertices connected to element_i"))
+ 		string="%s\n%s"%(string,fielddisplay(self,"average_vertex_connectivity","average number of vertices connected to one vertex"))
+ 
+-		string="%s%s"%(string,"\n      Extracted model:")
++		string="%s%s"%(string,"\n\n      Extracted model:")
+ 		string="%s\n%s"%(string,fielddisplay(self,"extractedvertices","vertices extracted from the model"))
+ 		string="%s\n%s"%(string,fielddisplay(self,"extractedelements","elements extracted from the model"))
+ 
+-		string="%s%s"%(string,"\n      Projection:")
++		string="%s%s"%(string,"\n\n      Projection:")
+ 		string="%s\n%s"%(string,fielddisplay(self,"lat","vertices latitude"))
+ 		string="%s\n%s"%(string,fielddisplay(self,"long","vertices longitude"))
+ 		string="%s\n%s"%(string,fielddisplay(self,"hemisphere","Indicate hemisphere 'n' or 's'"))
+Index: ../trunk-jpl/src/m/classes/timestepping.py
+===================================================================
+--- ../trunk-jpl/src/m/classes/timestepping.py	(revision 14140)
++++ ../trunk-jpl/src/m/classes/timestepping.py	(revision 14141)
+@@ -28,7 +28,7 @@
+ 	def __repr__(self):
+ 		# {{{ Display
+ 		string="   timestepping parameters:"
+-		string="%s\n\n%s"%(string,fielddisplay(self,"start_time","simulation starting time [yrs]"))
++		string="%s\n%s"%(string,fielddisplay(self,"start_time","simulation starting time [yrs]"))
+ 		string="%s\n%s"%(string,fielddisplay(self,"final_time","final time to stop the simulation [yrs]"))
+ 		string="%s\n%s"%(string,fielddisplay(self,"time_step","length of time steps [yrs]"))
+ 		string="%s\n%s"%(string,fielddisplay(self,"time_adapt","use cfl condition to define time step ? (0 or 1) "))
+Index: ../trunk-jpl/src/m/classes/constants.py
+===================================================================
+--- ../trunk-jpl/src/m/classes/constants.py	(revision 14140)
++++ ../trunk-jpl/src/m/classes/constants.py	(revision 14141)
+@@ -26,14 +26,13 @@
+ 	def __repr__(self):
+ 		# {{{ Display
+ 		string="   constants parameters:"
+-		string="%s\n\n%s"%(string,fielddisplay(self,"g","gravitational acceleration"))
++
++		string="%s\n%s"%(string,fielddisplay(self,"g","gravitational acceleration"))
+ 		string="%s\n%s"%(string,fielddisplay(self,"yts","number of seconds in a year"))
+ 		string="%s\n%s"%(string,fielddisplay(self,"referencetemperature","reference temperature used in the enthalpy model"))
+ 
+-
+ 		return string
+ 		#}}}
+-		
+ 	def setdefaultparameters(self):
+ 		# {{{setdefaultparameters
+ 		
+Index: ../trunk-jpl/src/m/classes/friction.py
+===================================================================
+--- ../trunk-jpl/src/m/classes/friction.py	(revision 14140)
++++ ../trunk-jpl/src/m/classes/friction.py	(revision 14141)
+@@ -26,7 +26,8 @@
+ 	def __repr__(self):
+ 		# {{{ Display
+ 		string="Sigma= drag^2 * Neff ^r * u ^s, with Neff=rho_ice*g*thickness+rho_water*g*bed, r=q/p and s=1/p"
+-		string="%s\n\n%s"%(string,fielddisplay(self,"coefficient","friction coefficient [SI]"))
++
++		string="%s\n%s"%(string,fielddisplay(self,"coefficient","friction coefficient [SI]"))
+ 		string="%s\n%s"%(string,fielddisplay(self,"p","p exponent"))
+ 		string="%s\n%s"%(string,fielddisplay(self,"q","q exponent"))
+ 		return string
+Index: ../trunk-jpl/src/m/classes/diagnostic.py
+===================================================================
+--- ../trunk-jpl/src/m/classes/diagnostic.py	(revision 14140)
++++ ../trunk-jpl/src/m/classes/diagnostic.py	(revision 14141)
+@@ -44,8 +44,8 @@
+ 	def __repr__(self):
+ 		# {{{ Display
+ 		
+-		string='\n   Diagnostic solution parameters:'
+-		string="%s\n\n%s"%(string,'      Convergence criteria:')
++		string='   Diagnostic solution parameters:'
++		string="%s\n%s"%(string,'      Convergence criteria:')
+ 			
+ 		string="%s\n%s"%(string,fielddisplay(self,'restol','mechanical equilibrium residual convergence criterion'))
+ 		string="%s\n%s"%(string,fielddisplay(self,'reltol','velocity relative convergence criterion, NaN -> not applied'))
+@@ -54,22 +54,22 @@
+ 		string="%s\n%s"%(string,fielddisplay(self,'maxiter','maximum number of nonlinear iterations'))
+ 		string="%s\n%s"%(string,fielddisplay(self,'viscosity_overshoot','over-shooting constant new=new+C*(new-old)'))
+ 
+-		string="%s\n%s"%(string,'      boundary conditions:')
++		string="%s\n%s"%(string,'\n      boundary conditions:')
+ 
+ 		string="%s\n%s"%(string,fielddisplay(self,'spcvx','x-axis velocity constraint (NaN means no constraint)'))
+ 		string="%s\n%s"%(string,fielddisplay(self,'spcvy','y-axis velocity constraint (NaN means no constraint)'))
+ 		string="%s\n%s"%(string,fielddisplay(self,'spcvz','z-axis velocity constraint (NaN means no constraint)'))
+ 		string="%s\n%s"%(string,fielddisplay(self,'icefront','segments on ice front list (last column 0-> Air, 1-> Water, 2->Ice'))
+ 
+-		string="%s\n%s"%(string,'      Rift options:')
++		string="%s\n%s"%(string,'\n      Rift options:')
+ 		string="%s\n%s"%(string,fielddisplay(self,'rift_penalty_threshold','threshold for instability of mechanical constraints'))
+ 		string="%s\n%s"%(string,fielddisplay(self,'rift_penalty_lock','number of iterations before rift penalties are locked'))
+ 
+-		string="%s\n%s"%(string,'      Penalty options:')
++		string="%s\n%s"%(string,'\n      Penalty options:')
+ 		string="%s\n%s"%(string,fielddisplay(self,'penalty_factor','offset used by penalties: penalty = Kmax*10^offset'))
+ 		string="%s\n%s"%(string,fielddisplay(self,'vertex_pairing','pairs of vertices that are penalized'))
+ 
+-		string="%s\n%s"%(string,'      Other:')
++		string="%s\n%s"%(string,'\n      Other:')
+ 		string="%s\n%s"%(string,fielddisplay(self,'shelf_dampening','use dampening for floating ice ? Only for Stokes model'))
+ 		string="%s\n%s"%(string,fielddisplay(self,'stokesreconditioning','multiplier for incompressibility equation. Only for Stokes model'))
+ 		string="%s\n%s"%(string,fielddisplay(self,'referential','local referential'))
+Index: ../trunk-jpl/src/m/classes/debug.py
+===================================================================
+--- ../trunk-jpl/src/m/classes/debug.py	(revision 14140)
++++ ../trunk-jpl/src/m/classes/debug.py	(revision 14141)
+@@ -25,7 +25,7 @@
+ 		# {{{ Display
+ 		string="   debug parameters:"
+ 
+-		string="%s\n\n%s"%(string,fielddisplay(self,"valgrind","use Valgrind to debug (0 or 1)"))
++		string="%s\n%s"%(string,fielddisplay(self,"valgrind","use Valgrind to debug (0 or 1)"))
+ 		string="%s\n%s"%(string,fielddisplay(self,"gprof","use gnu-profiler to find out where the time is spent"))
+ 		string="%s\n%s"%(string,fielddisplay(self,'profiling','enables profiling (memory, flops, time)'))
+ 		return string
+Index: ../trunk-jpl/src/m/classes/prognostic.py
+===================================================================
+--- ../trunk-jpl/src/m/classes/prognostic.py	(revision 14140)
++++ ../trunk-jpl/src/m/classes/prognostic.py	(revision 14141)
+@@ -31,7 +31,7 @@
+ 	def __repr__(self):
+ 		# {{{ Display
+ 		string='   Prognostic solution parameters:'
+-		string="%s\n\n%s"%(string,fielddisplay(self,'spcthickness','thickness constraints (NaN means no constraint)'))
++		string="%s\n%s"%(string,fielddisplay(self,'spcthickness','thickness constraints (NaN means no constraint)'))
+ 		string="%s\n%s"%(string,fielddisplay(self,'min_thickness','minimum ice thickness allowed'))
+ 		string="%s\n%s"%(string,fielddisplay(self,'hydrostatic_adjustment','adjustment of ice shelves surface and bed elevations: ''Incremental'' or ''Absolute'' '))
+ 		string="%s\n%s"%(string,fielddisplay(self,'stabilization','0->no, 1->artificial_diffusivity, 2->streamline upwinding, 3->discontinuous Galerkin'))
+Index: ../trunk-jpl/src/m/classes/radaroverlay.py
+===================================================================
+--- ../trunk-jpl/src/m/classes/radaroverlay.py	(revision 14140)
++++ ../trunk-jpl/src/m/classes/radaroverlay.py	(revision 14141)
+@@ -23,7 +23,7 @@
+ 	def __repr__(self):
+ 		# {{{ Display
+ 		string='   radaroverlay parameters:'
+-		string="%s\n\n%s"%(string,fielddisplay(self,'pwr','radar power image (matrix)'))
++		string="%s\n%s"%(string,fielddisplay(self,'pwr','radar power image (matrix)'))
+ 		string="%s\n%s"%(string,fielddisplay(self,'x','corresponding x coordinates'))
+ 		string="%s\n%s"%(string,fielddisplay(self,'y','corresponding y coordinates'))
+ 		return string
+Index: ../trunk-jpl/src/m/classes/mask.py
+===================================================================
+--- ../trunk-jpl/src/m/classes/mask.py	(revision 14140)
++++ ../trunk-jpl/src/m/classes/mask.py	(revision 14141)
+@@ -28,8 +28,8 @@
+ 		#}}}
+ 	def __repr__(self):
+ 		# {{{ Display
++		string="   masks:"
+ 
+-		string="";
+ 		string="%s\n%s"%(string,fielddisplay(self,"elementonfloatingice","element on floating ice flags list"))
+ 		string="%s\n%s"%(string,fielddisplay(self,"vertexonfloatingice","vertex on floating ice flags list"))
+ 		string="%s\n%s"%(string,fielddisplay(self,"elementongroundedice","element on grounded ice list"))
+Index: ../trunk-jpl/src/m/classes/matice.m
+===================================================================
+--- ../trunk-jpl/src/m/classes/matice.m	(revision 14140)
++++ ../trunk-jpl/src/m/classes/matice.m	(revision 14141)
+@@ -88,7 +88,7 @@
+ 			md = checkfield(md,'materials.rheology_law','values',{'None' 'Paterson' 'Arrhenius'});
+ 		end % }}}
+ 		function disp(obj) % {{{
+-			disp(sprintf('   Materials:\n'));
++			disp(sprintf('   Materials:'));
+ 
+ 			fielddisplay(obj,'rho_ice','ice density [kg/m^3]');
+ 			fielddisplay(obj,'rho_water','ocean water density [kg/m^3]');
+Index: ../trunk-jpl/src/m/classes/solver.py
+===================================================================
+--- ../trunk-jpl/src/m/classes/solver.py	(revision 14140)
++++ ../trunk-jpl/src/m/classes/solver.py	(revision 14141)
+@@ -2,9 +2,10 @@
+ from mumpsoptions import *
+ from iluasmoptions import *
+ from EnumToString import EnumToString
+-from MatlabFuncs import *
++from fielddisplay import fielddisplay
+ from EnumDefinitions import *
+ from checkfield import *
++from MatlabFuncs import *
+ 
+ class solver(object):
+ 	"""
+@@ -47,8 +48,9 @@
+ 	def __repr__(self):    # {{{
+ 		s ="List of solver options per analysis:\n\n"
+ 		for analysis in vars(self).iterkeys():
+-			s+="%s :\n" % analysis
+-			s+="%s\n" % getattr(self,analysis)
++#			s+="%s:\n\n" % analysis
++#			s+="%s\n" % getattr(self,analysis)
++			s+="%s\n" % fielddisplay(self,analysis,'')
+ 
+ 		return s
+ 	# }}}
+Index: ../trunk-jpl/src/m/classes/geometry.py
+===================================================================
+--- ../trunk-jpl/src/m/classes/geometry.py	(revision 14140)
++++ ../trunk-jpl/src/m/classes/geometry.py	(revision 14141)
+@@ -30,7 +30,7 @@
+ 
+ 		string="   geometry parameters:"
+ 
+-		string="%s\n\n%s"%(string,fielddisplay(self,'surface','surface elevation'))
++		string="%s\n%s"%(string,fielddisplay(self,'surface','surface elevation'))
+ 		string="%s\n%s"%(string,fielddisplay(self,'thickness','ice thickness'))
+ 		string="%s\n%s"%(string,fielddisplay(self,'bed','bed elevation'))
+ 		string="%s\n%s"%(string,fielddisplay(self,'bathymetry','bathymetry elevation'))
+Index: ../trunk-jpl/src/m/classes/matice.py
+===================================================================
+--- ../trunk-jpl/src/m/classes/matice.py	(revision 14140)
++++ ../trunk-jpl/src/m/classes/matice.py	(revision 14141)
+@@ -37,7 +37,7 @@
+ 		# {{{ Display
+ 		string="   Materials:"
+ 
+-		string="%s\n\n%s"%(string,fielddisplay(self,"rho_ice","ice density [kg/m^3]"))
++		string="%s\n%s"%(string,fielddisplay(self,"rho_ice","ice density [kg/m^3]"))
+ 		string="%s\n%s"%(string,fielddisplay(self,"rho_water","water density [kg/m^3]"))
+ 		string="%s\n%s"%(string,fielddisplay(self,"rho_freshwater","fresh water density [kg/m^3]"))
+ 		string="%s\n%s"%(string,fielddisplay(self,"mu_water","water viscosity [N s/m^2]"))
+Index: ../trunk-jpl/src/m/classes/miscellaneous.py
+===================================================================
+--- ../trunk-jpl/src/m/classes/miscellaneous.py	(revision 14140)
++++ ../trunk-jpl/src/m/classes/miscellaneous.py	(revision 14141)
+@@ -28,7 +28,7 @@
+ 		# {{{ Display
+ 		string='   miscellaneous parameters:'
+ 
+-		string="%s\n\n%s"%(string,fielddisplay(self,'notes','notes in a cell of strings'))
++		string="%s\n%s"%(string,fielddisplay(self,'notes','notes in a cell of strings'))
+ 		string="%s\n%s"%(string,fielddisplay(self,'name','model name'))
+ 		string="%s\n%s"%(string,fielddisplay(self,'dummy','empty field to store some data'))
+ 		return string
+Index: ../trunk-jpl/src/m/classes/inversion.py
+===================================================================
+--- ../trunk-jpl/src/m/classes/inversion.py	(revision 14140)
++++ ../trunk-jpl/src/m/classes/inversion.py	(revision 14141)
+@@ -44,7 +44,7 @@
+ 		#}}}
+ 	def __repr__(self):
+ 		# {{{ Display
+-		string='\n   Inversion parameters:'
++		string='   inversion parameters:'
+ 		string="%s\n%s"%(string,fielddisplay(self,'iscontrol','is inversion activated?'))
+ 		string="%s\n%s"%(string,fielddisplay(self,'incomplete_adjoint','do we assume linear viscosity?'))
+ 		string="%s\n%s"%(string,fielddisplay(self,'control_parameters','parameter where inverse control is carried out; ex: {''FrictionCoefficient''}, or {''MaterialsRheologyBbar''}'))
+Index: ../trunk-jpl/src/m/classes/basalforcings.py
+===================================================================
+--- ../trunk-jpl/src/m/classes/basalforcings.py	(revision 14140)
++++ ../trunk-jpl/src/m/classes/basalforcings.py	(revision 14141)
+@@ -27,7 +27,7 @@
+ 		# {{{ Display
+ 		string="   basal forcings parameters:"
+ 
+-		string="%s\n\n%s"%(string,fielddisplay(self,"melting_rate","basal melting rate (positive if melting)"))
++		string="%s\n%s"%(string,fielddisplay(self,"melting_rate","basal melting rate (positive if melting)"))
+ 		string="%s\n%s"%(string,fielddisplay(self,"melting_rate_correction","additional melting applied when the grounding line retreats"))
+ 		string="%s\n%s"%(string,fielddisplay(self,"geothermalflux","geothermal heat flux [W/m^2]"))
+ 		return string
+Index: ../trunk-jpl/src/m/classes/flowequation.py
+===================================================================
+--- ../trunk-jpl/src/m/classes/flowequation.py	(revision 14140)
++++ ../trunk-jpl/src/m/classes/flowequation.py	(revision 14141)
+@@ -36,7 +36,7 @@
+ 		# {{{ Display
+ 		string='   flow equation parameters:'
+ 
+-		string="%s\n\n%s"%(string,fielddisplay(self,'ismacayealpattyn',"is the macayeal or pattyn approximation used ?"))
++		string="%s\n%s"%(string,fielddisplay(self,'ismacayealpattyn',"is the macayeal or pattyn approximation used ?"))
+ 		string="%s\n%s"%(string,fielddisplay(self,'ishutter',"is the shallow ice approximation used ?"))
+ 		string="%s\n%s"%(string,fielddisplay(self,'isl1l2',"are l1l2 equations used ?"))
+ 		string="%s\n%s"%(string,fielddisplay(self,'isstokes',"are the Full-Stokes equations used ?"))
Index: /issm/oecreview/Archive/14064-14311/ISSM-14141-14142.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14141-14142.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14141-14142.diff	(revision 14312)
@@ -0,0 +1,39 @@
+Index: ../trunk-jpl/src/m/classes/inversion.m
+===================================================================
+--- ../trunk-jpl/src/m/classes/inversion.m	(revision 14141)
++++ ../trunk-jpl/src/m/classes/inversion.m	(revision 14142)
+@@ -104,7 +104,7 @@
+ 			end
+ 		end % }}}
+ 		function disp(obj) % {{{
+-			disp(sprintf('      inversion parameters:'));
++			disp(sprintf('   inversion parameters:'));
+ 			fielddisplay(obj,'iscontrol','is inversion activated?');
+ 			fielddisplay(obj,'incomplete_adjoint','do we assume linear viscosity?');
+ 			fielddisplay(obj,'control_parameters','parameter where inverse control is carried out; ex: {''FrictionCoefficient''}, or {''MaterialsRheologyBbar''}');
+Index: ../trunk-jpl/src/m/classes/autodiff.m
+===================================================================
+--- ../trunk-jpl/src/m/classes/autodiff.m	(revision 14141)
++++ ../trunk-jpl/src/m/classes/autodiff.m	(revision 14142)
+@@ -42,7 +42,7 @@
+ 
+ 		end % }}}
+ 		function disp(obj) % {{{
+-			disp(sprintf('      automatic differentiation parameters:'));
++			disp(sprintf('   automatic differentiation parameters:'));
+ 			fielddisplay(obj,'isautodiff','indicates if the automatic differentiation is activated');
+ 			fielddisplay(obj,'dependents','list of dependent variables');
+ 			fielddisplay(obj,'independents','list of independent variables');
+Index: ../trunk-jpl/src/m/classes/solver.py
+===================================================================
+--- ../trunk-jpl/src/m/classes/solver.py	(revision 14141)
++++ ../trunk-jpl/src/m/classes/solver.py	(revision 14142)
+@@ -48,8 +48,6 @@
+ 	def __repr__(self):    # {{{
+ 		s ="List of solver options per analysis:\n\n"
+ 		for analysis in vars(self).iterkeys():
+-#			s+="%s:\n\n" % analysis
+-#			s+="%s\n" % getattr(self,analysis)
+ 			s+="%s\n" % fielddisplay(self,analysis,'')
+ 
+ 		return s
Index: /issm/oecreview/Archive/14064-14311/ISSM-14149-14150.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14149-14150.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14149-14150.diff	(revision 14312)
@@ -0,0 +1,22 @@
+Index: ../trunk-jpl/test/NightlyRun/test1402.m
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/test1402.m	(revision 14149)
++++ ../trunk-jpl/test/NightlyRun/test1402.m	(revision 14150)
+@@ -20,7 +20,7 @@
+ 	system(['mv mesh2_yams1.png ' ISSM_DIR '/website/doc_pdf/validation/Images/Mesh/ ']);
+ end
+ 
+-md=YamsCall(md,md.inversion.vel_obs,0.005,0.3,2.3,10.^2);
++md=YamsCall(md,md.inversion.vel_obs,0.005,0.3,2.3,10.^-2);
+ u=4.*md.mesh.x-2.; v=4.*md.mesh.y-2.;
+ md.inversion.vel_obs=tanh(30.*(u.^2+v.^2-0.25)) ...
+ 	+tanh(30.*((u-0.75).^2+(v-0.75).^2-0.25)) +tanh(30.*((u-0.75).^2+(v+0.75).^2-0.25)) ...
+@@ -60,7 +60,7 @@
+ end
+ 
+ md.private.bamg=NaN;
+-md=bamg(md,'field',md.inversion.vel_obs,'hmin',0.005,'hmax',0.3,'gradation',2.3,'err',10.^2);
++md=bamg(md,'field',md.inversion.vel_obs,'hmin',0.005,'hmax',0.3,'gradation',2.3,'err',10.^-2);
+ u=4.*md.mesh.x-2.; v=4.*md.mesh.y-2.;
+ md.inversion.vel_obs=tanh(30.*(u.^2+v.^2-0.25)) ...
+ 	+tanh(30.*((u-0.75).^2+(v-0.75).^2-0.25)) +tanh(30.*((u-0.75).^2+(v+0.75).^2-0.25)) ...
Index: /issm/oecreview/Archive/14064-14311/ISSM-14150-14151.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14150-14151.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14150-14151.diff	(revision 14312)
@@ -0,0 +1,46 @@
+Index: ../trunk-jpl/src/m/classes/model/model.py
+===================================================================
+--- ../trunk-jpl/src/m/classes/model/model.py	(revision 14150)
++++ ../trunk-jpl/src/m/classes/model/model.py	(revision 14151)
+@@ -634,12 +634,11 @@
+ 		md.diagnostic.referential=project3d(md,'vector',md.diagnostic.referential,'type','node')
+ 
+ 		#in 3d, pressureload: [node1 node2 node3 node4 element]
+-		if not numpy.any(numpy.isnan(md.diagnostic.icefront)):
+-			pressureload_layer1=numpy.hstack((md.diagnostic.icefront[:,0:2],md.diagnostic.icefront[:,1:2]+md.mesh.numberofvertices2d,md.diagnostic.icefront[:,0:1]+md.mesh.numberofvertices2d,md.diagnostic.icefront[:,2:4]))    #Add two columns on the first layer 
+-			pressureload=numpy.empty((0,6),int)
+-			for i in xrange(numlayers-1):
+-				pressureload=numpy.vstack((pressureload,numpy.hstack((pressureload_layer1[:,0:4]+i*md.mesh.numberofvertices2d,pressureload_layer1[:,4:5]+i*md.mesh.numberofelements2d,pressureload_layer1[:,5:6]))))
+-			md.diagnostic.icefront=pressureload
++		pressureload_layer1=numpy.hstack((md.diagnostic.icefront[:,0:2],md.diagnostic.icefront[:,1:2]+md.mesh.numberofvertices2d,md.diagnostic.icefront[:,0:1]+md.mesh.numberofvertices2d,md.diagnostic.icefront[:,2:4]))    #Add two columns on the first layer 
++		pressureload=numpy.empty((0,6),int)
++		for i in xrange(numlayers-1):
++			pressureload=numpy.vstack((pressureload,numpy.hstack((pressureload_layer1[:,0:4]+i*md.mesh.numberofvertices2d,pressureload_layer1[:,4:5]+i*md.mesh.numberofelements2d,pressureload_layer1[:,5:6]))))
++		md.diagnostic.icefront=pressureload
+ 
+ 		#connectivity
+ 		md.mesh.elementconnectivity=numpy.tile(md.mesh.elementconnectivity,(numlayers-1,1))
+Index: ../trunk-jpl/src/m/classes/model/model.m
+===================================================================
+--- ../trunk-jpl/src/m/classes/model/model.m	(revision 14150)
++++ ../trunk-jpl/src/m/classes/model/model.m	(revision 14151)
+@@ -707,14 +707,12 @@
+ 			md.diagnostic.referential=project3d(md,'vector',md.diagnostic.referential,'type','node');
+ 
+ 			%in 3d, pressureload: [node1 node2 node3 node4 element]
+-			if ~isnan(md.diagnostic.icefront)
+-				pressureload_layer1=[md.diagnostic.icefront(:,1:2)  md.diagnostic.icefront(:,2)+md.mesh.numberofvertices2d  md.diagnostic.icefront(:,1)+md.mesh.numberofvertices2d  md.diagnostic.icefront(:,3:4)]; %Add two columns on the first layer 
+-				pressureload=[];
+-				for i=1:numlayers-1,
+-					pressureload=[pressureload ;pressureload_layer1(:,1:4)+(i-1)*md.mesh.numberofvertices2d pressureload_layer1(:,5)+(i-1)*md.mesh.numberofelements2d pressureload_layer1(:,6)];
+-				end
+-				md.diagnostic.icefront=pressureload;
++			pressureload_layer1=[md.diagnostic.icefront(:,1:2)  md.diagnostic.icefront(:,2)+md.mesh.numberofvertices2d  md.diagnostic.icefront(:,1)+md.mesh.numberofvertices2d  md.diagnostic.icefront(:,3:4)]; %Add two columns on the first layer 
++			pressureload=[];
++			for i=1:numlayers-1,
++				pressureload=[pressureload ;pressureload_layer1(:,1:4)+(i-1)*md.mesh.numberofvertices2d pressureload_layer1(:,5)+(i-1)*md.mesh.numberofelements2d pressureload_layer1(:,6)];
+ 			end
++			md.diagnostic.icefront=pressureload;
+ 
+ 			%connectivity
+ 			md.mesh.elementconnectivity=repmat(md.mesh.elementconnectivity,numlayers-1,1);
Index: /issm/oecreview/Archive/14064-14311/ISSM-14156-14157.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14156-14157.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14156-14157.diff	(revision 14312)
@@ -0,0 +1,358 @@
+Index: ../trunk-jpl/test/NightlyRun/test1205.py
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/test1205.py	(revision 0)
++++ ../trunk-jpl/test/NightlyRun/test1205.py	(revision 14157)
+@@ -0,0 +1,109 @@
++import numpy
++from model import *
++from roundmesh import *
++from setmask import *
++from parameterize import *
++from setflowequation import *
++from EnumDefinitions import *
++from solve import *
++from MatlabFuncs import *
++
++"""
++The aim of this program is to compare a model with an analytical solution given in MacAyeal EISMINT : Lessons in Ice-Sheet Modeling.
++"""
++
++printingflag=False
++
++numlayers=10
++resolution=30000.
++
++#To begin with the numerical model
++md=model()
++md=roundmesh(md,750000.,resolution)
++md=setmask(md,'','')    #We can not test iceshelves nor ice rises with this analytical solution
++md=parameterize(md,'../Par/RoundSheetStaticEISMINT.py')
++
++#Calculation of the analytical 2d velocity field
++constant=0.3
++vx_obs=constant/2.*md.mesh.x*(md.geometry.thickness)**-1
++vy_obs=constant/2.*md.mesh.y*(md.geometry.thickness)**-1
++vel_obs=numpy.sqrt((md.inversion.vx_obs)**2+(md.inversion.vy_obs)**2)
++
++#We extrude the model to have a 3d model
++md.extrude(numlayers,1.);
++md=setflowequation(md,'hutter','all')
++
++#Spc the nodes on the bed
++pos=numpy.nonzero(md.mesh.vertexonbed)
++md.diagnostic.spcvx[pos]=0.
++md.diagnostic.spcvy[pos]=0.
++md.diagnostic.spcvz[pos]=0.
++
++#Now we can solve the problem 
++md.cluster=generic('name',oshostname(),'np',8)
++md=solve(md,DiagnosticSolutionEnum())
++
++#Calculate the depth averaged velocity field (2d):
++vx=md.results.DiagnosticSolution.Vx
++vy=md.results.DiagnosticSolution.Vy
++vel=numpy.zeros((md.mesh.numberofvertices2d,1))
++
++for i in xrange(0,md.mesh.numberofvertices2d):
++	node_vel=0.
++	for j in xrange(0,md.mesh.numberoflayers-1):
++		node_vel=node_vel+1./(2.*(md.mesh.numberoflayers-1))*\
++			(numpy.sqrt(vx[i+(j+1)*md.mesh.numberofvertices2d,0]**2+vy[i+(j+1)*md.mesh.numberofvertices2d,0]**2)+\
++			numpy.sqrt(vx[i+j*md.mesh.numberofvertices2d,0]**2+vy[i+j*md.mesh.numberofvertices2d,0]**2))
++	vel[i,0]=node_vel
++
++#Plot of the velocity from the exact and calculated solutions
++#figure(1)
++#set(gcf,'Position',[1 1 1580 1150])
++#subplot(2,2,1)
++#p=patch('Faces',md.mesh.elements2d,'Vertices',[md.mesh.x2d md.mesh.y2d],'FaceVertexCData',...
++#vel,'FaceColor','interp','EdgeColor','none');
++#title('Modelled velocity','FontSize',14,'FontWeight','bold')
++#colorbar; 
++#caxis([0 200]);
++   
++#subplot(2,2,2)
++#p=patch('Faces',md.mesh.elements2d,'Vertices',[md.mesh.x2d md.mesh.y2d],'FaceVertexCData',...
++#vel_obs,'FaceColor','interp','EdgeColor','none');
++#title('Analytical velocity','FontSize',14,'FontWeight','bold')
++#colorbar; 
++#caxis([0 200]);
++
++#subplot(2,2,3)
++#hold on;
++#plot(sqrt((md.mesh.x(1:md.mesh.numberofvertices2d)).^2+(md.mesh.y(1:md.mesh.numberofvertices2d)).^2),vel,'r.');
++#plot(sqrt((md.mesh.x2d).^2+(md.mesh.y2d).^2),vel_obs,'b.');
++#title('Analytical vs calculated velocity','FontSize',14,'FontWeight','bold');
++#xlabel('distance to the center of the icesheet [m]','FontSize',14,'FontWeight','bold');
++#ylabel('velocity [m/yr]','FontSize',14,'FontWeight','bold');
++#legend('calculated velocity','exact velocity');
++#axis([0 750000 0 200]);
++#hold off;
++
++#subplot(2,2,4)
++#p=patch('Faces',md.mesh.elements2d,'Vertices',[md.mesh.x2d md.mesh.y2d],'FaceVertexCData',...
++#abs(vel-vel_obs)./vel_obs*100,'FaceColor','interp','EdgeColor','none');
++#title('Relative misfit [%]','FontSize',14,'FontWeight','bold')
++#colorbar;
++#caxis([0 100]);
++
++if printingflag:
++	pass
++#	set(gcf,'Color','w')
++#	printmodel('hutterstatic','png','margin','on','marginsize',25,'frame','off','resolution',0.7,'hardcopy','off');
++#	system(['mv hutterstatic.png ' ISSM_DIR '/website/doc_pdf/validation/Images/EISMINT/IceSheet']);
++
++#Fields and tolerances to track changes
++field_names     =[ \
++	'Vx','Vy','Vel', \
++]
++field_tolerances=[ \
++	1e-13,1e-13,1e-13, \
++]
++field_values=[ \
++	vx,vy,vel, \
++]
+
+Property changes on: ../trunk-jpl/test/NightlyRun/test1205.py
+___________________________________________________________________
+Added: svn:executable
+## -0,0 +1 ##
++*
+Index: ../trunk-jpl/test/NightlyRun/test1206.py
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/test1206.py	(revision 0)
++++ ../trunk-jpl/test/NightlyRun/test1206.py	(revision 14157)
+@@ -0,0 +1,108 @@
++import numpy
++from model import *
++from roundmesh import *
++from setmask import *
++from parameterize import *
++from setflowequation import *
++from EnumDefinitions import *
++from solve import *
++from MatlabFuncs import *
++
++"""
++The aim of this program is to compare a model with an analytical solution given in MacAyeal EISMINT : Lessons in Ice-Sheet Modeling.
++"""
++
++printingflag=False
++
++numlayers=10
++resolution=30000.
++
++#To begin with the numerical model
++md=model()
++md=roundmesh(md,750000.,resolution)
++md=setmask(md,'','')    #We can not test iceshelves nor ice rises with this analytical solution
++md=parameterize(md,'../Par/RoundSheetStaticEISMINT.py')
++
++#Calculation of the analytical 2d velocity field
++constant=0.3
++vx_obs=constant/2.*md.mesh.x.reshape(-1,1)*(md.geometry.thickness)**-1
++vy_obs=constant/2.*md.mesh.y.reshape(-1,1)*(md.geometry.thickness)**-1
++vel_obs=numpy.sqrt((md.inversion.vx_obs)**2+(md.inversion.vy_obs)**2)
++
++#We extrude the model to have a 3d model
++md.extrude(numlayers,1.)
++md=setflowequation(md,'pattyn','all')
++
++#Spc the nodes on the bed
++pos=numpy.nonzero(md.mesh.vertexonbed)
++md.diagnostic.spcvx[pos]=0.
++md.diagnostic.spcvy[pos]=0.
++md.diagnostic.spcvz[pos]=0.
++
++#Now we can solve the problem 
++md.cluster=generic('name',oshostname(),'np',8)
++md=solve(md,DiagnosticSolutionEnum())
++
++#Calculate the depth averaged velocity field (2d):
++vx=md.results.DiagnosticSolution.Vx
++vy=md.results.DiagnosticSolution.Vy
++vel=numpy.zeros((md.mesh.numberofvertices2d,1))
++
++for i in xrange(0,md.mesh.numberofvertices2d):
++	node_vel=0.
++	for j in xrange(0,md.mesh.numberoflayers-1):
++		node_vel=node_vel+1./(2.*(md.mesh.numberoflayers-1))*\
++			(numpy.sqrt(vx[i+(j+1)*md.mesh.numberofvertices2d,0]**2+vy[i+(j+1)*md.mesh.numberofvertices2d,0]**2)+\
++			numpy.sqrt(vx[i+j*md.mesh.numberofvertices2d,0]**2+vy[i+j*md.mesh.numberofvertices2d,0]**2))
++	vel[i,0]=node_vel
++
++#Plot of the velocity from the exact and calculated solutions
++#figure(1)
++#subplot(2,2,1)
++#p=patch('Faces',md.mesh.elements2d,'Vertices',[md.mesh.x2d md.mesh.y2d],'FaceVertexCData',...
++#vel,'FaceColor','interp','EdgeColor','none');
++#title('Modelled velocity','FontSize',14,'FontWeight','bold')
++#colorbar; 
++#caxis([0 200]);
++   
++#subplot(2,2,2)
++#p=patch('Faces',md.mesh.elements2d,'Vertices',[md.mesh.x2d md.mesh.y2d],'FaceVertexCData',...
++#vel_obs,'FaceColor','interp','EdgeColor','none');
++#title('Analytical velocity','FontSize',14,'FontWeight','bold')
++#colorbar; 
++#caxis([0 200]);
++
++#subplot(2,2,3)
++#hold on;
++#plot(sqrt((md.mesh.x(1:md.mesh.numberofvertices2d)).^2+(md.mesh.y(1:md.mesh.numberofvertices2d)).^2),vel,'r.');
++#plot(sqrt((md.mesh.x2d).^2+(md.mesh.y2d).^2),vel_obs,'b.');
++#title('Analytical vs calculated velocity','FontSize',14,'FontWeight','bold');
++#xlabel('distance to the center of the icesheet [m]','FontSize',14,'FontWeight','bold');
++#ylabel('velocity [m/yr]','FontSize',14,'FontWeight','bold');
++#legend('calculated velocity','exact velocity');
++#axis([0 750000 0 200]);
++#hold off;
++
++#subplot(2,2,4)
++#p=patch('Faces',md.mesh.elements2d,'Vertices',[md.mesh.x2d md.mesh.y2d],'FaceVertexCData',...
++#abs(vel-vel_obs)./vel_obs*100,'FaceColor','interp','EdgeColor','none');
++#title('Relative misfit [%]','FontSize',14,'FontWeight','bold')
++#colorbar;
++#caxis([0 100]);
++
++if printingflag:
++	pass
++#	set(gcf,'Color','w')
++#	printmodel('pattynstatic','png','margin','on','marginsize',25,'frame','off','resolution',0.7,'hardcopy','off');
++#	system(['mv pattynstatic.png ' ISSM_DIR '/website/doc_pdf/validation/Images/EISMINT/IceSheet']);
++
++#Fields and tolerances to track changes
++field_names     =[ \
++	'Vx','Vy','Vel', \
++]
++field_tolerances=[ \
++	1e-12,1e-12,1e-12, \
++]
++field_values=[ \
++	vx,vy,vel, \
++]
+
+Property changes on: ../trunk-jpl/test/NightlyRun/test1206.py
+___________________________________________________________________
+Added: svn:executable
+## -0,0 +1 ##
++*
+Index: ../trunk-jpl/test/NightlyRun/test1207.py
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/test1207.py	(revision 0)
++++ ../trunk-jpl/test/NightlyRun/test1207.py	(revision 14157)
+@@ -0,0 +1,108 @@
++import numpy
++from model import *
++from roundmesh import *
++from setmask import *
++from parameterize import *
++from setflowequation import *
++from EnumDefinitions import *
++from solve import *
++from MatlabFuncs import *
++
++"""
++The aim of this program is to compare a model with an analytical solution given in MacAyeal EISMINT : Lessons in Ice-Sheet Modeling.
++"""
++
++printingflag=False
++
++numlayers=10
++resolution=30000.
++
++#To begin with the numerical model
++md=model()
++md=roundmesh(md,750000.,resolution)
++md=setmask(md,'','')    #We can not test iceshelves nor ice rises with this analytical solution
++md=parameterize(md,'../Par/RoundSheetStaticEISMINT.py')
++
++#Calculation of the analytical 2d velocity field
++constant=0.3
++vx_obs=constant/2.*md.mesh.x.reshape(-1,1)*(md.geometry.thickness)**-1
++vy_obs=constant/2.*md.mesh.y.reshape(-1,1)*(md.geometry.thickness)**-1
++vel_obs=numpy.sqrt((md.inversion.vx_obs)**2+(md.inversion.vy_obs)**2)
++
++#We extrude the model to have a 3d model
++md.extrude(numlayers,1.)
++md=setflowequation(md,'stokes','all')
++
++#Spc the nodes on the bed
++pos=numpy.nonzero(md.mesh.vertexonbed)
++md.diagnostic.spcvx[pos]=0.
++md.diagnostic.spcvy[pos]=0.
++md.diagnostic.spcvz[pos]=0.
++
++#Now we can solve the problem 
++md.cluster=generic('name',oshostname(),'np',8)
++md=solve(md,DiagnosticSolutionEnum())
++
++#Calculate the depth averaged velocity field (2d):
++vx=md.results.DiagnosticSolution.Vx
++vy=md.results.DiagnosticSolution.Vy
++vel=numpy.zeros((md.mesh.numberofvertices2d,1))
++
++for i in xrange(0,md.mesh.numberofvertices2d):
++	node_vel=0.
++	for j in xrange(0,md.mesh.numberoflayers-1):
++		node_vel=node_vel+1./(2.*(md.mesh.numberoflayers-1))*\
++			(numpy.sqrt(vx[i+(j+1)*md.mesh.numberofvertices2d,0]**2+vy[i+(j+1)*md.mesh.numberofvertices2d,0]**2)+\
++			numpy.sqrt(vx[i+j*md.mesh.numberofvertices2d,0]**2+vy[i+j*md.mesh.numberofvertices2d,0]**2))
++	vel[i,0]=node_vel
++
++#Plot of the velocity from the exact and calculated solutions
++#figure(1)
++#subplot(2,2,1)
++#p=patch('Faces',md.mesh.elements2d,'Vertices',[md.mesh.x2d md.mesh.y2d],'FaceVertexCData',...
++#vel,'FaceColor','interp','EdgeColor','none');
++#title('Modelled velocity','FontSize',14,'FontWeight','bold')
++#colorbar; 
++#caxis([0 200]);
++   
++#subplot(2,2,2)
++#p=patch('Faces',md.mesh.elements2d,'Vertices',[md.mesh.x2d md.mesh.y2d],'FaceVertexCData',...
++#vel_obs,'FaceColor','interp','EdgeColor','none');
++#title('Analytical velocity','FontSize',14,'FontWeight','bold')
++#colorbar; 
++#caxis([0 200]);
++
++#subplot(2,2,3)
++#hold on;
++#plot(sqrt((md.mesh.x(1:md.mesh.numberofvertices2d)).^2+(md.mesh.y(1:md.mesh.numberofvertices2d)).^2),vel,'r.');
++#plot(sqrt((md.mesh.x2d).^2+(md.mesh.y2d).^2),vel_obs,'b.');
++#title('Analytical vs calculated velocity','FontSize',14,'FontWeight','bold');
++#xlabel('distance to the center of the icesheet [m]','FontSize',14,'FontWeight','bold');
++#ylabel('velocity [m/yr]','FontSize',14,'FontWeight','bold');
++#legend('calculated velocity','exact velocity');
++#axis([0 750000 0 200]);
++#hold off;
++
++#subplot(2,2,4)
++#p=patch('Faces',md.mesh.elements2d,'Vertices',[md.mesh.x2d md.mesh.y2d],'FaceVertexCData',...
++#abs(vel-vel_obs)./vel_obs*100,'FaceColor','interp','EdgeColor','none');
++#title('Relative misfit [%]','FontSize',14,'FontWeight','bold')
++#colorbar;
++#caxis([0 100]);
++
++if printingflag:
++	pass
++#	set(gcf,'Color','w')
++#	printmodel('stokesstatic','png','margin','on','marginsize',25,'frame','off','resolution',0.7,'hardcopy','off');
++#	system(['mv stokesstatic.png ' ISSM_DIR '/website/doc_pdf/validation/Images/EISMINT/IceSheet']);
++
++#Fields and tolerances to track changes
++field_names     =[ \
++	'Vx','Vy','Vel', \
++]
++field_tolerances=[ \
++	1e-12,1e-12,1e-12, \
++]
++field_values=[ \
++	vx,vy,vel, \
++]
+
+Property changes on: ../trunk-jpl/test/NightlyRun/test1207.py
+___________________________________________________________________
+Added: svn:executable
+## -0,0 +1 ##
++*
Index: /issm/oecreview/Archive/14064-14311/ISSM-14157-14158.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14157-14158.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14157-14158.diff	(revision 14312)
@@ -0,0 +1,17 @@
+Index: ../trunk-jpl/test/NightlyRun/python_skipped_tests.txt
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/python_skipped_tests.txt	(revision 14157)
++++ ../trunk-jpl/test/NightlyRun/python_skipped_tests.txt	(revision 14158)
+@@ -17,12 +17,6 @@
+ the mesh is of a different size, NR fails.  (Note Matlab test1402 currently
+ fails.)
+ 
+-test1205,test1206,test1207
+-The expression for the thickness in the RoundSheetStaticEISMINT.par/py files
+-includes an expression (1/2)^(4/3)-(r/(2*rmax))^(4/3).  For r close to rmax,
+-the outer circumference, this equals roundoff zero, but differences
+-propagate into the sixth digit of the thickness, which is enough to fail NR.
+-
+ test1109,test1110
+ Ugly crashes in solver, but same behavior as Matlab.
+ 
Index: /issm/oecreview/Archive/14064-14311/ISSM-14158-14159.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14158-14159.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14158-14159.diff	(revision 14312)
@@ -0,0 +1,568 @@
+Index: ../trunk-jpl/src/c/solutions/CorePointerFromSolutionEnum.cpp
+===================================================================
+--- ../trunk-jpl/src/c/solutions/CorePointerFromSolutionEnum.cpp	(revision 14158)
++++ ../trunk-jpl/src/c/solutions/CorePointerFromSolutionEnum.cpp	(revision 14159)
+@@ -59,6 +59,13 @@
+ 			_error_("ISSM was not compiled with balanced capabilities. Exiting");
+ 			#endif
+ 			break;
++		case WeakBalancethicknessSolutionEnum:
++			#ifdef _HAVE_BALANCED_
++			solutioncore=&dummy_core;
++			#else
++			_error_("ISSM was not compiled with balanced capabilities. Exiting");
++			#endif
++			break;
+ 		case HydrologySolutionEnum:
+ 			#ifdef _HAVE_HYDROLOGY_
+ 			solutioncore=&hydrology_core;
+Index: ../trunk-jpl/src/c/solutions/dummy_core.cpp
+===================================================================
+--- ../trunk-jpl/src/c/solutions/dummy_core.cpp	(revision 0)
++++ ../trunk-jpl/src/c/solutions/dummy_core.cpp	(revision 14159)
+@@ -0,0 +1,19 @@
++/*!\file: dummy_core.cpp
++ * \brief: dummy core (nothing done)
++ */ 
++
++#include "../toolkits/toolkits.h"
++#include "../classes/objects/objects.h"
++#include "../shared/shared.h"
++#include "../io/io.h"
++#include "../include/include.h"
++#include "../EnumDefinitions/EnumDefinitions.h"
++#include "./solutions.h"
++#include "../modules/modules.h"
++#include "../solvers/solvers.h"
++
++void dummy_core(FemModel* femmodel){
++
++	/*We do not do anything*/
++
++}
+Index: ../trunk-jpl/src/c/solutions/AdjointCorePointerFromSolutionEnum.cpp
+===================================================================
+--- ../trunk-jpl/src/c/solutions/AdjointCorePointerFromSolutionEnum.cpp	(revision 14158)
++++ ../trunk-jpl/src/c/solutions/AdjointCorePointerFromSolutionEnum.cpp	(revision 14159)
+@@ -32,6 +32,8 @@
+ 			break;
+ 		case BalancethicknessSolutionEnum:
+ 			adjointcore=&adjointbalancethickness_core;
++		case WeakBalancethicknessSolutionEnum:
++			adjointcore=&dummy_core;
+ 			break;
+ 		default:
+ 			_error_("No adjoint has been implemented for solution " << EnumToStringx(solutiontype) << " yet");
+Index: ../trunk-jpl/src/c/solutions/objectivefunction.cpp
+===================================================================
+--- ../trunk-jpl/src/c/solutions/objectivefunction.cpp	(revision 14158)
++++ ../trunk-jpl/src/c/solutions/objectivefunction.cpp	(revision 14159)
+@@ -45,6 +45,9 @@
+ 	else if (solution_type==BalancethicknessSolutionEnum){
+ 		femmodel->SetCurrentConfiguration(BalancethicknessAnalysisEnum);
+ 	}
++	else if (solution_type==WeakBalancethicknessSolutionEnum){
++		femmodel->SetCurrentConfiguration(BalancethicknessAnalysisEnum);
++	}
+ 	else{
+ 		_error_("Solution " << EnumToStringx(solution_type) << " not implemented yet");
+ 	}
+@@ -62,6 +65,9 @@
+ 	else if (solution_type==BalancethicknessSolutionEnum){
+ 		solver_linear(femmodel); 
+ 	}
++	else if (solution_type==WeakBalancethicknessSolutionEnum){
++		/*Don't do anything*/
++	}
+ 	else{
+ 		_error_("Solution " << EnumToStringx(solution_type) << " not implemented yet");
+ 	}
+Index: ../trunk-jpl/src/c/solutions/solutions.h
+===================================================================
+--- ../trunk-jpl/src/c/solutions/solutions.h	(revision 14158)
++++ ../trunk-jpl/src/c/solutions/solutions.h	(revision 14159)
+@@ -32,6 +32,7 @@
+ void transient_core(FemModel* femmodel);
+ void dakota_core(FemModel* femmodel);
+ void ad_core(FemModel* femmodel);
++void dummy_core(FemModel* femmodel);
+ IssmDouble objectivefunction(IssmDouble search_scalar,OptArgs* optargs);
+ 
+ //convergence:
+Index: ../trunk-jpl/src/c/solutions/AnalysisConfiguration.cpp
+===================================================================
+--- ../trunk-jpl/src/c/solutions/AnalysisConfiguration.cpp	(revision 14158)
++++ ../trunk-jpl/src/c/solutions/AnalysisConfiguration.cpp	(revision 14159)
+@@ -82,6 +82,12 @@
+ 			analyses[0]=BalancethicknessAnalysisEnum;
+ 			break;
+ 
++		case WeakBalancethicknessSolutionEnum:
++			numanalyses=1;
++			analyses=xNew<int>(numanalyses);
++			analyses[0]=BalancethicknessAnalysisEnum;
++			break;
++
+ 		case SurfaceSlopeSolutionEnum:
+ 			numanalyses=1;
+ 			analyses=xNew<int>(numanalyses);
+Index: ../trunk-jpl/src/c/EnumDefinitions/EnumDefinitions.h
+===================================================================
+--- ../trunk-jpl/src/c/EnumDefinitions/EnumDefinitions.h	(revision 14158)
++++ ../trunk-jpl/src/c/EnumDefinitions/EnumDefinitions.h	(revision 14159)
+@@ -234,6 +234,8 @@
+ 	AnalysisCounterEnum,
+ 	BalancethicknessAnalysisEnum,
+ 	BalancethicknessSolutionEnum,
++	WeakBalancethicknessAnalysisEnum,
++	WeakBalancethicknessSolutionEnum,
+ 	BedSlopeAnalysisEnum,
+ 	BedSlopeSolutionEnum,
+ 	BedSlopeXAnalysisEnum,
+@@ -354,6 +356,7 @@
+ 	AdjointxEnum,
+ 	AdjointyEnum,
+ 	AdjointzEnum,
++	BalancethicknessMisfitEnum,
+ 	BedSlopeXEnum,
+ 	BedSlopeYEnum,
+ 	BoundaryEnum,
+Index: ../trunk-jpl/src/c/modules/StringToEnumx/StringToEnumx.cpp
+===================================================================
+--- ../trunk-jpl/src/c/modules/StringToEnumx/StringToEnumx.cpp	(revision 14158)
++++ ../trunk-jpl/src/c/modules/StringToEnumx/StringToEnumx.cpp	(revision 14159)
+@@ -241,6 +241,8 @@
+ 	      else if (strcmp(name,"AnalysisCounter")==0) return AnalysisCounterEnum;
+ 	      else if (strcmp(name,"BalancethicknessAnalysis")==0) return BalancethicknessAnalysisEnum;
+ 	      else if (strcmp(name,"BalancethicknessSolution")==0) return BalancethicknessSolutionEnum;
++	      else if (strcmp(name,"WeakBalancethicknessAnalysis")==0) return WeakBalancethicknessAnalysisEnum;
++	      else if (strcmp(name,"WeakBalancethicknessSolution")==0) return WeakBalancethicknessSolutionEnum;
+ 	      else if (strcmp(name,"BedSlopeAnalysis")==0) return BedSlopeAnalysisEnum;
+ 	      else if (strcmp(name,"BedSlopeSolution")==0) return BedSlopeSolutionEnum;
+ 	      else if (strcmp(name,"BedSlopeXAnalysis")==0) return BedSlopeXAnalysisEnum;
+@@ -258,12 +260,12 @@
+ 	      else if (strcmp(name,"MeltingAnalysis")==0) return MeltingAnalysisEnum;
+ 	      else if (strcmp(name,"NoneAnalysis")==0) return NoneAnalysisEnum;
+ 	      else if (strcmp(name,"PrognosticAnalysis")==0) return PrognosticAnalysisEnum;
+-	      else if (strcmp(name,"PrognosticSolution")==0) return PrognosticSolutionEnum;
+-	      else if (strcmp(name,"SteadystateSolution")==0) return SteadystateSolutionEnum;
+          else stage=3;
+    }
+    if(stage==3){
+-	      if (strcmp(name,"SurfaceSlopeAnalysis")==0) return SurfaceSlopeAnalysisEnum;
++	      if (strcmp(name,"PrognosticSolution")==0) return PrognosticSolutionEnum;
++	      else if (strcmp(name,"SteadystateSolution")==0) return SteadystateSolutionEnum;
++	      else if (strcmp(name,"SurfaceSlopeAnalysis")==0) return SurfaceSlopeAnalysisEnum;
+ 	      else if (strcmp(name,"SurfaceSlopeSolution")==0) return SurfaceSlopeSolutionEnum;
+ 	      else if (strcmp(name,"SurfaceSlopeXAnalysis")==0) return SurfaceSlopeXAnalysisEnum;
+ 	      else if (strcmp(name,"SurfaceSlopeYAnalysis")==0) return SurfaceSlopeYAnalysisEnum;
+@@ -352,6 +354,7 @@
+ 	      else if (strcmp(name,"Adjointx")==0) return AdjointxEnum;
+ 	      else if (strcmp(name,"Adjointy")==0) return AdjointyEnum;
+ 	      else if (strcmp(name,"Adjointz")==0) return AdjointzEnum;
++	      else if (strcmp(name,"BalancethicknessMisfit")==0) return BalancethicknessMisfitEnum;
+ 	      else if (strcmp(name,"BedSlopeX")==0) return BedSlopeXEnum;
+ 	      else if (strcmp(name,"BedSlopeY")==0) return BedSlopeYEnum;
+ 	      else if (strcmp(name,"Boundary")==0) return BoundaryEnum;
+@@ -380,13 +383,13 @@
+ 	      else if (strcmp(name,"QmuSurface")==0) return QmuSurfaceEnum;
+ 	      else if (strcmp(name,"QmuMelting")==0) return QmuMeltingEnum;
+ 	      else if (strcmp(name,"ResetPenalties")==0) return ResetPenaltiesEnum;
+-	      else if (strcmp(name,"SegmentOnIceShelf")==0) return SegmentOnIceShelfEnum;
+-	      else if (strcmp(name,"SurfaceAbsVelMisfit")==0) return SurfaceAbsVelMisfitEnum;
+-	      else if (strcmp(name,"SurfaceArea")==0) return SurfaceAreaEnum;
+          else stage=4;
+    }
+    if(stage==4){
+-	      if (strcmp(name,"SurfaceAverageVelMisfit")==0) return SurfaceAverageVelMisfitEnum;
++	      if (strcmp(name,"SegmentOnIceShelf")==0) return SegmentOnIceShelfEnum;
++	      else if (strcmp(name,"SurfaceAbsVelMisfit")==0) return SurfaceAbsVelMisfitEnum;
++	      else if (strcmp(name,"SurfaceArea")==0) return SurfaceAreaEnum;
++	      else if (strcmp(name,"SurfaceAverageVelMisfit")==0) return SurfaceAverageVelMisfitEnum;
+ 	      else if (strcmp(name,"SurfaceLogVelMisfit")==0) return SurfaceLogVelMisfitEnum;
+ 	      else if (strcmp(name,"SurfaceLogVxVyMisfit")==0) return SurfaceLogVxVyMisfitEnum;
+ 	      else if (strcmp(name,"SurfaceRelVelMisfit")==0) return SurfaceRelVelMisfitEnum;
+@@ -503,13 +506,13 @@
+ 	      else if (strcmp(name,"PetscOptionsAnalyses")==0) return PetscOptionsAnalysesEnum;
+ 	      else if (strcmp(name,"PetscOptionsStrings")==0) return PetscOptionsStringsEnum;
+ 	      else if (strcmp(name,"QmuErrName")==0) return QmuErrNameEnum;
+-	      else if (strcmp(name,"QmuInName")==0) return QmuInNameEnum;
+-	      else if (strcmp(name,"QmuOutName")==0) return QmuOutNameEnum;
+-	      else if (strcmp(name,"Regular")==0) return RegularEnum;
+          else stage=5;
+    }
+    if(stage==5){
+-	      if (strcmp(name,"Scaled")==0) return ScaledEnum;
++	      if (strcmp(name,"QmuInName")==0) return QmuInNameEnum;
++	      else if (strcmp(name,"QmuOutName")==0) return QmuOutNameEnum;
++	      else if (strcmp(name,"Regular")==0) return RegularEnum;
++	      else if (strcmp(name,"Scaled")==0) return ScaledEnum;
+ 	      else if (strcmp(name,"Separate")==0) return SeparateEnum;
+ 	      else if (strcmp(name,"Sset")==0) return SsetEnum;
+ 	      else if (strcmp(name,"Verbose")==0) return VerboseEnum;
+Index: ../trunk-jpl/src/c/modules/EnumToStringx/EnumToStringx.cpp
+===================================================================
+--- ../trunk-jpl/src/c/modules/EnumToStringx/EnumToStringx.cpp	(revision 14158)
++++ ../trunk-jpl/src/c/modules/EnumToStringx/EnumToStringx.cpp	(revision 14159)
+@@ -237,6 +237,8 @@
+ 		case AnalysisCounterEnum : return "AnalysisCounter";
+ 		case BalancethicknessAnalysisEnum : return "BalancethicknessAnalysis";
+ 		case BalancethicknessSolutionEnum : return "BalancethicknessSolution";
++		case WeakBalancethicknessAnalysisEnum : return "WeakBalancethicknessAnalysis";
++		case WeakBalancethicknessSolutionEnum : return "WeakBalancethicknessSolution";
+ 		case BedSlopeAnalysisEnum : return "BedSlopeAnalysis";
+ 		case BedSlopeSolutionEnum : return "BedSlopeSolution";
+ 		case BedSlopeXAnalysisEnum : return "BedSlopeXAnalysis";
+@@ -345,6 +347,7 @@
+ 		case AdjointxEnum : return "Adjointx";
+ 		case AdjointyEnum : return "Adjointy";
+ 		case AdjointzEnum : return "Adjointz";
++		case BalancethicknessMisfitEnum : return "BalancethicknessMisfit";
+ 		case BedSlopeXEnum : return "BedSlopeX";
+ 		case BedSlopeYEnum : return "BedSlopeY";
+ 		case BoundaryEnum : return "Boundary";
+Index: ../trunk-jpl/src/c/modules/ModelProcessorx/Control/UpdateElementsAndMaterialsControl.cpp
+===================================================================
+--- ../trunk-jpl/src/c/modules/ModelProcessorx/Control/UpdateElementsAndMaterialsControl.cpp	(revision 14158)
++++ ../trunk-jpl/src/c/modules/ModelProcessorx/Control/UpdateElementsAndMaterialsControl.cpp	(revision 14159)
+@@ -44,9 +44,10 @@
+ 			case BalancethicknessThickeningRateEnum: iomodel->FetchData(1,BalancethicknessThickeningRateEnum); break;
+ 			case VxEnum:   iomodel->FetchData(1,VxEnum); break;
+ 			case VyEnum:   iomodel->FetchData(1,VyEnum); break;
+-			case FrictionCoefficientEnum: iomodel->FetchData(1,FrictionCoefficientEnum); break;
+-			case MaterialsRheologyBbarEnum:    iomodel->FetchData(1,MaterialsRheologyBEnum); break;
+-			case MaterialsRheologyZbarEnum:    iomodel->FetchData(1,MaterialsRheologyZEnum); break;
++			case ThicknessEnum:             iomodel->FetchData(1,ThicknessEnum); break;
++			case FrictionCoefficientEnum:   iomodel->FetchData(1,FrictionCoefficientEnum); break;
++			case MaterialsRheologyBbarEnum: iomodel->FetchData(1,MaterialsRheologyBEnum); break;
++			case MaterialsRheologyZbarEnum: iomodel->FetchData(1,MaterialsRheologyZEnum); break;
+ 			default: _error_("Control " << EnumToStringx(reCast<int,IssmDouble>(iomodel->Data(InversionControlParametersEnum)[i])) << " not implemented yet");
+ 		}
+ 	}
+Index: ../trunk-jpl/src/c/Makefile.am
+===================================================================
+--- ../trunk-jpl/src/c/Makefile.am	(revision 14158)
++++ ../trunk-jpl/src/c/Makefile.am	(revision 14159)
+@@ -474,7 +474,8 @@
+ 					    ./modules/ModelProcessorx/Balancethickness/CreateNodesBalancethickness.cpp\
+ 					    ./modules/ModelProcessorx/Balancethickness/CreateConstraintsBalancethickness.cpp\
+ 						./modules/ModelProcessorx/Balancethickness/CreateLoadsBalancethickness.cpp\
+-						./solutions/balancethickness_core.cpp
++						./solutions/balancethickness_core.cpp \
++						./solutions/dummy_core.cpp
+ #}}}
+ #Slope sources  {{{
+ slope_sources =  ./modules/ModelProcessorx/BedSlope/UpdateElementsBedSlope.cpp\
+Index: ../trunk-jpl/src/c/classes/objects/Elements/Element.h
+===================================================================
+--- ../trunk-jpl/src/c/classes/objects/Elements/Element.h	(revision 14158)
++++ ../trunk-jpl/src/c/classes/objects/Elements/Element.h	(revision 14159)
+@@ -109,6 +109,7 @@
+ 		virtual IssmDouble ThicknessAbsGradient(bool process_units,int weight_index)=0;
+ 		virtual IssmDouble ThicknessAlongGradient(bool process_units,int weight_index)=0;
+ 		virtual IssmDouble ThicknessAcrossGradient(bool process_units,int weight_index)=0;
++		virtual IssmDouble BalancethicknessMisfit(bool process_units,int weight_index)=0;
+ 		virtual IssmDouble RheologyBbarAbsGradient(bool process_units,int weight_index)=0;
+ 		virtual IssmDouble DragCoefficientAbsGradient(bool process_units,int weight_index)=0;
+ 		virtual void   ControlInputGetGradient(Vector<IssmDouble>* gradient,int enum_type,int control_index)=0;
+Index: ../trunk-jpl/src/c/classes/objects/Elements/Tria.cpp
+===================================================================
+--- ../trunk-jpl/src/c/classes/objects/Elements/Tria.cpp	(revision 14158)
++++ ../trunk-jpl/src/c/classes/objects/Elements/Tria.cpp	(revision 14159)
+@@ -1551,6 +1551,14 @@
+ 						this->inputs->AddInput(new ControlInput(VyEnum,TriaP1InputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1));
+ 					}
+ 					break;
++				case ThicknessEnum:
++					if (iomodel->Data(ThicknessEnum)){
++						for(j=0;j<3;j++)nodeinputs[j]=iomodel->Data(ThicknessEnum)[tria_vertex_ids[j]-1];
++						for(j=0;j<3;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[(tria_vertex_ids[j]-1)*num_control_type+i];
++						for(j=0;j<3;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[(tria_vertex_ids[j]-1)*num_control_type+i];
++						this->inputs->AddInput(new ControlInput(ThicknessEnum,TriaP1InputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1));
++					}
++					break;
+ 				case FrictionCoefficientEnum:
+ 					if (iomodel->Data(FrictionCoefficientEnum)){
+ 						for(j=0;j<3;j++)nodeinputs[j]=iomodel->Data(FrictionCoefficientEnum)[tria_vertex_ids[j]-1];
+@@ -3458,6 +3466,64 @@
+ #endif
+ 
+ #ifdef _HAVE_CONTROL_
++/*FUNCTION Tria::BalancethicknessMisfit{{{*/
++IssmDouble Tria::BalancethicknessMisfit(bool process_units,int weight_index){
++
++	/* Intermediaries */
++	IssmDouble Jelem = 0;
++	IssmDouble weight;
++	IssmDouble Jdet,temp;
++	IssmDouble xyz_list[NUMVERTICES][3];
++	IssmDouble dH[2];
++	IssmDouble vx,vy,H;
++	IssmDouble dvx[2],dvy[2];
++	IssmDouble dhdt,basal_melting,surface_mass_balance;
++	GaussTria *gauss = NULL;
++
++	/*If on water, return 0: */
++	if(IsOnWater()) return 0;
++
++	/*Retrieve all inputs we will be needing: */
++	GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
++	Input* weights_input              = inputs->GetInput(InversionCostFunctionsCoefficientsEnum);   _assert_(weights_input);
++	Input* thickness_input            = inputs->GetInput(ThicknessEnum); _assert_(thickness_input);
++	Input* vx_input                   = inputs->GetInput(VxEnum);                                 _assert_(vx_input);
++	Input* vy_input                   = inputs->GetInput(VyEnum);                                 _assert_(vy_input);
++	Input* surface_mass_balance_input = inputs->GetInput(SurfaceforcingsMassBalanceEnum);         _assert_(surface_mass_balance_input);
++	Input* basal_melting_input        = inputs->GetInput(BasalforcingsMeltingRateEnum);           _assert_(basal_melting_input);
++	Input* dhdt_input                 = inputs->GetInput(BalancethicknessThickeningRateEnum);     _assert_(dhdt_input);
++
++	/* Start looping on the number of gaussian points: */
++	gauss=new GaussTria(2);
++	for(int ig=gauss->begin();ig<gauss->end();ig++){
++
++		gauss->GaussPoint(ig);
++
++		/* Get Jacobian determinant: */
++		GetJacobianDeterminant2d(&Jdet, &xyz_list[0][0],gauss);
++
++		/*Get all parameters at gaussian point*/
++		weights_input->GetInputValue(&weight,gauss,weight_index);
++		thickness_input->GetInputValue(&H, gauss);
++		thickness_input->GetInputDerivativeValue(&dH[0],&xyz_list[0][0],gauss);
++		surface_mass_balance_input->GetInputValue(&surface_mass_balance,gauss);
++		basal_melting_input->GetInputValue(&basal_melting,gauss);
++		dhdt_input->GetInputValue(&dhdt,gauss);
++		vx_input->GetInputValue(&vx,gauss);
++		vx_input->GetInputDerivativeValue(&dvx[0],&xyz_list[0][0],gauss);
++		vy_input->GetInputValue(&vy,gauss);
++		vy_input->GetInputDerivativeValue(&dvy[0],&xyz_list[0][0],gauss);
++
++		/*Weak balance thickness J = 1/2 (div(Hv)-a)^2*/
++		temp  = vx*dH[0]+vy*dH[1]+H*(dvx[0]+dvy[1]) - (surface_mass_balance-basal_melting-dhdt);
++		Jelem+=weight*1/2*temp*temp*Jdet*gauss->weight;
++	}
++
++	/*Clean up and return*/
++	delete gauss;
++	return Jelem;
++}
++/*}}}*/
+ /*FUNCTION Tria::InputControlUpdate{{{*/
+ void  Tria::InputControlUpdate(IssmDouble scalar,bool save_parameter){
+ 
+@@ -3579,6 +3645,9 @@
+ 		case VyEnum:
+ 			GradjVyBalancedthickness(gradient,control_index);
+ 			break;
++		case ThicknessEnum:
++			GradjThicknessWeakBalancedthickness(gradient,control_index);
++			break;
+ 		default:
+ 			_error_("control type not supported yet: " << control_type);
+ 	}
+@@ -3596,6 +3665,7 @@
+ 		case ThicknessAbsGradientEnum:
+ 		case ThicknessAlongGradientEnum:
+ 		case ThicknessAcrossGradientEnum:
++		case BalancethicknessMisfitEnum:
+ 		case SurfaceAbsVelMisfitEnum:
+ 		case SurfaceRelVelMisfitEnum:
+ 		case SurfaceLogVelMisfitEnum:
+@@ -4043,6 +4113,116 @@
+ 	delete gauss;
+ }
+ /*}}}*/
++/*FUNCTION Tria::GradjThicknessWeakBalancedthickness{{{*/
++void  Tria::GradjThicknessWeakBalancedthickness(Vector<IssmDouble>* gradient,int control_index){
++
++	/*Intermediaries */
++	int         i,resp;
++	int         vertexpidlist[NUMVERTICES];
++	IssmDouble  Jdet;
++	IssmDouble  thickness,thicknessobs,weight;
++	int         num_responses;
++	IssmDouble  xyz_list[NUMVERTICES][3];
++	IssmDouble  basis[3];
++	IssmDouble  dbasis[NDOF2][NUMVERTICES];
++	IssmDouble  dH[2];
++	IssmDouble  vx,vy,vel;
++	IssmDouble  dvx[2],dvy[2];
++	IssmDouble dhdt,basal_melting,surface_mass_balance;
++	GaussTria *gauss     = NULL;
++	int       *responses = NULL;
++	IssmDouble grade_g[NUMVERTICES] = {0.0};
++
++	/* Get node coordinates and dof list: */
++	GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
++	GradientIndexing(&vertexpidlist[0],control_index);
++
++	/*Retrieve all inputs and parameters*/
++	GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
++	this->parameters->FindParam(&num_responses,InversionNumCostFunctionsEnum);
++	this->parameters->FindParam(&responses,NULL,NULL,StepResponsesEnum);
++	Input* thickness_input            = inputs->GetInput(ThicknessEnum);                          _assert_(thickness_input);
++	Input* thicknessobs_input         = inputs->GetInput(InversionThicknessObsEnum);              _assert_(thicknessobs_input);
++	Input* weights_input              = inputs->GetInput(InversionCostFunctionsCoefficientsEnum); _assert_(weights_input);
++	Input* vx_input                   = inputs->GetInput(VxEnum);                                 _assert_(vx_input);
++	Input* vy_input                   = inputs->GetInput(VyEnum);                                 _assert_(vy_input);
++	Input* surface_mass_balance_input = inputs->GetInput(SurfaceforcingsMassBalanceEnum);         _assert_(surface_mass_balance_input);
++	Input* basal_melting_input        = inputs->GetInput(BasalforcingsMeltingRateEnum);           _assert_(basal_melting_input);
++	Input* dhdt_input                 = inputs->GetInput(BalancethicknessThickeningRateEnum);     _assert_(dhdt_input);
++
++	/* Start  looping on the number of gaussian points: */
++	gauss=new GaussTria(2);
++	for(int ig=gauss->begin();ig<gauss->end();ig++){
++
++		gauss->GaussPoint(ig);
++
++		GetJacobianDeterminant2d(&Jdet, &xyz_list[0][0],gauss);
++		GetNodalFunctions(basis, gauss);
++		GetNodalFunctionsDerivatives(&dbasis[0][0],&xyz_list[0][0],gauss);
++
++		thickness_input->GetInputValue(&thickness, gauss);
++		thickness_input->GetInputDerivativeValue(&dH[0],&xyz_list[0][0],gauss);
++		thicknessobs_input->GetInputValue(&thicknessobs, gauss);
++
++		/*Loop over all requested responses*/
++		for(resp=0;resp<num_responses;resp++) switch(responses[resp]){
++
++			case ThicknessAbsMisfitEnum:
++				weights_input->GetInputValue(&weight, gauss,resp);
++				for(i=0;i<NUMVERTICES;i++) grade_g[i]+= (thicknessobs-thickness)*weight*Jdet*gauss->weight*basis[i];
++				break;
++			case ThicknessAbsGradientEnum:
++				weights_input->GetInputValue(&weight, gauss,resp);
++				for(i=0;i<NUMVERTICES;i++) grade_g[i]+= - weight*dH[0]*dbasis[0][i]*Jdet*gauss->weight;
++				for(i=0;i<NUMVERTICES;i++) grade_g[i]+= - weight*dH[1]*dbasis[1][i]*Jdet*gauss->weight;
++				break;
++			case ThicknessAlongGradientEnum:
++				weights_input->GetInputValue(&weight, gauss,resp);
++				vx_input->GetInputValue(&vx,gauss);
++				vy_input->GetInputValue(&vy,gauss);
++				vel = sqrt(vx*vx+vy*vy);
++				vx  = vx/(vel+1.e-9);
++				vy  = vy/(vel+1.e-9);
++				for(i=0;i<NUMVERTICES;i++) grade_g[i]+= - weight*(dH[0]*vx+dH[1]*vy)*(dbasis[0][i]*vx+dbasis[1][i]*vy)*Jdet*gauss->weight;
++				break;
++			case ThicknessAcrossGradientEnum:
++				weights_input->GetInputValue(&weight, gauss,resp);
++				vx_input->GetInputValue(&vx,gauss);
++				vy_input->GetInputValue(&vy,gauss);
++				vel = sqrt(vx*vx+vy*vy);
++				vx  = vx/(vel+1.e-9);
++				vy  = vy/(vel+1.e-9);
++				for(i=0;i<NUMVERTICES;i++) grade_g[i]+= - weight*(dH[0]*(-vy)+dH[1]*vx)*(dbasis[0][i]*(-vy)+dbasis[1][i]*vx)*Jdet*gauss->weight;
++				break;
++			case BalancethicknessMisfitEnum:
++				weights_input->GetInputValue(&weight, gauss,resp);
++				surface_mass_balance_input->GetInputValue(&surface_mass_balance,gauss);
++				basal_melting_input->GetInputValue(&basal_melting,gauss);
++				dhdt_input->GetInputValue(&dhdt,gauss);
++				vx_input->GetInputValue(&vx,gauss);
++				vx_input->GetInputDerivativeValue(&dvx[0],&xyz_list[0][0],gauss);
++				vy_input->GetInputValue(&vy,gauss);
++				vy_input->GetInputDerivativeValue(&dvy[0],&xyz_list[0][0],gauss);
++				for(i=0;i<NUMVERTICES;i++){
++					grade_g[i]+= - weight*Jdet*gauss->weight*(
++								(vx*dH[0]+vy*dH[1] + thickness*(dvx[0]+dvy[1]))*(vx*dbasis[0][i]+ vy*dbasis[1][i] + basis[i]*(dvx[0]+dvy[1]))
++								-(surface_mass_balance-basal_melting-dhdt)*(vx*dbasis[0][i]+ vy*dbasis[1][i] + basis[i]*(dvx[0]+dvy[1]))
++								);
++				}
++				break;
++			default:
++				_error_("response " << EnumToStringx(responses[resp]) << " not supported yet");
++		}
++	}
++
++
++	gradient->SetValues(NUMVERTICES,vertexpidlist,grade_g,ADD_VAL);
++
++	/*Clean up and return*/
++	delete gauss;
++	xDelete<int>(responses);
++}
++/*}}}*/
+ /*FUNCTION Tria::GradientIndexing{{{*/
+ void  Tria::GradientIndexing(int* indexing,int control_index){
+ 
+Index: ../trunk-jpl/src/c/classes/objects/Elements/Tria.h
+===================================================================
+--- ../trunk-jpl/src/c/classes/objects/Elements/Tria.h	(revision 14158)
++++ ../trunk-jpl/src/c/classes/objects/Elements/Tria.h	(revision 14159)
+@@ -152,6 +152,7 @@
+ 		void   GradjDhDtBalancedthickness(Vector<IssmDouble>* gradient,int control_index);
+ 		void   GradjVxBalancedthickness(Vector<IssmDouble>* gradient,int control_index);
+ 		void   GradjVyBalancedthickness(Vector<IssmDouble>* gradient,int control_index);
++		void   GradjThicknessWeakBalancedthickness(Vector<IssmDouble>* gradient,int control_index);
+ 		void   GetVectorFromControlInputs(Vector<IssmDouble>* gradient,int control_enum,int control_index,const char* data);
+ 		void   SetControlInputsFromVector(IssmDouble* vector,int control_enum,int control_index);
+ 		void   ControlInputGetGradient(Vector<IssmDouble>* gradient,int enum_type,int control_index);
+@@ -163,6 +164,7 @@
+ 		IssmDouble ThicknessAbsGradient(   bool process_units,int weight_index);
+ 		IssmDouble ThicknessAlongGradient( bool process_units,int weight_index);
+ 		IssmDouble ThicknessAcrossGradient(bool process_units,int weight_index);
++		IssmDouble BalancethicknessMisfit(     bool process_units,int weight_index);
+ 		IssmDouble SurfaceRelVelMisfit(    bool process_units,int weight_index);
+ 		IssmDouble SurfaceLogVelMisfit(    bool process_units,int weight_index);
+ 		IssmDouble SurfaceLogVxVyMisfit(   bool process_units,int weight_index);
+Index: ../trunk-jpl/src/c/classes/objects/Elements/Penta.h
+===================================================================
+--- ../trunk-jpl/src/c/classes/objects/Elements/Penta.h	(revision 14158)
++++ ../trunk-jpl/src/c/classes/objects/Elements/Penta.h	(revision 14159)
+@@ -165,6 +165,7 @@
+ 		IssmDouble ThicknessAbsGradient(bool process_units,int weight_index);
+ 		IssmDouble ThicknessAlongGradient( bool process_units,int weight_index){_error_("not supported");};
+ 		IssmDouble ThicknessAcrossGradient(bool process_units,int weight_index){_error_("not supported");};
++		IssmDouble BalancethicknessMisfit(bool process_units,int weight_index){_error_("not supported");};
+ 		void   InputControlUpdate(IssmDouble scalar,bool save_parameter);
+ 		#endif
+ 		/*}}}*/
+Index: ../trunk-jpl/src/c/classes/FemModel.cpp
+===================================================================
+--- ../trunk-jpl/src/c/classes/FemModel.cpp	(revision 14158)
++++ ../trunk-jpl/src/c/classes/FemModel.cpp	(revision 14159)
+@@ -701,6 +701,7 @@
+ 		case ThicknessAbsGradientEnum:   this->ThicknessAbsGradientx(responses, process_units,weight_index); break;
+ 		case ThicknessAlongGradientEnum: ThicknessAlongGradientx(responses, elements,nodes, vertices, loads, materials, parameters,process_units,weight_index); break;
+ 		case ThicknessAcrossGradientEnum:ThicknessAcrossGradientx(responses, elements,nodes, vertices, loads, materials, parameters,process_units,weight_index); break;
++		case BalancethicknessMisfitEnum:BalancethicknessMisfitx(responses,process_units,weight_index); break;
+ 		case TotalSmbEnum:					this->TotalSmbx(responses,process_units); break;
+ 		case RheologyBbarAbsGradientEnum:RheologyBbarAbsGradientx(responses, elements,nodes, vertices, loads, materials, parameters,process_units,weight_index); break;
+ 		case DragCoefficientAbsGradientEnum:DragCoefficientAbsGradientx(responses, elements,nodes, vertices, loads, materials, parameters,process_units,weight_index); break;
+@@ -1357,6 +1358,25 @@
+ }/*}}}*/
+ #endif
+ #ifdef _HAVE_CONTROL_
++void FemModel::BalancethicknessMisfitx(IssmDouble* presponse,bool process_units,int weight_index){/*{{{*/
++
++	IssmDouble J = 0;
++	IssmDouble J_sum;
++
++	for(int i=0;i<this->elements->Size();i++){
++		Element* element=dynamic_cast<Element*>(this->elements->GetObjectByOffset(i));
++		J+=element->BalancethicknessMisfit(process_units,weight_index);
++	}
++	#ifdef _HAVE_MPI_
++	MPI_Reduce (&J,&J_sum,1,MPI_DOUBLE,MPI_SUM,0,IssmComm::GetComm() );
++	MPI_Bcast(&J_sum,1,MPI_DOUBLE,0,IssmComm::GetComm());
++	J=J_sum;
++	#endif
++
++	/*Assign output pointers: */
++	*presponse=J;
++
++}/*}}}*/
+ void FemModel::ThicknessAbsGradientx( IssmDouble* pJ, bool process_units, int weight_index){/*{{{*/
+ 
+ 
+Index: ../trunk-jpl/src/c/classes/FemModel.h
+===================================================================
+--- ../trunk-jpl/src/c/classes/FemModel.h	(revision 14158)
++++ ../trunk-jpl/src/c/classes/FemModel.h	(revision 14159)
+@@ -79,6 +79,7 @@
+ 		void TotalSmbx(IssmDouble* pSmb,bool process_units);
+ 		void IceVolumex(IssmDouble* pV,bool process_units);
+ 		void ElementResponsex(IssmDouble* presponse,int response_enum,bool process_units);
++		void BalancethicknessMisfitx(IssmDouble* pV,bool process_units,int weight_index);
+ 		#endif
+ 		#ifdef  _HAVE_DAKOTA_
+ 		void DakotaResponsesx(double* d_responses,char** responses_descriptors,int numresponsedescriptors,int d_numresponses);
Index: /issm/oecreview/Archive/14064-14311/ISSM-14159-14160.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14159-14160.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14159-14160.diff	(revision 14312)
@@ -0,0 +1,162 @@
+Index: ../trunk-jpl/src/m/enum/OutputfilenameEnum.m
+===================================================================
+--- ../trunk-jpl/src/m/enum/OutputfilenameEnum.m	(revision 14159)
++++ ../trunk-jpl/src/m/enum/OutputfilenameEnum.m	(revision 14160)
+@@ -1,11 +0,0 @@
+-function macro=OutputFileNameEnum()
+-%OUTPUTFILENAMEENUM - Enum of OutputFileName
+-%
+-%   WARNING: DO NOT MODIFY THIS FILE
+-%            this file has been automatically generated by src/c/EnumDefinitions/Synchronize.sh
+-%            Please read src/c/EnumDefinitions/README for more information
+-%
+-%   Usage:
+-%      macro=OutputFileNameEnum()
+-
+-macro=StringToEnum('OutputFileName');
+Index: ../trunk-jpl/src/m/enum/OutputFileNameEnum.m
+===================================================================
+--- ../trunk-jpl/src/m/enum/OutputFileNameEnum.m	(revision 0)
++++ ../trunk-jpl/src/m/enum/OutputFileNameEnum.m	(revision 14160)
+@@ -0,0 +1,11 @@
++function macro=OutputFileNameEnum()
++%OUTPUTFILENAMEENUM - Enum of OutputFileName
++%
++%   WARNING: DO NOT MODIFY THIS FILE
++%            this file has been automatically generated by src/c/EnumDefinitions/Synchronize.sh
++%            Please read src/c/EnumDefinitions/README for more information
++%
++%   Usage:
++%      macro=OutputFileNameEnum()
++
++macro=StringToEnum('OutputFileName');
+Index: ../trunk-jpl/src/m/enum/WeakBalancethicknessSolutionEnum.m
+===================================================================
+--- ../trunk-jpl/src/m/enum/WeakBalancethicknessSolutionEnum.m	(revision 0)
++++ ../trunk-jpl/src/m/enum/WeakBalancethicknessSolutionEnum.m	(revision 14160)
+@@ -0,0 +1,11 @@
++function macro=WeakBalancethicknessSolutionEnum()
++%WEAKBALANCETHICKNESSSOLUTIONENUM - Enum of WeakBalancethicknessSolution
++%
++%   WARNING: DO NOT MODIFY THIS FILE
++%            this file has been automatically generated by src/c/EnumDefinitions/Synchronize.sh
++%            Please read src/c/EnumDefinitions/README for more information
++%
++%   Usage:
++%      macro=WeakBalancethicknessSolutionEnum()
++
++macro=StringToEnum('WeakBalancethicknessSolution');
+Index: ../trunk-jpl/src/m/enum/MaximumNumberOfEnums.m
+===================================================================
+--- ../trunk-jpl/src/m/enum/MaximumNumberOfEnums.m	(revision 14159)
++++ ../trunk-jpl/src/m/enum/MaximumNumberOfEnums.m	(revision 14160)
+@@ -8,4 +8,4 @@
+ %   Usage:
+ %      macro=MaximumNumberOfEnums()
+ 
+-macro=498;
++macro=500;
+Index: ../trunk-jpl/src/m/enum/WeakBalancethicknessAnalysisEnum.m
+===================================================================
+--- ../trunk-jpl/src/m/enum/WeakBalancethicknessAnalysisEnum.m	(revision 0)
++++ ../trunk-jpl/src/m/enum/WeakBalancethicknessAnalysisEnum.m	(revision 14160)
+@@ -0,0 +1,11 @@
++function macro=WeakBalancethicknessAnalysisEnum()
++%WEAKBALANCETHICKNESSANALYSISENUM - Enum of WeakBalancethicknessAnalysis
++%
++%   WARNING: DO NOT MODIFY THIS FILE
++%            this file has been automatically generated by src/c/EnumDefinitions/Synchronize.sh
++%            Please read src/c/EnumDefinitions/README for more information
++%
++%   Usage:
++%      macro=WeakBalancethicknessAnalysisEnum()
++
++macro=StringToEnum('WeakBalancethicknessAnalysis');
+Index: ../trunk-jpl/src/m/enum/EnumDefinitions.py
+===================================================================
+--- ../trunk-jpl/src/m/enum/EnumDefinitions.py	(revision 14159)
++++ ../trunk-jpl/src/m/enum/EnumDefinitions.py	(revision 14160)
+@@ -2218,6 +2218,26 @@
+ 
+ 	return StringToEnum('BalancethicknessSolution')[0]
+ 
++def WeakBalancethicknessAnalysisEnum():
++	"""
++	WEAKBALANCETHICKNESSANALYSISENUM - Enum of WeakBalancethicknessAnalysis
++
++	   Usage:
++	      macro=WeakBalancethicknessAnalysisEnum()
++	"""
++
++	return StringToEnum('WeakBalancethicknessAnalysis')[0]
++
++def WeakBalancethicknessSolutionEnum():
++	"""
++	WEAKBALANCETHICKNESSSOLUTIONENUM - Enum of WeakBalancethicknessSolution
++
++	   Usage:
++	      macro=WeakBalancethicknessSolutionEnum()
++	"""
++
++	return StringToEnum('WeakBalancethicknessSolution')[0]
++
+ def BedSlopeAnalysisEnum():
+ 	"""
+ 	BEDSLOPEANALYSISENUM - Enum of BedSlopeAnalysis
+@@ -3298,6 +3318,16 @@
+ 
+ 	return StringToEnum('Adjointz')[0]
+ 
++def BalancethicknessMisfitEnum():
++	"""
++	BALANCETHICKNESSMISFITENUM - Enum of BalancethicknessMisfit
++
++	   Usage:
++	      macro=BalancethicknessMisfitEnum()
++	"""
++
++	return StringToEnum('BalancethicknessMisfit')[0]
++
+ def BedSlopeXEnum():
+ 	"""
+ 	BEDSLOPEXENUM - Enum of BedSlopeX
+@@ -3998,16 +4028,6 @@
+ 
+ 	return StringToEnum('TransientInput')[0]
+ 
+-def OutputfilenameEnum():
+-	"""
+-	OUTPUTFILENAMEENUM - Enum of Outputfilename
+-
+-	   Usage:
+-	      macro=OutputfilenameEnum()
+-	"""
+-
+-	return StringToEnum('Outputfilename')[0]
+-
+ def WaterfractionEnum():
+ 	"""
+ 	WATERFRACTIONENUM - Enum of Waterfraction
+@@ -4996,5 +5016,5 @@
+ 	      macro=MaximumNumberOfEnums()
+ 	"""
+ 
+-	return 498
++	return 500
+ 
+Index: ../trunk-jpl/src/m/enum/BalancethicknessMisfitEnum.m
+===================================================================
+--- ../trunk-jpl/src/m/enum/BalancethicknessMisfitEnum.m	(revision 0)
++++ ../trunk-jpl/src/m/enum/BalancethicknessMisfitEnum.m	(revision 14160)
+@@ -0,0 +1,11 @@
++function macro=BalancethicknessMisfitEnum()
++%BALANCETHICKNESSMISFITENUM - Enum of BalancethicknessMisfit
++%
++%   WARNING: DO NOT MODIFY THIS FILE
++%            this file has been automatically generated by src/c/EnumDefinitions/Synchronize.sh
++%            Please read src/c/EnumDefinitions/README for more information
++%
++%   Usage:
++%      macro=BalancethicknessMisfitEnum()
++
++macro=StringToEnum('BalancethicknessMisfit');
Index: /issm/oecreview/Archive/14064-14311/ISSM-14160-14161.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14160-14161.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14160-14161.diff	(revision 14312)
@@ -0,0 +1,63 @@
+Index: ../trunk-jpl/src/c/EnumDefinitions/EnumDefinitions.h
+===================================================================
+--- ../trunk-jpl/src/c/EnumDefinitions/EnumDefinitions.h	(revision 14160)
++++ ../trunk-jpl/src/c/EnumDefinitions/EnumDefinitions.h	(revision 14161)
+@@ -427,7 +427,6 @@
+ 	RheologyBbarAbsGradientEnum,
+ 	DragCoefficientAbsGradientEnum,
+ 	TransientInputEnum,
+-	OutputfilenameEnum,
+ 	WaterfractionEnum,
+ 	WatercolumnEnum,
+ 	BasalFrictionEnum,
+Index: ../trunk-jpl/src/c/modules/StringToEnumx/StringToEnumx.cpp
+===================================================================
+--- ../trunk-jpl/src/c/modules/StringToEnumx/StringToEnumx.cpp	(revision 14160)
++++ ../trunk-jpl/src/c/modules/StringToEnumx/StringToEnumx.cpp	(revision 14161)
+@@ -428,7 +428,6 @@
+ 	      else if (strcmp(name,"RheologyBbarAbsGradient")==0) return RheologyBbarAbsGradientEnum;
+ 	      else if (strcmp(name,"DragCoefficientAbsGradient")==0) return DragCoefficientAbsGradientEnum;
+ 	      else if (strcmp(name,"TransientInput")==0) return TransientInputEnum;
+-	      else if (strcmp(name,"Outputfilename")==0) return OutputfilenameEnum;
+ 	      else if (strcmp(name,"Waterfraction")==0) return WaterfractionEnum;
+ 	      else if (strcmp(name,"Watercolumn")==0) return WatercolumnEnum;
+ 	      else if (strcmp(name,"BasalFriction")==0) return BasalFrictionEnum;
+@@ -506,11 +505,11 @@
+ 	      else if (strcmp(name,"PetscOptionsAnalyses")==0) return PetscOptionsAnalysesEnum;
+ 	      else if (strcmp(name,"PetscOptionsStrings")==0) return PetscOptionsStringsEnum;
+ 	      else if (strcmp(name,"QmuErrName")==0) return QmuErrNameEnum;
++	      else if (strcmp(name,"QmuInName")==0) return QmuInNameEnum;
+          else stage=5;
+    }
+    if(stage==5){
+-	      if (strcmp(name,"QmuInName")==0) return QmuInNameEnum;
+-	      else if (strcmp(name,"QmuOutName")==0) return QmuOutNameEnum;
++	      if (strcmp(name,"QmuOutName")==0) return QmuOutNameEnum;
+ 	      else if (strcmp(name,"Regular")==0) return RegularEnum;
+ 	      else if (strcmp(name,"Scaled")==0) return ScaledEnum;
+ 	      else if (strcmp(name,"Separate")==0) return SeparateEnum;
+Index: ../trunk-jpl/src/c/modules/EnumToStringx/EnumToStringx.cpp
+===================================================================
+--- ../trunk-jpl/src/c/modules/EnumToStringx/EnumToStringx.cpp	(revision 14160)
++++ ../trunk-jpl/src/c/modules/EnumToStringx/EnumToStringx.cpp	(revision 14161)
+@@ -418,7 +418,6 @@
+ 		case RheologyBbarAbsGradientEnum : return "RheologyBbarAbsGradient";
+ 		case DragCoefficientAbsGradientEnum : return "DragCoefficientAbsGradient";
+ 		case TransientInputEnum : return "TransientInput";
+-		case OutputfilenameEnum : return "Outputfilename";
+ 		case WaterfractionEnum : return "Waterfraction";
+ 		case WatercolumnEnum : return "Watercolumn";
+ 		case BasalFrictionEnum : return "BasalFriction";
+Index: ../trunk-jpl/src/c/modules/OutputResultsx/OutputResultsx.cpp
+===================================================================
+--- ../trunk-jpl/src/c/modules/OutputResultsx/OutputResultsx.cpp	(revision 14160)
++++ ../trunk-jpl/src/c/modules/OutputResultsx/OutputResultsx.cpp	(revision 14161)
+@@ -55,7 +55,7 @@
+ 	if(!parameters->Exist(OutputFilePointerEnum)){
+ 
+ 		/*We don't have a file pointer. Retrieve the output file name and open it for writing:*/
+-		parameters->FindParam(&outputfilename,OutputfilenameEnum);
++		parameters->FindParam(&outputfilename,OutputFileNameEnum);
+ 
+ 		/*What strategy? : */
+ 		parameters->FindParam(&io_gather,SettingsIoGatherEnum);
Index: /issm/oecreview/Archive/14064-14311/ISSM-14161-14162.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14161-14162.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14161-14162.diff	(revision 14312)
@@ -0,0 +1,65 @@
+Index: ../trunk-jpl/src/m/solve/process_solve_options.m
+===================================================================
+--- ../trunk-jpl/src/m/solve/process_solve_options.m	(revision 14161)
++++ ../trunk-jpl/src/m/solve/process_solve_options.m	(revision 14162)
+@@ -10,7 +10,8 @@
+ solution_type=getfieldvalue(options,'solution_type');
+ if ~ismember(solution_type,[DiagnosticSolutionEnum(),PrognosticSolutionEnum(),ThermalSolutionEnum(),...
+ 		SteadystateSolutionEnum(),TransientSolutionEnum(),EnthalpySolutionEnum(),...
+-		BalancethicknessSolutionEnum(),BedSlopeSolutionEnum(),SurfaceSlopeSolutionEnum(),HydrologySolutionEnum(),FlaimSolutionEnum()]),
++		BalancethicknessSolutionEnum(),WeakBalancethicknessSolutionEnum(),BedSlopeSolutionEnum(),...
++		SurfaceSlopeSolutionEnum(),HydrologySolutionEnum(),FlaimSolutionEnum()]),
+ 	error(['process_solve_options error message: solution_type ' EnumToString(solution_type) ' not supported yet!']);
+ end
+ outoptions.solution_type=solution_type;
+Index: ../trunk-jpl/src/m/classes/inversion.m
+===================================================================
+--- ../trunk-jpl/src/m/classes/inversion.m	(revision 14161)
++++ ../trunk-jpl/src/m/classes/inversion.m	(revision 14162)
+@@ -85,11 +85,12 @@
+ 			md = checkfield(md,'inversion.iscontrol','values',[0 1]);
+ 			md = checkfield(md,'inversion.tao','values',[0 1]);
+ 			md = checkfield(md,'inversion.incomplete_adjoint','values',[0 1]);
+-			md = checkfield(md,'inversion.control_parameters','cell',1,'values',{'BalancethicknessThickeningRate' 'FrictionCoefficient' 'MaterialsRheologyBbar' 'MaterialsRheologyZbar' 'Vx' 'Vy'});
++			md = checkfield(md,'inversion.control_parameters','cell',1,'values',...
++				{'BalancethicknessThickeningRate' 'FrictionCoefficient' 'MaterialsRheologyBbar' 'MaterialsRheologyZbar' 'Vx' 'Vy' 'Thickness'});
+ 			md = checkfield(md,'inversion.nsteps','numel',1,'>=',1);
+ 			md = checkfield(md,'inversion.maxiter_per_step','size',[md.inversion.nsteps 1],'>=',0);
+ 			md = checkfield(md,'inversion.step_threshold','size',[md.inversion.nsteps 1]);
+-			md = checkfield(md,'inversion.cost_functions','size',[md.inversion.nsteps num_costfunc],'values',[101:105 201 501:505]);
++			md = checkfield(md,'inversion.cost_functions','size',[md.inversion.nsteps num_costfunc],'values',[101:105 201 501:506]);
+ 			md = checkfield(md,'inversion.cost_functions_coefficients','size',[md.mesh.numberofvertices num_costfunc],'>=',0);
+ 			md = checkfield(md,'inversion.gradient_only','values',[0 1]);
+ 			md = checkfield(md,'inversion.gradient_scaling','size',[md.inversion.nsteps num_controls]);
+@@ -98,6 +99,8 @@
+ 
+ 			if solution==BalancethicknessSolutionEnum()
+ 				md = checkfield(md,'inversion.thickness_obs','size',[md.mesh.numberofvertices 1],'NaN',1);
++			elseif solution==WeakBalancethicknessSolutionEnum()
++				md = checkfield(md,'inversion.thickness_obs','size',[md.mesh.numberofvertices 1],'NaN',1);
+ 			else
+ 				md = checkfield(md,'inversion.vx_obs','size',[md.mesh.numberofvertices 1],'NaN',1);
+ 				md = checkfield(md,'inversion.vy_obs','size',[md.mesh.numberofvertices 1],'NaN',1);
+@@ -176,6 +179,7 @@
+ 			pos=find(data==503); data(pos)=ThicknessAbsGradientEnum();
+ 			pos=find(data==504); data(pos)=ThicknessAlongGradientEnum();
+ 			pos=find(data==505); data(pos)=ThicknessAcrossGradientEnum();
++			pos=find(data==506); data(pos)=BalancethicknessMisfitEnum();
+ 			WriteData(fid,'data',data,'enum',InversionCostFunctionsEnum(),'format','DoubleMat','mattype',3);
+ 			WriteData(fid,'data',num_cost_functions,'enum',InversionNumCostFunctionsEnum(),'format','Integer');
+ 		end % }}}
+Index: ../trunk-jpl/src/m/consistency/ismodelselfconsistent.m
+===================================================================
+--- ../trunk-jpl/src/m/consistency/ismodelselfconsistent.m	(revision 14161)
++++ ../trunk-jpl/src/m/consistency/ismodelselfconsistent.m	(revision 14162)
+@@ -68,6 +68,10 @@
+ 		numanalyses=1; 
+ 		analyses=[BalancethicknessAnalysisEnum()];
+ 
++	case WeakBalancethicknessSolutionEnum(),
++		numanalyses=1; 
++		analyses=[BalancethicknessAnalysisEnum()];
++
+ 	case SurfaceSlopeSolutionEnum(),
+ 		numanalyses=1; 
+ 		analyses=[SurfaceSlopeAnalysisEnum()];
Index: /issm/oecreview/Archive/14064-14311/ISSM-14162-14163.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14162-14163.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14162-14163.diff	(revision 14312)
@@ -0,0 +1,12 @@
+Index: ../trunk-jpl/src/c/solutions/AdjointCorePointerFromSolutionEnum.cpp
+===================================================================
+--- ../trunk-jpl/src/c/solutions/AdjointCorePointerFromSolutionEnum.cpp	(revision 14162)
++++ ../trunk-jpl/src/c/solutions/AdjointCorePointerFromSolutionEnum.cpp	(revision 14163)
+@@ -32,6 +32,7 @@
+ 			break;
+ 		case BalancethicknessSolutionEnum:
+ 			adjointcore=&adjointbalancethickness_core;
++			break;
+ 		case WeakBalancethicknessSolutionEnum:
+ 			adjointcore=&dummy_core;
+ 			break;
Index: /issm/oecreview/Archive/14064-14311/ISSM-14163-14164.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14163-14164.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14163-14164.diff	(revision 14312)
@@ -0,0 +1,82 @@
+Index: ../trunk-jpl/src/c/solutions/controltao_core.cpp
+===================================================================
+--- ../trunk-jpl/src/c/solutions/controltao_core.cpp	(revision 14163)
++++ ../trunk-jpl/src/c/solutions/controltao_core.cpp	(revision 14164)
+@@ -48,9 +48,8 @@
+ 	femmodel->parameters->FindParam(&num_controls,InversionNumControlParametersEnum);
+ 	femmodel->parameters->FindParam(&control_list,NULL,InversionControlParametersEnum);
+ 	femmodel->parameters->FindParam(&nsteps,InversionNstepsEnum);
+-	femmodel->parameters->FindParam(&dummy,NULL,NULL,InversionMaxiterPerStepEnum);
+ 	femmodel->parameters->SetParam(false,SaveResultsEnum);
+-	maxiter=nsteps*(int)dummy[0]; xDelete<IssmDouble>(dummy);
++	maxiter=nsteps*10;
+ 
+ 	/*Initialize TAO*/
+ 	TaoCreate(IssmComm::GetComm(),&tao);
+Index: ../trunk-jpl/src/c/modules/ModelProcessorx/Control/CreateParametersControl.cpp
+===================================================================
+--- ../trunk-jpl/src/c/modules/ModelProcessorx/Control/CreateParametersControl.cpp	(revision 14163)
++++ ../trunk-jpl/src/c/modules/ModelProcessorx/Control/CreateParametersControl.cpp	(revision 14164)
+@@ -14,7 +14,7 @@
+ void CreateParametersControl(Parameters** pparameters,IoModel* iomodel,int solution_type,int analysis_type){
+ 
+ 	Parameters *parameters       = NULL;
+-	bool        control_analysis;
++	bool        control_analysis,tao_analysis;
+ 	int         nsteps;
+ 	int         num_control_type;
+ 	int         num_cm_responses;
+@@ -29,6 +29,7 @@
+ 
+ 	/*retrieve some parameters: */
+ 	iomodel->Constant(&control_analysis,InversionIscontrolEnum);
++	iomodel->Constant(&tao_analysis,InversionTaoEnum);
+ 
+ 	if(control_analysis){
+ 
+@@ -36,9 +37,11 @@
+ 		parameters->AddObject(iomodel->CopyConstantObject(InversionNumControlParametersEnum));
+ 		parameters->AddObject(iomodel->CopyConstantObject(InversionNumCostFunctionsEnum));
+ 		parameters->AddObject(iomodel->CopyConstantObject(InversionNstepsEnum));
+-		parameters->AddObject(iomodel->CopyConstantObject(InversionCostFunctionThresholdEnum));
+-		parameters->AddObject(iomodel->CopyConstantObject(InversionGradientOnlyEnum));
+ 		parameters->AddObject(iomodel->CopyConstantObject(InversionIncompleteAdjointEnum));
++		if(!tao_analysis){
++			parameters->AddObject(iomodel->CopyConstantObject(InversionCostFunctionThresholdEnum));
++			parameters->AddObject(iomodel->CopyConstantObject(InversionGradientOnlyEnum));
++		}
+ 
+ 		/*What solution type?*/
+ 		if (solution_type==SteadystateSolutionEnum){
+@@ -51,15 +54,23 @@
+ 		/*Now, recover fit, optscal and maxiter as vectors: */
+ 		iomodel->FetchData(&control_type,NULL,&num_control_type,InversionControlParametersEnum);
+ 		iomodel->FetchData(&cm_responses,&nsteps,&num_cm_responses,InversionCostFunctionsEnum);
+-		iomodel->FetchData(&cm_jump,&nsteps,NULL,InversionStepThresholdEnum);
+-		iomodel->FetchData(&optscal,NULL,NULL,InversionGradientScalingEnum);
+-		iomodel->FetchData(&maxiter,NULL,NULL,InversionMaxiterPerStepEnum);
++		if(!tao_analysis){
++			iomodel->FetchData(&cm_jump,&nsteps,NULL,InversionStepThresholdEnum);
++			iomodel->FetchData(&optscal,NULL,NULL,InversionGradientScalingEnum);
++			iomodel->FetchData(&maxiter,NULL,NULL,InversionMaxiterPerStepEnum);
++		}
+ 
+-		parameters->AddObject(new IntVecParam(InversionControlParametersEnum,control_type,num_control_type));
+-		parameters->AddObject(new DoubleMatParam(InversionGradientScalingEnum,optscal,nsteps,num_control_type));
+-		parameters->AddObject(new DoubleMatParam(InversionCostFunctionsEnum,cm_responses,nsteps,num_cm_responses));
+-		parameters->AddObject(new DoubleVecParam(InversionStepThresholdEnum,cm_jump,nsteps));
+-		parameters->AddObject(new DoubleVecParam(InversionMaxiterPerStepEnum,maxiter,nsteps));
++		if(tao_analysis){
++			parameters->AddObject(new IntVecParam(InversionControlParametersEnum,control_type,num_control_type));
++			parameters->AddObject(new DoubleVecParam(InversionCostFunctionsEnum,cm_responses,num_cm_responses));
++		}
++		else{
++			parameters->AddObject(new IntVecParam(InversionControlParametersEnum,control_type,num_control_type));
++			parameters->AddObject(new DoubleMatParam(InversionGradientScalingEnum,optscal,nsteps,num_control_type));
++			parameters->AddObject(new DoubleMatParam(InversionCostFunctionsEnum,cm_responses,nsteps,num_cm_responses));
++			parameters->AddObject(new DoubleVecParam(InversionStepThresholdEnum,cm_jump,nsteps));
++			parameters->AddObject(new DoubleVecParam(InversionMaxiterPerStepEnum,maxiter,nsteps));
++		}
+ 
+ 		xDelete<int>(control_type);
+ 		iomodel->DeleteData(cm_responses,InversionCostFunctionsEnum);
Index: /issm/oecreview/Archive/14064-14311/ISSM-14164-14165.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14164-14165.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14164-14165.diff	(revision 14312)
@@ -0,0 +1,147 @@
+Index: ../trunk-jpl/src/m/classes/taoinversion.m
+===================================================================
+--- ../trunk-jpl/src/m/classes/taoinversion.m	(revision 0)
++++ ../trunk-jpl/src/m/classes/taoinversion.m	(revision 14165)
+@@ -0,0 +1,142 @@
++%INVERSION class definition
++%
++%   Usage:
++%      taoinversion=taoinversion();
++
++classdef taoinversion
++	properties (SetAccess=public) 
++		iscontrol                   = 0
++		incomplete_adjoint          = 0
++		control_parameters          = NaN
++		nsteps                      = 0
++		cost_functions              = NaN
++		cost_functions_coefficients = NaN
++		min_parameters              = NaN
++		max_parameters              = NaN
++		vx_obs                      = NaN
++		vy_obs                      = NaN
++		vz_obs                      = NaN
++		vel_obs                     = NaN
++		thickness_obs               = NaN
++	end
++	methods
++		function obj = taoinversion(varargin) % {{{
++			switch nargin
++				case 0
++					obj=setdefaultparameters(obj);
++				otherwise
++					error('constructor not supported');
++			end
++		end % }}}
++		function obj = setdefaultparameters(obj) % {{{
++
++			%default is incomplete adjoint for now
++			obj.incomplete_adjoint=1;
++
++			%parameter to be inferred by control methods (only
++			%drag and B are supported yet)
++			obj.control_parameters={'FrictionCoefficient'};
++
++			%number of steps in the control methods
++			obj.nsteps=20;
++
++			%several responses can be used:
++			obj.cost_functions=101*ones(obj.nsteps,1);
++
++		end % }}}
++		function md = checkconsistency(obj,md,solution,analyses) % {{{
++
++			%Early return
++			if ~obj.iscontrol, return; end
++
++			num_controls=numel(md.inversion.control_parameters);
++			num_costfunc=size(md.inversion.cost_functions,2);
++
++			md = checkfield(md,'inversion.iscontrol','values',[0 1]);
++			md = checkfield(md,'inversion.incomplete_adjoint','values',[0 1]);
++			md = checkfield(md,'inversion.control_parameters','cell',1,'values',...
++				{'BalancethicknessThickeningRate' 'FrictionCoefficient' 'MaterialsRheologyBbar' 'MaterialsRheologyZbar' 'Vx' 'Vy' 'Thickness'});
++			md = checkfield(md,'inversion.nsteps','numel',1,'>=',1);
++			md = checkfield(md,'inversion.cost_functions','size',[1 num_costfunc],'values',[101:105 201 501:506]);
++			md = checkfield(md,'inversion.cost_functions_coefficients','size',[md.mesh.numberofvertices num_costfunc],'>=',0);
++			md = checkfield(md,'inversion.min_parameters','size',[md.mesh.numberofvertices num_controls]);
++			md = checkfield(md,'inversion.max_parameters','size',[md.mesh.numberofvertices num_controls]);
++
++			if solution==BalancethicknessSolutionEnum()
++				md = checkfield(md,'inversion.thickness_obs','size',[md.mesh.numberofvertices 1],'NaN',1);
++			elseif solution==WeakBalancethicknessSolutionEnum()
++				md = checkfield(md,'inversion.thickness_obs','size',[md.mesh.numberofvertices 1],'NaN',1);
++			else
++				md = checkfield(md,'inversion.vx_obs','size',[md.mesh.numberofvertices 1],'NaN',1);
++				md = checkfield(md,'inversion.vy_obs','size',[md.mesh.numberofvertices 1],'NaN',1);
++			end
++		end % }}}
++		function disp(obj) % {{{
++			disp(sprintf('   taoinversion parameters:'));
++			fielddisplay(obj,'iscontrol','is inversion activated?');
++			fielddisplay(obj,'incomplete_adjoint','do we assume linear viscosity?');
++			fielddisplay(obj,'control_parameters','parameter where inverse control is carried out; ex: {''FrictionCoefficient''}, or {''MaterialsRheologyBbar''}');
++			fielddisplay(obj,'nsteps','number of optimization searches');
++			fielddisplay(obj,'cost_functions','indicate the type of response for each optimization step');
++			fielddisplay(obj,'cost_functions_coefficients','cost_functions_coefficients applied to the misfit of each vertex and for each control_parameter');
++			fielddisplay(obj,'min_parameters','absolute minimum acceptable value of the inversed parameter on each vertex');
++			fielddisplay(obj,'max_parameters','absolute maximum acceptable value of the inversed parameter on each vertex');
++			fielddisplay(obj,'vx_obs','observed velocity x component [m/a]');
++			fielddisplay(obj,'vy_obs','observed velocity y component [m/a]');
++			fielddisplay(obj,'vel_obs','observed velocity magnitude [m/a]');
++			fielddisplay(obj,'thickness_obs','observed thickness [m]');
++			disp('Available cost functions:');
++			disp('   101: SurfaceAbsVelMisfit');
++			disp('   102: SurfaceRelVelMisfit');
++			disp('   103: SurfaceLogVelMisfit');
++			disp('   104: SurfaceLogVxVyMisfit');
++			disp('   105: SurfaceAverageVelMisfit');
++			disp('   201: ThicknessAbsMisfit');
++			disp('   501: DragCoefficientAbsGradient');
++			disp('   502: RheologyBbarAbsGradient');
++			disp('   503: ThicknessAbsGradient');
++		end % }}}
++		function marshall(obj,fid) % {{{
++
++			WriteData(fid,'object',obj,'class','inversion','fieldname','iscontrol','format','Boolean');
++			WriteData(fid,'enum',InversionTaoEnum(),'data',true,'format','Boolean');
++			if ~obj.iscontrol, return; end
++			WriteData(fid,'object',obj,'class','inversion','fieldname','incomplete_adjoint','format','Boolean');
++			WriteData(fid,'object',obj,'class','inversion','fieldname','nsteps','format','Integer');
++			WriteData(fid,'object',obj,'class','inversion','fieldname','cost_functions_coefficients','format','DoubleMat','mattype',1);
++			WriteData(fid,'object',obj,'class','inversion','fieldname','min_parameters','format','DoubleMat','mattype',3);
++			WriteData(fid,'object',obj,'class','inversion','fieldname','max_parameters','format','DoubleMat','mattype',3);
++			WriteData(fid,'object',obj,'class','inversion','fieldname','vx_obs','format','DoubleMat','mattype',1);
++			WriteData(fid,'object',obj,'class','inversion','fieldname','vy_obs','format','DoubleMat','mattype',1);
++			WriteData(fid,'object',obj,'class','inversion','fieldname','vz_obs','format','DoubleMat','mattype',1);
++			WriteData(fid,'object',obj,'class','inversion','fieldname','thickness_obs','format','DoubleMat','mattype',1);
++
++			%process control parameters
++			num_control_parameters=numel(obj.control_parameters);
++			data=zeros(1,num_control_parameters);
++			for i=1:num_control_parameters,
++				data(i)=StringToEnum(obj.control_parameters{i});
++			end
++			WriteData(fid,'data',data,'enum',InversionControlParametersEnum(),'format','DoubleMat','mattype',3);
++			WriteData(fid,'data',num_control_parameters,'enum',InversionNumControlParametersEnum(),'format','Integer');
++
++			%process cost functions
++			num_cost_functions=size(obj.cost_functions,2);
++			data=obj.cost_functions;
++			pos=find(data==101); data(pos)=SurfaceAbsVelMisfitEnum();
++			pos=find(data==102); data(pos)=SurfaceRelVelMisfitEnum();
++			pos=find(data==103); data(pos)=SurfaceLogVelMisfitEnum();
++			pos=find(data==104); data(pos)=SurfaceLogVxVyMisfitEnum();
++			pos=find(data==105); data(pos)=SurfaceAverageVelMisfitEnum();
++			pos=find(data==201); data(pos)=ThicknessAbsMisfitEnum();
++			pos=find(data==501); data(pos)=DragCoefficientAbsGradientEnum();
++			pos=find(data==502); data(pos)=RheologyBbarAbsGradientEnum();
++			pos=find(data==503); data(pos)=ThicknessAbsGradientEnum();
++			pos=find(data==504); data(pos)=ThicknessAlongGradientEnum();
++			pos=find(data==505); data(pos)=ThicknessAcrossGradientEnum();
++			pos=find(data==506); data(pos)=BalancethicknessMisfitEnum();
++			WriteData(fid,'data',data,'enum',InversionCostFunctionsEnum(),'format','DoubleMat','mattype',3);
++			WriteData(fid,'data',num_cost_functions,'enum',InversionNumCostFunctionsEnum(),'format','Integer');
++		end % }}}
++	end
++end
Index: /issm/oecreview/Archive/14064-14311/ISSM-14165-14166.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14165-14166.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14165-14166.diff	(revision 14312)
@@ -0,0 +1,12 @@
+Index: ../trunk-jpl/src/c/solutions/convergence.cpp
+===================================================================
+--- ../trunk-jpl/src/c/solutions/convergence.cpp	(revision 14165)
++++ ../trunk-jpl/src/c/solutions/convergence.cpp	(revision 14166)
+@@ -64,6 +64,7 @@
+ 	/*Force equilibrium (Mandatory)*/
+ 
+ 	//compute K[n]U[n-1]F = K[n]U[n-1] - F
++	_assert_(uf); _assert_(Kff);
+ 	KUold=uf->Duplicate(); Kff->MatMult(old_uf,KUold);
+ 	KUoldF=KUold->Duplicate();KUold->Copy(KUoldF); KUoldF->AYPX(pf,-1.0);
+ 	nKUoldF=KUoldF->Norm(NORM_TWO);
Index: /issm/oecreview/Archive/14064-14311/ISSM-14166-14167.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14166-14167.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14166-14167.diff	(revision 14312)
@@ -0,0 +1,62 @@
+Index: ../trunk-jpl/src/c/solvers/solver_newton.cpp
+===================================================================
+--- ../trunk-jpl/src/c/solvers/solver_newton.cpp	(revision 14166)
++++ ../trunk-jpl/src/c/solvers/solver_newton.cpp	(revision 14167)
+@@ -55,12 +55,32 @@
+ 		xdelete(&old_uf);old_uf=uf;
+ 
+ 		/*Solver forward model*/
+-		femmodel->SystemMatricesx(&Kff, &Kfs, &pf, &df, NULL);
++		if(count==1){
++			femmodel->SystemMatricesx(&Kff, &Kfs, &pf, &df, NULL);
++			CreateNodalConstraintsx(&ys,femmodel->nodes,configuration_type);
++			Reduceloadx(pf,Kfs,ys);xdelete(&Kfs);
++			Solverx(&uf,Kff,pf,old_uf,df,femmodel->parameters);xdelete(&df);
++			Mergesolutionfromftogx(&ug,uf,ys,femmodel->nodes,femmodel->parameters);xdelete(&ys);
++			InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ug);xdelete(&ug);
++			xdelete(&old_ug);old_ug=ug;
++			xdelete(&old_uf);old_uf=uf;
++		}
++		uf=old_uf->Duplicate(); old_uf->Copy(uf);
++
++		/*Prepare next iteration using Newton's method*/
++		femmodel->SystemMatricesx(&Kff, &Kfs, &pf, &df, NULL);xdelete(&df);
+ 		CreateNodalConstraintsx(&ys,femmodel->nodes,configuration_type);
+-		Reduceloadx(pf,Kfs,ys);xdelete(&Kfs);
+-		Solverx(&uf,Kff,pf,old_uf,df,femmodel->parameters);xdelete(&df);
++		Reduceloadx(pf,Kfs,ys);   xdelete(&Kfs);
++
++		pJf=pf->Duplicate();
++		Kff->MatMult(uf,pJf);// xdelete(&Kff);
++		pJf->Scale(-1.0); pJf->AXPY(pf,+1.0);     //xdelete(&pf);
++
++		femmodel->CreateJacobianMatrixx(&Jff,kmax);
++		Solverx(&duf,Jff,pJf,NULL,NULL,femmodel->parameters); xdelete(&Jff); xdelete(&pJf);
++		uf->AXPY(duf, 1.0); xdelete(&duf);
+ 		Mergesolutionfromftogx(&ug,uf,ys,femmodel->nodes,femmodel->parameters);xdelete(&ys);
+-		InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ug);xdelete(&ug);
++		InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ug);
+ 
+ 		/*Check convergence*/
+ 		convergence(&converged,Kff,pf,uf,old_uf,femmodel->parameters); 
+@@ -81,20 +101,6 @@
+ 			break;
+ 		}
+ 
+-		/*Prepare next iteration using Newton's method*/
+-		femmodel->SystemMatricesx(&Kff, &Kfs, &pf, &df, NULL);
+-		CreateNodalConstraintsx(&ys,femmodel->nodes,configuration_type);
+-		Reduceloadx(pf,Kfs,ys);   xdelete(&Kfs);
+-
+-		pJf=pf->Duplicate(); Kff->MatMult(uf,pJf); xdelete(&Kff);
+-		pJf->Scale(-1.0); pJf->AXPY(pf,+1.0);     xdelete(&pf);
+-
+-		femmodel->CreateJacobianMatrixx(&Jff,kmax);
+-		Solverx(&duf,Jff,pJf,NULL,NULL,femmodel->parameters); xdelete(&Jff); xdelete(&pJf);
+-		uf->AXPY(duf, 1.0); xdelete(&duf);
+-		Mergesolutionfromftogx(&ug,uf,ys,femmodel->nodes,femmodel->parameters);xdelete(&ys);
+-		InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ug);
+-
+ 		count++;
+ 	}
+ 
Index: /issm/oecreview/Archive/14064-14311/ISSM-14167-14168.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14167-14168.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14167-14168.diff	(revision 14312)
@@ -0,0 +1,1436 @@
+Index: ../trunk-jpl/src/android/ISSM/project.properties
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/project.properties	(revision 14167)
++++ ../trunk-jpl/src/android/ISSM/project.properties	(revision 14168)
+@@ -11,4 +11,4 @@
+ #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
+ 
+ # Project target.
+-target=android-15
++target=android-17
+Index: ../trunk-jpl/src/android/ISSM/src/com/example/issm/MapSelection.java
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/src/com/example/issm/MapSelection.java	(revision 14167)
++++ ../trunk-jpl/src/android/ISSM/src/com/example/issm/MapSelection.java	(revision 14168)
+@@ -14,6 +14,7 @@
+ import android.view.Menu;
+ import android.view.View;
+ import android.widget.Button;
++import android.widget.ImageButton;
+ import android.widget.Toast;
+ import android.content.Intent;
+ import android.content.SharedPreferences;
+@@ -24,7 +25,7 @@
+ 	ISSM issm = new ISSM();
+ 	private static final String PREFERENCE_FIRST_RUN = null;
+ 	private String extStorageDirectory;
+-	private String issmFolder;
++	private String issmFolder; 
+ //------------------------------------------------------------------------	
+ 	public void onCreate(Bundle icicle)
+ 	{
+@@ -48,7 +49,7 @@
+ 		    
+ 	
+ 		//this button represents greenland and pass signal to issm
+-		Button gl = (Button) findViewById(R.id.button1);		
++		ImageButton gl = (ImageButton) findViewById(R.id.button1);		
+ 		gl.setOnClickListener(new View.OnClickListener() 
+ 		{
+ 			public void onClick(View v) 
+@@ -61,7 +62,7 @@
+ 		});
+ 		
+ 		//this button represents artarctica and pass signal to issm
+-		Button art = (Button) findViewById(R.id.button2);
++		ImageButton art = (ImageButton) findViewById(R.id.button2);
+ 		art.setOnClickListener(new View.OnClickListener() 
+ 		{
+ 			public void onClick(View v) 
+Index: ../trunk-jpl/src/android/ISSM/src/com/example/issm/ISSM.java
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/src/com/example/issm/ISSM.java	(revision 14167)
++++ ../trunk-jpl/src/android/ISSM/src/com/example/issm/ISSM.java	(revision 14168)
+@@ -1,18 +1,15 @@
+ package com.example.issm;
+ 
+-import java.io.IOException;
+-import java.io.InputStream;
+ import java.nio.ByteBuffer;
+ import java.nio.ByteOrder;
+ import java.nio.DoubleBuffer;
+-import java.text.DecimalFormat;
+ 
+ import android.opengl.GLSurfaceView;
+ import android.os.Bundle;
+ import android.app.Activity;
+-import android.content.res.AssetManager;
+-import android.text.TextUtils;
+ import android.view.Menu;
++import android.view.MenuInflater;
++import android.view.MenuItem;
+ import android.view.View;
+ import android.view.View.OnClickListener;
+ import android.widget.Button;
+@@ -20,6 +17,7 @@
+ import android.widget.FrameLayout;
+ import android.widget.SeekBar;
+ import android.widget.TextView;
++import android.widget.Toast;
+ 
+ 
+ public class ISSM extends Activity implements OnClickListener 
+@@ -35,6 +33,7 @@
+ 	private FrameLayout frame;
+ 	private SeekBar bar;
+     private TextView /*txtStatus,*/ txtValue;
++    private ColorMap colorMap;
+     
+ 
+     @Override
+@@ -53,15 +52,15 @@
+         this.bar  = (SeekBar) findViewById(R.id.seekBar);
+         this.txtValue  = (TextView) super.findViewById(R.id.value);
+         Button button = (Button) super.findViewById(R.id.button1);
++	    frame = (FrameLayout)findViewById(R.id.frame);
+         button.setOnClickListener(this);
+         
+         //load up the ISSM library and create double buffer in java
+         //which later on will be pass for native allocation.
+         issmNative = new IssmJni();
+         this.createModel();
++        this.colorMap = new ColorMap();
+         buff = ByteBuffer.allocateDirect(size*12*8).order(ByteOrder.nativeOrder()).asDoubleBuffer();
+-        
+-
+     }
+ //------------------------------------------------------------------------------------------------    
+     public void createModel()
+@@ -81,20 +80,99 @@
+     {
+     	issmNative.solveISSMModel(5,buff);
+     }
+- //------------------------------------------------------------------------------------------------   
++//------------------------------------------------------------------------------------------------  
++    public boolean onCreateOptionsMenu(Menu menu)
++    {
++    	MenuInflater menuInflater = getMenuInflater();
++    	menuInflater.inflate(R.menu.issm_menu,menu);
++    	
++    	return true;
++    }
++//------------------------------------------------------------------------------------------------
++   public boolean onOptionsItemSelected(MenuItem item)
++    {
++    	switch (item.getItemId())
++        {
++	        case R.id.menu_about:          
++	            Toast.makeText(ISSM.this, "ISSM Application", Toast.LENGTH_SHORT).show();
++	            return true;
++	 	            
++	        case R.id.cl_autumn:
++	        	colorMap.setAutumn();
++	        	drawFigure();
++	        	return true;
++	        
++	        case R.id.cl_bone:
++	        	colorMap.setBone();
++	        	drawFigure();
++	        	return true;
++	        
++	        case R.id.cl_cool:
++	        	colorMap.setCool();
++	        	drawFigure();
++	        	return true;
++	        	
++	        case R.id.cl_copper:
++	        	colorMap.setCopper();
++	        	drawFigure();
++	        	return true;
++	        	
++	        case R.id.cl_gray:
++	        	colorMap.setGray();
++	        	drawFigure();
++	        	return true;
++	        
++	        case R.id.cl_hot:
++	        	colorMap.setGray();
++	        	drawFigure();
++	        	return true;
++	        
++	        case R.id.cl_hsv:
++	        	colorMap.setDefault();
++	        	drawFigure();
++	        	return true;
++	        	
++	        case R.id.cl_jet:
++	        	colorMap.setJet();
++	        	drawFigure();
++	        	return true;
++	        	
++	        case R.id.cl_pink:
++	        	colorMap.setPink();
++	        	drawFigure();
++	        	return true;
++	        	
++	        case R.id.cl_spring:
++	        	colorMap.setSpring();
++	        	drawFigure();
++	        	return true;
++	        	
++	        case R.id.cl_summer:	
++	        	colorMap.setSummer();
++	        	drawFigure();
++	        	return true;
++	        	
++	        case R.id.cl_winter:
++	        	colorMap.setWinter();
++	        	drawFigure();
++	        	return true;
++	        default:
++	        	return super.onOptionsItemSelected(item);
++        }
++            
++    }
++//---------------------------------------------------------------------------------   
+     public void onClick(View view) 
+ 	{
+-		//factorial method
+-		/*String input = this.input.getText().toString();
+-		if(TextUtils.isEmpty(input))
+-		{
+-			return;
+-		}*/		
+-		//example of how to fill buffer Native
+ 		this.fillBuffer();
+-		
+-		mGLView = new MyGLSurfaceView(this, buff, size);
+-	    frame = (FrameLayout)findViewById(R.id.frame);
+-	    frame.addView(mGLView);
++		drawFigure();
+ 	}
++//---------------------------------------------------------------------------------- 
++    public void drawFigure()
++    {
++    	frame.removeView(mGLView);
++    	mGLView = new MyGLSurfaceView(this, buff, size, colorMap);
++    	frame.addView(mGLView);
++    }
++//-----------------------------------------------------------------------------------    
+ }
+Index: ../trunk-jpl/src/android/ISSM/src/com/example/issm/ColorMap.java
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/src/com/example/issm/ColorMap.java	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/src/com/example/issm/ColorMap.java	(revision 14168)
+@@ -0,0 +1,875 @@
++package com.example.issm;
++
++/////////////////////////////////////////////////////////
++class ColorMap
++{
++	private double[][] d;
++//-------------------------------------------------------
++	public ColorMap()
++	{
++		setDefault();
++	}
++//-------------------------------------------------------
++	//set default color map => hsv
++	public void setDefault()
++	{
++		d = new double[][]{	
++				{1.0, 	0.0, 	0.0 },
++				{ 1.0, 	0.0938, 	0.0 },
++				{ 1.0, 	0.1875, 	0.0 },
++				{ 1.0, 	0.2813, 	0.0 },
++				{ 1.0, 	0.375, 	0.0 },
++				{ 1.0, 	0.4688, 	0.0 },
++				{ 1.0, 	0.5625, 	0.0 },
++				{ 1.0, 	0.6563, 	0.0 },
++				{ 1.0, 	0.75, 	0.0 },
++				{ 1.0, 	0.8438, 	0.0 },
++				{ 1.0, 	0.9375, 	0.0 },
++				{ 0.9688, 	1.0, 	0.0 },
++				{ 0.875, 	1.0, 	0.0 },
++				{ 0.7813, 	1.0, 	0.0 },
++				{ 0.6875, 	1.0, 	0.0 },
++				{ 0.5938, 	1.0, 	0.0 },
++				{ 0.5, 	1.0, 	0.0 },
++				{ 0.4063, 	1.0, 	0.0 },
++				{ 0.3125, 	1.0, 	0.0 },
++				{ 0.2188, 	1.0, 	0.0 },
++				{ 0.125, 	1.0, 	0.0 },
++				{ 0.0313, 	1.0, 	0.0 },
++				{ 0.0, 	1.0, 	0.0625 },
++				{ 0.0, 	1.0, 	0.1563 },
++				{ 0.0, 	1.0, 	0.25 },
++				{ 0.0, 	1.0, 	0.3438 },
++				{ 0.0, 	1.0, 	0.4375 },
++				{ 0.0, 	1.0, 	0.5313 },
++				{ 0.0, 	1.0, 	0.625 },
++				{ 0.0, 	1.0, 	0.7188 },
++				{ 0.0, 	1.0, 	0.8125 },
++				{ 0.0, 	1.0, 	0.9063 },
++				{ 0.0, 	1.0, 	1.0 },
++				{ 0.0, 	0.9063, 	1.0 },
++				{ 0.0, 	0.8125, 	1.0 },
++				{ 0.0, 	0.7188, 	1.0 },
++				{ 0.0, 	0.625, 	1.0 },
++				{ 0.0, 	0.5313, 	1.0 },
++				{ 0.0, 	0.4375, 	1.0 },
++				{ 0.0, 	0.3438, 	1.0 },
++				{ 0.0, 	0.25, 	1.0 },
++				{ 0.0, 	0.1563, 	1.0 },
++				{ 0.0, 	0.0625, 	1.0 },
++				{ 0.0313, 	0.0, 	1.0 },
++				{ 0.125, 	0.0, 	1.0 },
++				{ 0.2188, 	0.0, 	1.0 },
++				{ 0.3125, 	0.0, 	1.0 },
++				{ 0.4063, 	0.0, 	1.0 },
++				{ 0.5, 	0.0, 	1.0 },
++				{ 0.5938, 	0.0, 	1.0 },
++				{ 0.6875, 	0.0, 	1.0 },
++				{ 0.7813, 	0.0, 	1.0 },
++				{ 0.875, 	0.0, 	1.0 },
++				{ 0.9688, 	0.0, 	1.0 },
++				{ 1.0, 	0.0, 	0.9375 },
++				{ 1.0, 	0.0, 	0.8438 },
++				{ 1.0, 	0.0, 	0.75 },
++				{ 1.0, 	0.0, 	0.6563 },
++				{ 1.0, 	0.0, 	0.5625 },
++				{ 1.0, 	0.0, 	0.4688 },
++				{ 1.0, 	0.0, 	0.375 },
++				{ 1.0, 	0.0, 	0.2813 },
++				{ 1.0, 	0.0, 	0.1875 },
++				{ 1.0, 	0.0, 	0.0938 }
++			};
++	}
++//-------------------------------------------------------
++	public void setAutumn()
++	{
++		d = new double[][]{
++				{ 1.0, 	0.0, 	0.0 },
++				{ 1.0, 	0.0159, 	0.0 },
++				{ 1.0, 	0.0317, 	0.0 },
++				{ 1.0, 	0.0476, 	0.0 },
++				{ 1.0, 	0.0635, 	0.0 },
++				{ 1.0, 	0.0794, 	0.0 },
++				{ 1.0, 	0.0952, 	0.0 },
++				{ 1.0, 	0.1111, 	0.0 },
++				{ 1.0, 	0.127, 	0.0 },
++				{ 1.0, 	0.1429, 	0.0 },
++				{ 1.0, 	0.1587, 	0.0 },
++				{ 1.0, 	0.1746, 	0.0 },
++				{ 1.0, 	0.1905, 	0.0 },
++				{ 1.0, 	0.2063, 	0.0 },
++				{ 1.0, 	0.2222, 	0.0 },
++				{ 1.0, 	0.2381, 	0.0 },
++				{ 1.0, 	0.254, 	0.0 },
++				{ 1.0, 	0.2698, 	0.0 },
++				{ 1.0, 	0.2857, 	0.0 },
++				{ 1.0, 	0.3016, 	0.0 },
++				{ 1.0, 	0.3175, 	0.0 },
++				{ 1.0, 	0.3333, 	0.0 },
++				{ 1.0, 	0.3492, 	0.0 },
++				{ 1.0, 	0.3651, 	0.0 },
++				{ 1.0, 	0.381, 	0.0 },
++				{ 1.0, 	0.3968, 	0.0 },
++				{ 1.0, 	0.4127, 	0.0 },
++				{ 1.0, 	0.4286, 	0.0 },
++				{ 1.0, 	0.4444, 	0.0 },
++				{ 1.0, 	0.4603, 	0.0 },
++				{ 1.0, 	0.4762, 	0.0 },
++				{ 1.0, 	0.4921, 	0.0 },
++				{ 1.0, 	0.5079, 	0.0 },
++				{ 1.0, 	0.5238, 	0.0 },
++				{ 1.0, 	0.5397, 	0.0 },
++				{ 1.0, 	0.5556, 	0.0 },
++				{ 1.0, 	0.5714, 	0.0 },
++				{ 1.0, 	0.5873, 	0.0 },
++				{ 1.0, 	0.6032, 	0.0 },
++				{ 1.0, 	0.619, 	0.0 },
++				{ 1.0, 	0.6349, 	0.0 },
++				{ 1.0, 	0.6508, 	0.0 },
++				{ 1.0, 	0.6667, 	0.0 },
++				{ 1.0, 	0.6825, 	0.0 },
++				{ 1.0, 	0.6984, 	0.0 },
++				{ 1.0, 	0.7143, 	0.0 },
++				{ 1.0, 	0.7302, 	0.0 },
++				{ 1.0, 	0.746, 	0.0 },
++				{ 1.0, 	0.7619, 	0.0 },
++				{ 1.0, 	0.7778, 	0.0 },
++				{ 1.0, 	0.7937, 	0.0 },
++				{ 1.0, 	0.8095, 	0.0 },
++				{ 1.0, 	0.8254, 	0.0 },
++				{ 1.0, 	0.8413, 	0.0 },
++				{ 1.0, 	0.8571, 	0.0 },
++				{ 1.0, 	0.873, 	0.0 },
++				{ 1.0, 	0.8889, 	0.0 },
++				{ 1.0, 	0.9048, 	0.0 },
++				{ 1.0, 	0.9206, 	0.0 },
++				{ 1.0, 	0.9365, 	0.0 },
++				{ 1.0, 	0.9524, 	0.0 },
++				{ 1.0, 	0.9683, 	0.0 },
++				{ 1.0, 	0.9841, 	0.0 },
++				{ 1.0, 	1.0, 	0.0 }
++			};
++	}
++//-------------------------------------------------------
++	public void setBone()
++	{
++		d = new double[][]{
++				{ 0.0, 	0.0, 	0.0052 },
++				{ 0.0139, 	0.0139, 	0.0243 },
++				{ 0.0278, 	0.0278, 	0.0434 },
++				{ 0.0417, 	0.0417, 	0.0625 },
++				{ 0.0556, 	0.0556, 	0.0816 },
++				{ 0.0694, 	0.0694, 	0.1007 },
++				{ 0.0833, 	0.0833, 	0.1198 },
++				{ 0.0972, 	0.0972, 	0.1389 },
++				{ 0.1111, 	0.1111, 	0.158 },
++				{ 0.125, 	0.125, 	0.1771 },
++				{ 0.1389, 	0.1389, 	0.1962 },
++				{ 0.1528, 	0.1528, 	0.2153 },
++				{ 0.1667, 	0.1667, 	0.2344 },
++				{ 0.1806, 	0.1806, 	0.2535 },
++				{ 0.1944, 	0.1944, 	0.2726 },
++				{ 0.2083, 	0.2083, 	0.2917 },
++				{ 0.2222, 	0.2222, 	0.3108 },
++				{ 0.2361, 	0.2361, 	0.3299 },
++				{ 0.25, 	0.25, 	0.349 },
++				{ 0.2639, 	0.2639, 	0.3681 },
++				{ 0.2778, 	0.2778, 	0.3872 },
++				{ 0.2917, 	0.2917, 	0.4062 },
++				{ 0.3056, 	0.3056, 	0.4253 },
++				{ 0.3194, 	0.3194, 	0.4444 },
++				{ 0.3333, 	0.3385, 	0.4583 },
++				{ 0.3472, 	0.3576, 	0.4722 },
++				{ 0.3611, 	0.3767, 	0.4861 },
++				{ 0.375, 	0.3958, 	0.5 },
++				{ 0.3889, 	0.4149, 	0.5139 },
++				{ 0.4028, 	0.434, 	0.5278 },
++				{ 0.4167, 	0.4531, 	0.5417 },
++				{ 0.4306, 	0.4722, 	0.5556 },
++				{ 0.4444, 	0.4913, 	0.5694 },
++				{ 0.4583, 	0.5104, 	0.5833 },
++				{ 0.4722, 	0.5295, 	0.5972 },
++				{ 0.4861, 	0.5486, 	0.6111 },
++				{ 0.5, 	0.5677, 	0.625 },
++				{ 0.5139, 	0.5868, 	0.6389 },
++				{ 0.5278, 	0.6059, 	0.6528 },
++				{ 0.5417, 	0.625, 	0.6667 },
++				{ 0.5556, 	0.6441, 	0.6806 },
++				{ 0.5694, 	0.6632, 	0.6944 },
++				{ 0.5833, 	0.6823, 	0.7083 },
++				{ 0.5972, 	0.7014, 	0.7222 },
++				{ 0.6111, 	0.7205, 	0.7361 },
++				{ 0.625, 	0.7396, 	0.75 },
++				{ 0.6389, 	0.7587, 	0.7639 },
++				{ 0.6528, 	0.7778, 	0.7778 },
++				{ 0.6745, 	0.7917, 	0.7917 },
++				{ 0.6962, 	0.8056, 	0.8056 },
++				{ 0.7179, 	0.8194, 	0.8194 },
++				{ 0.7396, 	0.8333, 	0.8333 },
++				{ 0.7613, 	0.8472, 	0.8472 },
++				{ 0.783, 	0.8611, 	0.8611 },
++				{ 0.8047, 	0.875, 	0.875 },
++				{ 0.8264, 	0.8889, 	0.8889 },
++				{ 0.8481, 	0.9028, 	0.9028 },
++				{ 0.8698, 	0.9167, 	0.9167 },
++				{ 0.8915, 	0.9306, 	0.9306 },
++				{ 0.9132, 	0.9444, 	0.9444 },
++				{ 0.9349, 	0.9583, 	0.9583 },
++				{ 0.9566, 	0.9722, 	0.9722 },
++				{ 0.9783, 	0.9861, 	0.9861 },
++				{ 1.0, 	1.0, 	1.0 }
++			};
++	}		
++//-------------------------------------------------------
++	public void setCool()
++	{
++		d = new double[][]{
++				{ 0.0, 	1.0, 	1.0 },
++				{ 0.0159, 	0.9841, 	1.0 },
++				{ 0.0317, 	0.9683, 	1.0 },
++				{ 0.0476, 	0.9524, 	1.0 },
++				{ 0.0635, 	0.9365, 	1.0 },
++				{ 0.0794, 	0.9206, 	1.0 },
++				{ 0.0952, 	0.9048, 	1.0 },
++				{ 0.1111, 	0.8889, 	1.0 },
++				{ 0.127, 	0.873, 	1.0 },
++				{ 0.1429, 	0.8571, 	1.0 },
++				{ 0.1587, 	0.8413, 	1.0 },
++				{ 0.1746, 	0.8254, 	1.0 },
++				{ 0.1905, 	0.8095, 	1.0 },
++				{ 0.2063, 	0.7937, 	1.0 },
++				{ 0.2222, 	0.7778, 	1.0 },
++				{ 0.2381, 	0.7619, 	1.0 },
++				{ 0.254, 	0.746, 	1.0 },
++				{ 0.2698, 	0.7302, 	1.0 },
++				{ 0.2857, 	0.7143, 	1.0 },
++				{ 0.3016, 	0.6984, 	1.0 },
++				{ 0.3175, 	0.6825, 	1.0 },
++				{ 0.3333, 	0.6667, 	1.0 },
++				{ 0.3492, 	0.6508, 	1.0 },
++				{ 0.3651, 	0.6349, 	1.0 },
++				{ 0.381, 	0.619, 	1.0 },
++				{ 0.3968, 	0.6032, 	1.0 },
++				{ 0.4127, 	0.5873, 	1.0 },
++				{ 0.4286, 	0.5714, 	1.0 },
++				{ 0.4444, 	0.5556, 	1.0 },
++				{ 0.4603, 	0.5397, 	1.0 },
++				{ 0.4762, 	0.5238, 	1.0 },
++				{ 0.4921, 	0.5079, 	1.0 },
++				{ 0.5079, 	0.4921, 	1.0 },
++				{ 0.5238, 	0.4762, 	1.0 },
++				{ 0.5397, 	0.4603, 	1.0 },
++				{ 0.5556, 	0.4444, 	1.0 },
++				{ 0.5714, 	0.4286, 	1.0 },
++				{ 0.5873, 	0.4127, 	1.0 },
++				{ 0.6032, 	0.3968, 	1.0 },
++				{ 0.619, 	0.381, 	1.0 },
++				{ 0.6349, 	0.3651, 	1.0 },
++				{ 0.6508, 	0.3492, 	1.0 },
++				{ 0.6667, 	0.3333, 	1.0 },
++				{ 0.6825, 	0.3175, 	1.0 },
++				{ 0.6984, 	0.3016, 	1.0 },
++				{ 0.7143, 	0.2857, 	1.0 },
++				{ 0.7302, 	0.2698, 	1.0 },
++				{ 0.746, 	0.254, 	1.0 },
++				{ 0.7619, 	0.2381, 	1.0 },
++				{ 0.7778, 	0.2222, 	1.0 },
++				{ 0.7937, 	0.2063, 	1.0 },
++				{ 0.8095, 	0.1905, 	1.0 },
++				{ 0.8254, 	0.1746, 	1.0 },
++				{ 0.8413, 	0.1587, 	1.0 },
++				{ 0.8571, 	0.1429, 	1.0 },
++				{ 0.873, 	0.127, 	1.0 },
++				{ 0.8889, 	0.1111, 	1.0 },
++				{ 0.9048, 	0.0952, 	1.0 },
++				{ 0.9206, 	0.0794, 	1.0 },
++				{ 0.9365, 	0.0635, 	1.0 },
++				{ 0.9524, 	0.0476, 	1.0 },
++				{ 0.9683, 	0.0317, 	1.0 },
++				{ 0.9841, 	0.0159, 	1.0 },
++				{ 1.0, 	0.0, 	1.0 }
++			};
++	}
++//-------------------------------------------------------
++	public void setCopper()
++	{
++		d = new double[][]{
++				{ 0.0, 	0.0, 	0.0 },
++				{ 0.0198, 	0.0124, 	0.0079 },
++				{ 0.0397, 	0.0248, 	0.0158 },
++				{ 0.0595, 	0.0372, 	0.0237 },
++				{ 0.0794, 	0.0496, 	0.0316 },
++				{ 0.0992, 	0.062, 	0.0395 },
++				{ 0.119, 	0.0744, 	0.0474 },
++				{ 0.1389, 	0.0868, 	0.0553 },
++				{ 0.1587, 	0.0992, 	0.0632 },
++				{ 0.1786, 	0.1116, 	0.0711 },
++				{ 0.1984, 	0.124, 	0.079 },
++				{ 0.2183, 	0.1364, 	0.0869 },
++				{ 0.2381, 	0.1488, 	0.0948 },
++				{ 0.2579, 	0.1612, 	0.1027 },
++				{ 0.2778, 	0.1736, 	0.1106 },
++				{ 0.2976, 	0.186, 	0.1185 },
++				{ 0.3175, 	0.1984, 	0.1263 },
++				{ 0.3373, 	0.2108, 	0.1342 },
++				{ 0.3571, 	0.2232, 	0.1421 },
++				{ 0.377, 	0.2356, 	0.15 },
++				{ 0.3968, 	0.248, 	0.1579 },
++				{ 0.4167, 	0.2604, 	0.1658 },
++				{ 0.4365, 	0.2728, 	0.1737 },
++				{ 0.4563, 	0.2852, 	0.1816 },
++				{ 0.4762, 	0.2976, 	0.1895 },
++				{ 0.496, 	0.31, 	0.1974 },
++				{ 0.5159, 	0.3224, 	0.2053 },
++				{ 0.5357, 	0.3348, 	0.2132 },
++				{ 0.5556, 	0.3472, 	0.2211 },
++				{ 0.5754, 	0.3596, 	0.229 },
++				{ 0.5952, 	0.372, 	0.2369 },
++				{ 0.6151, 	0.3844, 	0.2448 },
++				{ 0.6349, 	0.3968, 	0.2527 },
++				{ 0.6548, 	0.4092, 	0.2606 },
++				{ 0.6746, 	0.4216, 	0.2685 },
++				{ 0.6944, 	0.434, 	0.2764 },
++				{ 0.7143, 	0.4464, 	0.2843 },
++				{ 0.7341, 	0.4588, 	0.2922 },
++				{ 0.754, 	0.4712, 	0.3001 },
++				{ 0.7738, 	0.4836, 	0.308 },
++				{ 0.7937, 	0.496, 	0.3159 },
++				{ 0.8135, 	0.5084, 	0.3238 },
++				{ 0.8333, 	0.5208, 	0.3317 },
++				{ 0.8532, 	0.5332, 	0.3396 },
++				{ 0.873, 	0.5456, 	0.3475 },
++				{ 0.8929, 	0.558, 	0.3554 },
++				{ 0.9127, 	0.5704, 	0.3633 },
++				{ 0.9325, 	0.5828, 	0.3712 },
++				{ 0.9524, 	0.5952, 	0.379 },
++				{ 0.9722, 	0.6076, 	0.3869 },
++				{ 0.9921, 	0.62, 	0.3948 },
++				{ 1.0, 	0.6324, 	0.4027 },
++				{ 1.0, 	0.6448, 	0.4106 },
++				{ 1.0, 	0.6572, 	0.4185 },
++				{ 1.0, 	0.6696, 	0.4264 },
++				{ 1.0, 	0.682, 	0.4343 },
++				{ 1.0, 	0.6944, 	0.4422 },
++				{ 1.0, 	0.7068, 	0.4501 },
++				{ 1.0, 	0.7192, 	0.458 },
++				{ 1.0, 	0.7316, 	0.4659 },
++				{ 1.0, 	0.744, 	0.4738 },
++				{ 1.0, 	0.7564, 	0.4817 },
++				{ 1.0, 	0.7688, 	0.4896 },
++				{ 1.0, 	0.7812, 	0.4975 },
++			};
++	}
++//-------------------------------------------------------
++	public void setGray()
++	{
++		d = new double[][]{
++				{ 0.0, 	0.0, 	0.0 },
++				{ 0.0159, 	0.0159, 	0.0159 },
++				{ 0.0317, 	0.0317, 	0.0317 },
++				{ 0.0476, 	0.0476, 	0.0476 },
++				{ 0.0635, 	0.0635, 	0.0635 },
++				{ 0.0794, 	0.0794, 	0.0794 },
++				{ 0.0952, 	0.0952, 	0.0952 },
++				{ 0.1111, 	0.1111, 	0.1111 },
++				{ 0.127, 	0.127, 	0.127 },
++				{ 0.1429, 	0.1429, 	0.1429 },
++				{ 0.1587, 	0.1587, 	0.1587 },
++				{ 0.1746, 	0.1746, 	0.1746 },
++				{ 0.1905, 	0.1905, 	0.1905 },
++				{ 0.2063, 	0.2063, 	0.2063 },
++				{ 0.2222, 	0.2222, 	0.2222 },
++				{ 0.2381, 	0.2381, 	0.2381 },
++				{ 0.254, 	0.254, 	0.254 },
++				{ 0.2698, 	0.2698, 	0.2698 },
++				{ 0.2857, 	0.2857, 	0.2857 },
++				{ 0.3016, 	0.3016, 	0.3016 },
++				{ 0.3175, 	0.3175, 	0.3175 },
++				{ 0.3333, 	0.3333, 	0.3333 },
++				{ 0.3492, 	0.3492, 	0.3492 },
++				{ 0.3651, 	0.3651, 	0.3651 },
++				{ 0.381, 	0.381, 	0.381 },
++				{ 0.3968, 	0.3968, 	0.3968 },
++				{ 0.4127, 	0.4127, 	0.4127 },
++				{ 0.4286, 	0.4286, 	0.4286 },
++				{ 0.4444, 	0.4444, 	0.4444 },
++				{ 0.4603, 	0.4603, 	0.4603 },
++				{ 0.4762, 	0.4762, 	0.4762 },
++				{ 0.4921, 	0.4921, 	0.4921 },
++				{ 0.5079, 	0.5079, 	0.5079 },
++				{ 0.5238, 	0.5238, 	0.5238 },
++				{ 0.5397, 	0.5397, 	0.5397 },
++				{ 0.5556, 	0.5556, 	0.5556 },
++				{ 0.5714, 	0.5714, 	0.5714 },
++				{ 0.5873, 	0.5873, 	0.5873 },
++				{ 0.6032, 	0.6032, 	0.6032 },
++				{ 0.619, 	0.619, 	0.619 },
++				{ 0.6349, 	0.6349, 	0.6349 },
++				{ 0.6508, 	0.6508, 	0.6508 },
++				{ 0.6667, 	0.6667, 	0.6667 },
++				{ 0.6825, 	0.6825, 	0.6825 },
++				{ 0.6984, 	0.6984, 	0.6984 },
++				{ 0.7143, 	0.7143, 	0.7143 },
++				{ 0.7302, 	0.7302, 	0.7302 },
++				{ 0.746, 	0.746, 	0.746 },
++				{ 0.7619, 	0.7619, 	0.7619 },
++				{ 0.7778, 	0.7778, 	0.7778 },
++				{ 0.7937, 	0.7937, 	0.7937 },
++				{ 0.8095, 	0.8095, 	0.8095 },
++				{ 0.8254, 	0.8254, 	0.8254 },
++				{ 0.8413, 	0.8413, 	0.8413 },
++				{ 0.8571, 	0.8571, 	0.8571 },
++				{ 0.873, 	0.873, 	0.873 },
++				{ 0.8889, 	0.8889, 	0.8889 },
++				{ 0.9048, 	0.9048, 	0.9048 },
++				{ 0.9206, 	0.9206, 	0.9206 },
++				{ 0.9365, 	0.9365, 	0.9365 },
++				{ 0.9524, 	0.9524, 	0.9524 },
++				{ 0.9683, 	0.9683, 	0.9683 },
++				{ 0.9841, 	0.9841, 	0.9841 },
++				{ 1.0, 	1.0, 	1.0 }
++			};
++	}
++//-------------------------------------------------------
++	public void setHot()
++	{
++		d = new double[][]{
++				{ 0.0417, 	0.0, 	0.0 },
++				{ 0.0833, 	0.0, 	0.0 },
++				{ 0.125, 	0.0, 	0.0 },
++				{ 0.1667, 	0.0, 	0.0 },
++				{ 0.2083, 	0.0, 	0.0 },
++				{ 0.25, 	0.0, 	0.0 },
++				{ 0.2917, 	0.0, 	0.0 },
++				{ 0.3333, 	0.0, 	0.0 },
++				{ 0.375, 	0.0, 	0.0 },
++				{ 0.4167, 	0.0, 	0.0 },
++				{ 0.4583, 	0.0, 	0.0 },
++				{ 0.5, 	0.0, 	0.0 },
++				{ 0.5417, 	0.0, 	0.0 },
++				{ 0.5833, 	0.0, 	0.0 },
++				{ 0.625, 	0.0, 	0.0 },
++				{ 0.6667, 	0.0, 	0.0 },
++				{ 0.7083, 	0.0, 	0.0 },
++				{ 0.75, 	0.0, 	0.0 },
++				{ 0.7917, 	0.0, 	0.0 },
++				{ 0.8333, 	0.0, 	0.0 },
++				{ 0.875, 	0.0, 	0.0 },
++				{ 0.9167, 	0.0, 	0.0 },
++				{ 0.9583, 	0.0, 	0.0 },
++				{ 1.0, 	0.0, 	0.0 },
++				{ 1.0, 	0.0417, 	0.0 },
++				{ 1.0, 	0.0833, 	0.0 },
++				{ 1.0, 	0.125, 	0.0 },
++				{ 1.0, 	0.1667, 	0.0 },
++				{ 1.0, 	0.2083, 	0.0 },
++				{ 1.0, 	0.25, 	0.0 },
++				{ 1.0, 	0.2917, 	0.0 },
++				{ 1.0, 	0.3333, 	0.0 },
++				{ 1.0, 	0.375, 	0.0 },
++				{ 1.0, 	0.4167, 	0.0 },
++				{ 1.0, 	0.4583, 	0.0 },
++				{ 1.0, 	0.5, 	0.0 },
++				{ 1.0, 	0.5417, 	0.0 },
++				{ 1.0, 	0.5833, 	0.0 },
++				{ 1.0, 	0.625, 	0.0 },
++				{ 1.0, 	0.6667, 	0.0 },
++				{ 1.0, 	0.7083, 	0.0 },
++				{ 1.0, 	0.75, 	0.0 },
++				{ 1.0, 	0.7917, 	0.0 },
++				{ 1.0, 	0.8333, 	0.0 },
++				{ 1.0, 	0.875, 	0.0 },
++				{ 1.0, 	0.9167, 	0.0 },
++				{ 1.0, 	0.9583, 	0.0 },
++				{ 1.0, 	1.0, 	0.0 },
++				{ 1.0, 	1.0, 	0.0625 },
++				{ 1.0, 	1.0, 	0.125 },
++				{ 1.0, 	1.0, 	0.1875 },
++				{ 1.0, 	1.0, 	0.25 },
++				{ 1.0, 	1.0, 	0.3125 },
++				{ 1.0, 	1.0, 	0.375 },
++				{ 1.0, 	1.0, 	0.4375 },
++				{ 1.0, 	1.0, 	0.5 },
++				{ 1.0, 	1.0, 	0.5625 },
++				{ 1.0, 	1.0, 	0.625 },
++				{ 1.0, 	1.0, 	0.6875 },
++				{ 1.0, 	1.0, 	0.75 },
++				{ 1.0, 	1.0, 	0.8125 },
++				{ 1.0, 	1.0, 	0.875 },
++				{ 1.0, 	1.0, 	0.9375 },
++				{ 1.0, 	1.0, 	1.0 },
++			};
++	}
++//-------------------------------------------------------
++	public void setJet()
++	{
++		d = new double[][]{
++				{ 0.0, 	0.0, 	0.5625 },
++				{ 0.0, 	0.0, 	0.625 },
++				{ 0.0, 	0.0, 	0.6875 },
++				{ 0.0, 	0.0, 	0.75 },
++				{ 0.0, 	0.0, 	0.8125 },
++				{ 0.0, 	0.0, 	0.875 },
++				{ 0.0, 	0.0, 	0.9375 },
++				{ 0.0, 	0.0, 	1.0 },
++				{ 0.0, 	0.0625, 	1.0 },
++				{ 0.0, 	0.125, 	1.0 },
++				{ 0.0, 	0.1875, 	1.0 },
++				{ 0.0, 	0.25, 	1.0 },
++				{ 0.0, 	0.3125, 	1.0 },
++				{ 0.0, 	0.375, 	1.0 },
++				{ 0.0, 	0.4375, 	1.0 },
++				{ 0.0, 	0.5, 	1.0 },
++				{ 0.0, 	0.5625, 	1.0 },
++				{ 0.0, 	0.625, 	1.0 },
++				{ 0.0, 	0.6875, 	1.0 },
++				{ 0.0, 	0.75, 	1.0 },
++				{ 0.0, 	0.8125, 	1.0 },
++				{ 0.0, 	0.875, 	1.0 },
++				{ 0.0, 	0.9375, 	1.0 },
++				{ 0.0, 	1.0, 	1.0 },
++				{ 0.0625, 	1.0, 	0.9375 },
++				{ 0.125, 	1.0, 	0.875 },
++				{ 0.1875, 	1.0, 	0.8125 },
++				{ 0.25, 	1.0, 	0.75 },
++				{ 0.3125, 	1.0, 	0.6875 },
++				{ 0.375, 	1.0, 	0.625 },
++				{ 0.4375, 	1.0, 	0.5625 },
++				{ 0.5, 	1.0, 	0.5 },
++				{ 0.5625, 	1.0, 	0.4375 },
++				{ 0.625, 	1.0, 	0.375 },
++				{ 0.6875, 	1.0, 	0.3125 },
++				{ 0.75, 	1.0, 	0.25 },
++				{ 0.8125, 	1.0, 	0.1875 },
++				{ 0.875, 	1.0, 	0.125 },
++				{ 0.9375, 	1.0, 	0.0625 },
++				{ 1.0, 	1.0, 	0.0 },
++				{ 1.0, 	0.9375, 	0.0 },
++				{ 1.0, 	0.875, 	0.0 },
++				{ 1.0, 	0.8125, 	0.0 },
++				{ 1.0, 	0.75, 	0.0 },
++				{ 1.0, 	0.6875, 	0.0 },
++				{ 1.0, 	0.625, 	0.0 },
++				{ 1.0, 	0.5625, 	0.0 },
++				{ 1.0, 	0.5, 	0.0 },
++				{ 1.0, 	0.4375, 	0.0 },
++				{ 1.0, 	0.375, 	0.0 },
++				{ 1.0, 	0.3125, 	0.0 },
++				{ 1.0, 	0.25, 	0.0 },
++				{ 1.0, 	0.1875, 	0.0 },
++				{ 1.0, 	0.125, 	0.0 },
++				{ 1.0, 	0.0625, 	0.0 },
++				{ 1.0, 	0.0, 	0.0 },
++				{ 0.9375, 	0.0, 	0.0 },
++				{ 0.875, 	0.0, 	0.0 },
++				{ 0.8125, 	0.0, 	0.0 },
++				{ 0.75, 	0.0, 	0.0 },
++				{ 0.6875, 	0.0, 	0.0 },
++				{ 0.625, 	0.0, 	0.0 },
++				{ 0.5625, 	0.0, 	0.0 },
++				{ 0.5, 	0.0, 	0.0 }
++			};
++	}
++//-------------------------------------------------------
++	public void setPink()
++	{
++		d = new double[][]{
++				{ 0.1179, 	0.0, 	0.0 },
++				{ 0.1959, 	0.1029, 	0.1029 },
++				{ 0.2507, 	0.1455, 	0.1455 },
++				{ 0.2955, 	0.1782, 	0.1782 },
++				{ 0.3343, 	0.2057, 	0.2057 },
++				{ 0.3691, 	0.23, 	0.23 },
++				{ 0.4009, 	0.252, 	0.252 },
++				{ 0.4303, 	0.2722, 	0.2722 },
++				{ 0.4579, 	0.291, 	0.291 },
++				{ 0.4839, 	0.3086, 	0.3086 },
++				{ 0.5085, 	0.3253, 	0.3253 },
++				{ 0.532, 	0.3412, 	0.3412 },
++				{ 0.5546, 	0.3563, 	0.3563 },
++				{ 0.5762, 	0.3709, 	0.3709 },
++				{ 0.5971, 	0.3849, 	0.3849 },
++				{ 0.6172, 	0.3984, 	0.3984 },
++				{ 0.6367, 	0.4115, 	0.4115 },
++				{ 0.6557, 	0.4241, 	0.4241 },
++				{ 0.6741, 	0.4364, 	0.4364 },
++				{ 0.692, 	0.4484, 	0.4484 },
++				{ 0.7094, 	0.46, 	0.46 },
++				{ 0.7265, 	0.4714, 	0.4714 },
++				{ 0.7431, 	0.4825, 	0.4825 },
++				{ 0.7594, 	0.4933, 	0.4933 },
++				{ 0.7664, 	0.5175, 	0.504 },
++				{ 0.7732, 	0.5407, 	0.5143 },
++				{ 0.78, 	0.5628, 	0.5245 },
++				{ 0.7868, 	0.5842, 	0.5345 },
++				{ 0.7935, 	0.6048, 	0.5443 },
++				{ 0.8001, 	0.6247, 	0.554 },
++				{ 0.8067, 	0.644, 	0.5634 },
++				{ 0.8133, 	0.6627, 	0.5727 },
++				{ 0.8197, 	0.6809, 	0.5819 },
++				{ 0.8262, 	0.6986, 	0.5909 },
++				{ 0.8325, 	0.7159, 	0.5998 },
++				{ 0.8389, 	0.7328, 	0.6086 },
++				{ 0.8452, 	0.7493, 	0.6172 },
++				{ 0.8514, 	0.7655, 	0.6257 },
++				{ 0.8576, 	0.7813, 	0.6341 },
++				{ 0.8637, 	0.7968, 	0.6424 },
++				{ 0.8698, 	0.812, 	0.6506 },
++				{ 0.8759, 	0.827, 	0.6587 },
++				{ 0.8819, 	0.8416, 	0.6667 },
++				{ 0.8879, 	0.856, 	0.6746 },
++				{ 0.8938, 	0.8702, 	0.6824 },
++				{ 0.8997, 	0.8842, 	0.6901 },
++				{ 0.9056, 	0.8979, 	0.6977 },
++				{ 0.9114, 	0.9114, 	0.7052 },
++				{ 0.9172, 	0.9172, 	0.7272 },
++				{ 0.923, 	0.923, 	0.7485 },
++				{ 0.9287, 	0.9287, 	0.7692 },
++				{ 0.9344, 	0.9344, 	0.7893 },
++				{ 0.94, 	0.94, 	0.809 },
++				{ 0.9456, 	0.9456, 	0.8282 },
++				{ 0.9512, 	0.9512, 	0.8469 },
++				{ 0.9567, 	0.9567, 	0.8653 },
++				{ 0.9623, 	0.9623, 	0.8832 },
++				{ 0.9677, 	0.9677, 	0.9008 },
++				{ 0.9732, 	0.9732, 	0.9181 },
++				{ 0.9786, 	0.9786, 	0.9351 },
++				{ 0.984, 	0.984, 	0.9517 },
++				{ 0.9894, 	0.9894, 	0.9681 },
++				{ 0.9947, 	0.9947, 	0.9842 },
++				{ 1.0, 	1.0, 	1.0 }
++			};
++	}
++//-------------------------------------------------------
++	public void setSpring()
++	{
++		d = new double[][]{
++				{ 1.0, 	0.0, 	1.0 },
++				{ 1.0, 	0.0159, 	0.9841 },
++				{ 1.0, 	0.0317, 	0.9683 },
++				{ 1.0, 	0.0476, 	0.9524 },
++				{ 1.0, 	0.0635, 	0.9365 },
++				{ 1.0, 	0.0794, 	0.9206 },
++				{ 1.0, 	0.0952, 	0.9048 },
++				{ 1.0, 	0.1111, 	0.8889 },
++				{ 1.0, 	0.127, 	0.873 },
++				{ 1.0, 	0.1429, 	0.8571 },
++				{ 1.0, 	0.1587, 	0.8413 },
++				{ 1.0, 	0.1746, 	0.8254 },
++				{ 1.0, 	0.1905, 	0.8095 },
++				{ 1.0, 	0.2063, 	0.7937 },
++				{ 1.0, 	0.2222, 	0.7778 },
++				{ 1.0, 	0.2381, 	0.7619 },
++				{ 1.0, 	0.254, 	0.746 },
++				{ 1.0, 	0.2698, 	0.7302 },
++				{ 1.0, 	0.2857, 	0.7143 },
++				{ 1.0, 	0.3016, 	0.6984 },
++				{ 1.0, 	0.3175, 	0.6825 },
++				{ 1.0, 	0.3333, 	0.6667 },
++				{ 1.0, 	0.3492, 	0.6508 },
++				{ 1.0, 	0.3651, 	0.6349 },
++				{ 1.0, 	0.381, 	0.619 },
++				{ 1.0, 	0.3968, 	0.6032 },
++				{ 1.0, 	0.4127, 	0.5873 },
++				{ 1.0, 	0.4286, 	0.5714 },
++				{ 1.0, 	0.4444, 	0.5556 },
++				{ 1.0, 	0.4603, 	0.5397 },
++				{ 1.0, 	0.4762, 	0.5238 },
++				{ 1.0, 	0.4921, 	0.5079 },
++				{ 1.0, 	0.5079, 	0.4921 },
++				{ 1.0, 	0.5238, 	0.4762 },
++				{ 1.0, 	0.5397, 	0.4603 },
++				{ 1.0, 	0.5556, 	0.4444 },
++				{ 1.0, 	0.5714, 	0.4286 },
++				{ 1.0, 	0.5873, 	0.4127 },
++				{ 1.0, 	0.6032, 	0.3968 },
++				{ 1.0, 	0.619, 	0.381 },
++				{ 1.0, 	0.6349, 	0.3651 },
++				{ 1.0, 	0.6508, 	0.3492 },
++				{ 1.0, 	0.6667, 	0.3333 },
++				{ 1.0, 	0.6825, 	0.3175 },
++				{ 1.0, 	0.6984, 	0.3016 },
++				{ 1.0, 	0.7143, 	0.2857 },
++				{ 1.0, 	0.7302, 	0.2698 },
++				{ 1.0, 	0.746, 	0.254 },
++				{ 1.0, 	0.7619, 	0.2381 },
++				{ 1.0, 	0.7778, 	0.2222 },
++				{ 1.0, 	0.7937, 	0.2063 },
++				{ 1.0, 	0.8095, 	0.1905 },
++				{ 1.0, 	0.8254, 	0.1746 },
++				{ 1.0, 	0.8413, 	0.1587 },
++				{ 1.0, 	0.8571, 	0.1429 },
++				{ 1.0, 	0.873, 	0.127 },
++				{ 1.0, 	0.8889, 	0.1111 },
++				{ 1.0, 	0.9048, 	0.0952 },
++				{ 1.0, 	0.9206, 	0.0794 },
++				{ 1.0, 	0.9365, 	0.0635 },
++				{ 1.0, 	0.9524, 	0.0476 },
++				{ 1.0, 	0.9683, 	0.0317 },
++				{ 1.0, 	0.9841, 	0.0159 },
++				{ 1.0, 	1.0, 	0.0 }
++			};
++	}
++//-------------------------------------------------------
++	public void setSummer()
++	{
++		d = new double[][]{
++				{ 0.0, 	0.5, 	0.4 },
++				{ 0.0159, 	0.5079, 	0.4 },
++				{ 0.0317, 	0.5159, 	0.4 },
++				{ 0.0476, 	0.5238, 	0.4 },
++				{ 0.0635, 	0.5317, 	0.4 },
++				{ 0.0794, 	0.5397, 	0.4 },
++				{ 0.0952, 	0.5476, 	0.4 },
++				{ 0.1111, 	0.5556, 	0.4 },
++				{ 0.127, 	0.5635, 	0.4 },
++				{ 0.1429, 	0.5714, 	0.4 },
++				{ 0.1587, 	0.5794, 	0.4 },
++				{ 0.1746, 	0.5873, 	0.4 },
++				{ 0.1905, 	0.5952, 	0.4 },
++				{ 0.2063, 	0.6032, 	0.4 },
++				{ 0.2222, 	0.6111, 	0.4 },
++				{ 0.2381, 	0.619, 	0.4 },
++				{ 0.254, 	0.627, 	0.4 },
++				{ 0.2698, 	0.6349, 	0.4 },
++				{ 0.2857, 	0.6429, 	0.4 },
++				{ 0.3016, 	0.6508, 	0.4 },
++				{ 0.3175, 	0.6587, 	0.4 },
++				{ 0.3333, 	0.6667, 	0.4 },
++				{ 0.3492, 	0.6746, 	0.4 },
++				{ 0.3651, 	0.6825, 	0.4 },
++				{ 0.381, 	0.6905, 	0.4 },
++				{ 0.3968, 	0.6984, 	0.4 },
++				{ 0.4127, 	0.7063, 	0.4 },
++				{ 0.4286, 	0.7143, 	0.4 },
++				{ 0.4444, 	0.7222, 	0.4 },
++				{ 0.4603, 	0.7302, 	0.4 },
++				{ 0.4762, 	0.7381, 	0.4 },
++				{ 0.4921, 	0.746, 	0.4 },
++				{ 0.5079, 	0.754, 	0.4 },
++				{ 0.5238, 	0.7619, 	0.4 },
++				{ 0.5397, 	0.7698, 	0.4 },
++				{ 0.5556, 	0.7778, 	0.4 },
++				{ 0.5714, 	0.7857, 	0.4 },
++				{ 0.5873, 	0.7937, 	0.4 },
++				{ 0.6032, 	0.8016, 	0.4 },
++				{ 0.619, 	0.8095, 	0.4 },
++				{ 0.6349, 	0.8175, 	0.4 },
++				{ 0.6508, 	0.8254, 	0.4 },
++				{ 0.6667, 	0.8333, 	0.4 },
++				{ 0.6825, 	0.8413, 	0.4 },
++				{ 0.6984, 	0.8492, 	0.4 },
++				{ 0.7143, 	0.8571, 	0.4 },
++				{ 0.7302, 	0.8651, 	0.4 },
++				{ 0.746, 	0.873, 	0.4 },
++				{ 0.7619, 	0.881, 	0.4 },
++				{ 0.7778, 	0.8889, 	0.4 },
++				{ 0.7937, 	0.8968, 	0.4 },
++				{ 0.8095, 	0.9048, 	0.4 },
++				{ 0.8254, 	0.9127, 	0.4 },
++				{ 0.8413, 	0.9206, 	0.4 },
++				{ 0.8571, 	0.9286, 	0.4 },
++				{ 0.873, 	0.9365, 	0.4 },
++				{ 0.8889, 	0.9444, 	0.4 },
++				{ 0.9048, 	0.9524, 	0.4 },
++				{ 0.9206, 	0.9603, 	0.4 },
++				{ 0.9365, 	0.9683, 	0.4 },
++				{ 0.9524, 	0.9762, 	0.4 },
++				{ 0.9683, 	0.9841, 	0.4 },
++				{ 0.9841, 	0.9921, 	0.4 },
++				{ 1.0, 	1.0, 	0.4 }
++			};
++	}
++//-------------------------------------------------------
++	public void setWinter()
++	{
++		d = new double[][]{
++				{ 0.0, 	0.0, 	1.0 },
++				{ 0.0, 	0.0159, 	0.9921 },
++				{ 0.0, 	0.0317, 	0.9841 },
++				{ 0.0, 	0.0476, 	0.9762 },
++				{ 0.0, 	0.0635, 	0.9683 },
++				{ 0.0, 	0.0794, 	0.9603 },
++				{ 0.0, 	0.0952, 	0.9524 },
++				{ 0.0, 	0.1111, 	0.9444 },
++				{ 0.0, 	0.127, 	0.9365 },
++				{ 0.0, 	0.1429, 	0.9286 },
++				{ 0.0, 	0.1587, 	0.9206 },
++				{ 0.0, 	0.1746, 	0.9127 },
++				{ 0.0, 	0.1905, 	0.9048 },
++				{ 0.0, 	0.2063, 	0.8968 },
++				{ 0.0, 	0.2222, 	0.8889 },
++				{ 0.0, 	0.2381, 	0.881 },
++				{ 0.0, 	0.254, 	0.873 },
++				{ 0.0, 	0.2698, 	0.8651 },
++				{ 0.0, 	0.2857, 	0.8571 },
++				{ 0.0, 	0.3016, 	0.8492 },
++				{ 0.0, 	0.3175, 	0.8413 },
++				{ 0.0, 	0.3333, 	0.8333 },
++				{ 0.0, 	0.3492, 	0.8254 },
++				{ 0.0, 	0.3651, 	0.8175 },
++				{ 0.0, 	0.381, 	0.8095 },
++				{ 0.0, 	0.3968, 	0.8016 },
++				{ 0.0, 	0.4127, 	0.7937 },
++				{ 0.0, 	0.4286, 	0.7857 },
++				{ 0.0, 	0.4444, 	0.7778 },
++				{ 0.0, 	0.4603, 	0.7698 },
++				{ 0.0, 	0.4762, 	0.7619 },
++				{ 0.0, 	0.4921, 	0.754 },
++				{ 0.0, 	0.5079, 	0.746 },
++				{ 0.0, 	0.5238, 	0.7381 },
++				{ 0.0, 	0.5397, 	0.7302 },
++				{ 0.0, 	0.5556, 	0.7222 },
++				{ 0.0, 	0.5714, 	0.7143 },
++				{ 0.0, 	0.5873, 	0.7063 },
++				{ 0.0, 	0.6032, 	0.6984 },
++				{ 0.0, 	0.619, 	0.6905 },
++				{ 0.0, 	0.6349, 	0.6825 },
++				{ 0.0, 	0.6508, 	0.6746 },
++				{ 0.0, 	0.6667, 	0.6667 },
++				{ 0.0, 	0.6825, 	0.6587 },
++				{ 0.0, 	0.6984, 	0.6508 },
++				{ 0.0, 	0.7143, 	0.6429 },
++				{ 0.0, 	0.7302, 	0.6349 },
++				{ 0.0, 	0.746, 	0.627 },
++				{ 0.0, 	0.7619, 	0.619 },
++				{ 0.0, 	0.7778, 	0.6111 },
++				{ 0.0, 	0.7937, 	0.6032 },
++				{ 0.0, 	0.8095, 	0.5952 },
++				{ 0.0, 	0.8254, 	0.5873 },
++				{ 0.0, 	0.8413, 	0.5794 },
++				{ 0.0, 	0.8571, 	0.5714 },
++				{ 0.0, 	0.873, 	0.5635 },
++				{ 0.0, 	0.8889, 	0.5556 },
++				{ 0.0, 	0.9048, 	0.5476 },
++				{ 0.0, 	0.9206, 	0.5397 },
++				{ 0.0, 	0.9365, 	0.5317 },
++				{ 0.0, 	0.9524, 	0.5238 },
++				{ 0.0, 	0.9683, 	0.5159 },
++				{ 0.0, 	0.9841, 	0.5079 },
++				{ 0.0, 	1.0, 	0.5 }
++			};
++	}	
++//-------------------------------------------------------
++	public void getRGB(int index, RGB rgb)
++	{
++		rgb.setR( (float) d[index][0] );
++		rgb.setG( (float) d[index][1] );
++		rgb.setB( (float) d[index][2] );
++	}	
++//-------------------------------------------------------
++} // end class colorMap
++/////////////////////////////////////////////////////////
++class RGB
++{
++	private float R,G,B;
++//-------------------------------------------------------
++	public void setR(float value) {this.R = value;}
++	public void setG(float value) {this.G = value;}
++	public void setB(float value) {this.B = value;}
++	public float getR() { return R;}
++	public float getG() { return G;}
++	public float getB() { return B;}
++//-------------------------------------------------------
++} //end class RGB	
++/////////////////////////////////////////////////////////
+\ No newline at end of file
+Index: ../trunk-jpl/src/android/ISSM/src/com/example/issm/MyGLSurfaceView.java
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/src/com/example/issm/MyGLSurfaceView.java	(revision 14167)
++++ ../trunk-jpl/src/android/ISSM/src/com/example/issm/MyGLSurfaceView.java	(revision 14168)
+@@ -10,106 +10,31 @@
+ class MyGLSurfaceView extends GLSurfaceView 
+ {
+ 	private MyGLRenderer mRend;
+-	private int iter = 0;
+-	DoubleBuffer db;
+-	int size;
++	private DoubleBuffer db;
++	private int size;
+ 	double vmax = 0, vmin=0;
+-	final int rowNumber = 64;
+-	double[][] colorMap =  {
+-		{	1.0000,         0,         0 },
+-		{   1.0000,    0.0938    ,     0 },
+-		{    1.0000,    0.1875    ,     0},
+-		{   1.0000,    0.2812    ,     0},
+-		{   1.0000,    0.3750    ,     0},
+-		{   1.0000,    0.4688   ,      0},
+-		{   1.0000,    0.5625   ,      0},
+-		{   1.0000,    0.6562   ,      0},
+-		{   1.0000,    0.7500   ,      0},
+-		{   1.0000,    0.8438   ,      0},
+-		{   1.0000,    0.9375 ,        0},
+-		{   0.9688,    1.0000 ,        0},
+-		{   0.8750,    1.0000  ,       0},
+-		{   0.7812,    1.0000  ,       0},
+-		{   0.6875,    1.0000 ,        0},
+-		{   0.5938,    1.0000 ,        0},
+-		{   0.5000,    1.0000 ,        0},
+-		{   0.4062,    1.0000 ,        0},
+-		{   0.3125,   1.0000 ,        0},
+-		{   0.2188,   1.0000 ,        0},
+-		{   0.1250,  1.0000  ,       0},
+-		{   0.0312,    1.0000,         0},
+-		{        0,    1.0000,    0.0625},
+-		{        0,    1.0000,    0.1562},
+-		{        0,    1.0000,    0.2500},
+-		{       0,    1.0000,    0.3438},
+-		{        0,    1.0000,    0.4375},
+-		{        0,    1.0000,    0.5312},
+-		{        0,    1.0000,    0.6250},
+-		{        0,    1.0000,    0.7188},
+-		{        0,    1.0000,    0.8125},
+-		{        0,    1.0000,   0.9062},
+-		{        0,    1.0000,    1.0000},
+-		{        0,    0.9062,   1.0000},
+-		{        0,    0.8125,    1.0000},
+-		{        0,    0.7188,    1.0000},
+-		{        0,    0.6250,   1.0000},
+-		{        0,    0.5312,    1.0000},
+-		{        0,    0.4375,    1.0000},
+-		{        0,    0.3438,    1.0000},
+-		{        0,    0.2500,    1.0000},
+-		{        0,    0.1562,    1.0000},
+-		{        0,    0.0625,    1.0000},
+-		{   0.0312,         0,    1.0000},
+-		{   0.1250,         0,    1.0000},
+-		{   0.2188,         0,    1.0000},
+-		{   0.3125,         0,    1.0000},
+-		{   0.4062,         0,    1.0000},
+-		{   0.5000,         0,    1.0000},
+-		{   0.5938,         0,    1.0000},
+-		{   0.6875,         0,    1.0000},
+-		{   0.7812,         0,    1.0000},
+-		{   0.8750,         0,    1.0000},
+-		{   0.9688,         0,    1.0000},
+-		{   1.0000,         0,    0.9375},
+-		{   1.0000,         0,    0.8438},
+-		{   1.0000,         0,    0.7500},
+-		{   1.0000,         0,    0.6562},
+-		{   1.0000,         0,    0.5625},
+-		{   1.0000,         0,    0.4688},
+-		{   1.0000,         0,    0.3750},
+-		{   1.0000,         0,   0.2812},
+-		{   1.0000,         0,    0.1875},
+-		{   1.0000,         0,    0.0938}};
+-	float[][] colorMapInFloat;
+-    public MyGLSurfaceView(Context context, DoubleBuffer db, int size) 
++	final int rowNumber = 64, firstVelocity = 9;
++	ColorMap colorMap;
++    public MyGLSurfaceView(Context context, DoubleBuffer db, int size, ColorMap colorMap) 
+     {
+         super(context);
+-
+         // Create an OpenGL ES 2.0 context.
+         setEGLContextClientVersion(2);
+         this.db = db;
+         this.size = size;
+-        colorMapInFloat = new float[64][3];
+-        
+-        for (int i = 0 ; i < 64; i++)
+-        {
+-        	for (int j = 0 ; j < 3; j++)
+-        	{
+-        		colorMapInFloat[i][j] = (float) colorMap[i][j];
+-        	}
+-        }
+-        vmin = db.get(9);
+-        findMinMaxVelocity();
+-        System.out.println("max" +vmax +"  "+ "min"+vmin ); 
++        this.colorMap = colorMap;
++        vmin = db.get(firstVelocity);
++        findMinMaxVelocity(); 
+         intialize();
+     }
+     private void intialize()
+     {
+-    	final int NMAX_TRIANGLES = 2000;
+         final int MAX_VERTICES = 21;
+         float f[][] = new float[size][MAX_VERTICES];
+-        int n, random;
++        //indexes prefer to velocity at each vertices of triangles.
++        int index1, index2, index3;
+         final int SCALE_FACTOR = 700000;
++        RGB rgb = new RGB();
+ 		for (int i = 0; i < size; i++)
+ 		{
+ 				f[i][0] = (float)db.get(12*i+0)/SCALE_FACTOR;
+@@ -126,21 +51,24 @@
+ 				f[i][13] = 1.0f;
+ 				f[i][20] = 1.0f;
+ 				
+-				int index1 = getRowColor(db.get(12*i+9));
+-				int index2 = getRowColor(db.get(12*i+10));
+-				int index3 = getRowColor(db.get(12*i+11));
++				index1 = getRowColor(db.get(12*i+9));
++				index2 = getRowColor(db.get(12*i+10));
++				index3 = getRowColor(db.get(12*i+11));
+ 				
+-				float r1 = colorMapInFloat[index1][0];
+-				float g1 = colorMapInFloat[index1][1];
+-				float b1 = colorMapInFloat[index1][2];
++				colorMap.getRGB(index1, rgb);
++				float r1 = rgb.getR();
++				float g1 = rgb.getG();
++				float b1 = rgb.getB();
+ 				
+-				float r2 = colorMapInFloat[index2][0];
+-				float g2 = colorMapInFloat[index2][1];
+-				float b2 = colorMapInFloat[index2][2];
++				colorMap.getRGB(index2, rgb);
++				float r2 = rgb.getR();
++				float g2 = rgb.getG();
++				float b2 = rgb.getB();
+ 				
+-				float r3 = colorMapInFloat[index3][0];
+-				float g3 = colorMapInFloat[index3][1];
+-				float b3 = colorMapInFloat[index3][2];
++				colorMap.getRGB(index3, rgb);
++				float r3 = rgb.getR();
++				float g3 = rgb.getG();
++				float b3 = rgb.getB();
+ 				
+ 				
+ 				f[i][3] = r1;
+@@ -175,19 +103,9 @@
+     		else continue; 
+     	}
+     	
+-    }
+-    private float getData()
+-    {
+-    	float result = (float) db.get(iter)/1000000;
+-    	//System.out.println("result" + result);
+-    	if(iter < size*12) iter++;
+-    	else iter = 0;
+-    	return result;
+-    }
+-    
++    }  
+     private int getRowColor(double velocity)
+     {
+-    	//velocity = 0;
+     	double alpha=(vmax-velocity)/(vmax-vmin) ;
+     	int row = (int) (alpha * (rowNumber-1));
+     	return row;
+Index: ../trunk-jpl/src/android/ISSM/res/drawable-hdpi/issmlogo.jpg
+===================================================================
+Cannot display: file marked as a binary type.
+svn:mime-type = application/octet-stream
+Index: ../trunk-jpl/src/android/ISSM/res/drawable-hdpi/issmlogo.jpg
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/res/drawable-hdpi/issmlogo.jpg	(revision 14167)
++++ ../trunk-jpl/src/android/ISSM/res/drawable-hdpi/issmlogo.jpg	(revision 14168)
+
+Property changes on: ../trunk-jpl/src/android/ISSM/res/drawable-hdpi/issmlogo.jpg
+___________________________________________________________________
+Added: svn:mime-type
+## -0,0 +1 ##
++application/octet-stream
+Index: ../trunk-jpl/src/android/ISSM/res/menu/issm_menu.xml
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/res/menu/issm_menu.xml	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/res/menu/issm_menu.xml	(revision 14168)
+@@ -0,0 +1,36 @@
++    <menu xmlns:android="http://schemas.android.com/apk/res/android">
++        <item android:id="@+id/menu_color"
++          android:icon="@drawable/ic_color"
++          android:title="Color" >
++          <menu>
++          	<item android:id="@+id/cl_hsv"
++          	      android:title="HSV" />
++          	<item android:id="@+id/cl_autumn"
++          	      android:title="Autumn" />
++          	<item android:id="@+id/cl_bone"
++          	      android:title="Bone" />                
++          	<item android:id="@+id/cl_cool"
++          	      android:title="Cool" />
++          	<item android:id="@+id/cl_copper"
++          	      android:title="Copper" />
++          	<item android:id="@+id/cl_gray"
++          	      android:title="Gray" />
++          	<item android:id="@+id/cl_hot"
++          	      android:title="Hot" />
++          	<item android:id="@+id/cl_jet"
++          	      android:title="Jet" />
++          	<item android:id="@+id/cl_pink"
++          	      android:title="Pink" />
++          	<item android:id="@+id/cl_spring"
++          	      android:title="Spring" />
++          	<item android:id="@+id/cl_winter"
++          	      android:title="Winter" />
++          	<item android:id="@+id/cl_summer"
++          	      android:title="Summer" />                                                      
++          </menu>
++     </item>   
++ 
++    	<item android:id="@+id/menu_about"
++          android:icon="@drawable/ic_about"
++          android:title="About" />
++    	</menu>
+\ No newline at end of file
+Index: ../trunk-jpl/src/android/ISSM/res/drawable-mdpi/greenland.png
+===================================================================
+Cannot display: file marked as a binary type.
+svn:mime-type = application/octet-stream
+Index: ../trunk-jpl/src/android/ISSM/res/drawable-mdpi/greenland.png
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/res/drawable-mdpi/greenland.png	(revision 14167)
++++ ../trunk-jpl/src/android/ISSM/res/drawable-mdpi/greenland.png	(revision 14168)
+
+Property changes on: ../trunk-jpl/src/android/ISSM/res/drawable-mdpi/greenland.png
+___________________________________________________________________
+Added: svn:mime-type
+## -0,0 +1 ##
++application/octet-stream
+Index: ../trunk-jpl/src/android/ISSM/res/drawable-mdpi/ic_about.jpg
+===================================================================
+Cannot display: file marked as a binary type.
+svn:mime-type = application/octet-stream
+Index: ../trunk-jpl/src/android/ISSM/res/drawable-mdpi/ic_about.jpg
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/res/drawable-mdpi/ic_about.jpg	(revision 14167)
++++ ../trunk-jpl/src/android/ISSM/res/drawable-mdpi/ic_about.jpg	(revision 14168)
+
+Property changes on: ../trunk-jpl/src/android/ISSM/res/drawable-mdpi/ic_about.jpg
+___________________________________________________________________
+Added: svn:mime-type
+## -0,0 +1 ##
++application/octet-stream
+Index: ../trunk-jpl/src/android/ISSM/res/drawable-mdpi/ic_color.jpg
+===================================================================
+Cannot display: file marked as a binary type.
+svn:mime-type = application/octet-stream
+Index: ../trunk-jpl/src/android/ISSM/res/drawable-mdpi/ic_color.jpg
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/res/drawable-mdpi/ic_color.jpg	(revision 14167)
++++ ../trunk-jpl/src/android/ISSM/res/drawable-mdpi/ic_color.jpg	(revision 14168)
+
+Property changes on: ../trunk-jpl/src/android/ISSM/res/drawable-mdpi/ic_color.jpg
+___________________________________________________________________
+Added: svn:mime-type
+## -0,0 +1 ##
++application/octet-stream
+Index: ../trunk-jpl/src/android/ISSM/res/drawable-mdpi/antarctica.png
+===================================================================
+Cannot display: file marked as a binary type.
+svn:mime-type = application/octet-stream
+Index: ../trunk-jpl/src/android/ISSM/res/drawable-mdpi/antarctica.png
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/res/drawable-mdpi/antarctica.png	(revision 14167)
++++ ../trunk-jpl/src/android/ISSM/res/drawable-mdpi/antarctica.png	(revision 14168)
+
+Property changes on: ../trunk-jpl/src/android/ISSM/res/drawable-mdpi/antarctica.png
+___________________________________________________________________
+Added: svn:mime-type
+## -0,0 +1 ##
++application/octet-stream
+Index: ../trunk-jpl/src/android/ISSM/res/layout/activity_mapselection.xml
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/res/layout/activity_mapselection.xml	(revision 14167)
++++ ../trunk-jpl/src/android/ISSM/res/layout/activity_mapselection.xml	(revision 14168)
+@@ -1,27 +1,27 @@
+ 
+     <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+         android:layout_width="fill_parent"
+-        android:layout_height="fill_parent" >
++        android:layout_height="fill_parent"
++	android:background="@drawable/issmlogo" >
+ 
+-        <Button
++	<ImageButton
+             android:id="@+id/button1"
+             style="@layout/activity_mapselection"
+             android:layout_width="wrap_content"
+             android:layout_height="wrap_content"
+             android:layout_alignParentBottom="true"
+             android:layout_alignParentLeft="true"
+-            android:layout_marginBottom="33dp"
+-            android:layout_marginLeft="32dp"
+-            android:text="Greenland" />
++            android:layout_marginBottom="21dp"
++            android:layout_marginLeft="46dp"
++            android:src="@drawable/greenland" />
+ 
+-        <Button
++        <ImageButton
+             android:id="@+id/button2"
+             android:layout_width="wrap_content"
+             android:layout_height="wrap_content"
+-            android:layout_alignBaseline="@+id/button1"
+             android:layout_alignBottom="@+id/button1"
+-            android:layout_marginLeft="24dp"
+-            android:layout_toRightOf="@+id/button1"
+-            android:text="Antarctica" />
++            android:layout_alignParentRight="true"
++            android:layout_marginRight="34dp"
++            android:src="@drawable/antarctica" />
+ 
+-    </RelativeLayout>
++           </RelativeLayout>
Index: /issm/oecreview/Archive/14064-14311/ISSM-14168-14169.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14168-14169.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14168-14169.diff	(revision 14312)
@@ -0,0 +1,12 @@
+Index: ../trunk-jpl/test/Archives/Archive428.nc
+===================================================================
+Cannot display: file marked as a binary type.
+svn:mime-type = application/octet-stream
+Index: ../trunk-jpl/test/Archives/Archive429.nc
+===================================================================
+Cannot display: file marked as a binary type.
+svn:mime-type = application/octet-stream
+Index: ../trunk-jpl/test/Archives/Archive430.nc
+===================================================================
+Cannot display: file marked as a binary type.
+svn:mime-type = application/octet-stream
Index: /issm/oecreview/Archive/14064-14311/ISSM-14169-14170.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14169-14170.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14169-14170.diff	(revision 14312)
@@ -0,0 +1,64 @@
+Index: ../trunk-jpl/src/m/classes/inversion.m
+===================================================================
+--- ../trunk-jpl/src/m/classes/inversion.m	(revision 14169)
++++ ../trunk-jpl/src/m/classes/inversion.m	(revision 14170)
+@@ -30,6 +30,30 @@
+ 			switch nargin
+ 				case 0
+ 					obj=setdefaultparameters(obj);
++				case 1
++					if isa(varargin{1},'taoinversion'),
++						disp('converting taoinversion to inversion');
++						in=varargin{1};
++						obj.iscontrol                   = in.iscontrol;
++						obj.tao                         = 1;
++						obj.incomplete_adjoint          = in.incomplete_adjoint;
++						obj.control_parameters          = in.control_parameters;
++						obj.nsteps                      = in.nsteps;
++						obj.maxiter_per_step            = 10*ones(in.nsteps,1);
++						obj.cost_functions              = repmat(in.cost_functions,in.nsteps,1);
++						obj.cost_functions_coefficients = in.cost_functions_coefficients;
++						obj.gradient_scaling            = 100*ones(in.nsteps,1);
++						obj.cost_function_threshold     = NaN;
++						obj.min_parameters              = in.min_parameters;
++						obj.max_parameters              = in.max_parameters;
++						obj.step_threshold              = .99*ones(in.nsteps,1);
++						obj.vx_obs                      = in.vx_obs;
++						obj.gradient_only               = 0;
++						obj.vy_obs                      = in.vy_obs;
++						obj.vz_obs                      = in.vz_obs;
++						obj.vel_obs                     = in.vel_obs;
++						obj.thickness_obs               = in.thickness_obs;
++					end
+ 				otherwise
+ 					error('constructor not supported');
+ 			end
+Index: ../trunk-jpl/src/m/classes/taoinversion.m
+===================================================================
+--- ../trunk-jpl/src/m/classes/taoinversion.m	(revision 14169)
++++ ../trunk-jpl/src/m/classes/taoinversion.m	(revision 14170)
+@@ -24,6 +24,24 @@
+ 			switch nargin
+ 				case 0
+ 					obj=setdefaultparameters(obj);
++				case 1
++					if isa(varargin{1},'inversion'),
++						disp('converting inversion to taoinversion');
++						in=varargin{1};
++						obj.iscontrol                   = in.iscontrol;
++						obj.incomplete_adjoint          = in.incomplete_adjoint;
++						obj.control_parameters          = in.control_parameters;
++						obj.nsteps                      = in.nsteps;
++						obj.cost_functions              = in.cost_functions(1,:); %Keep first line only
++						obj.cost_functions_coefficients = in.cost_functions_coefficients;
++						obj.min_parameters              = in.min_parameters;
++						obj.max_parameters              = in.max_parameters;
++						obj.vx_obs                      = in.vx_obs;
++						obj.vy_obs                      = in.vy_obs;
++						obj.vz_obs                      = in.vz_obs;
++						obj.vel_obs                     = in.vel_obs;
++						obj.thickness_obs               = in.thickness_obs;
++					end
+ 				otherwise
+ 					error('constructor not supported');
+ 			end
Index: /issm/oecreview/Archive/14064-14311/ISSM-14170-14171.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14170-14171.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14170-14171.diff	(revision 14312)
@@ -0,0 +1,55 @@
+Index: ../trunk-jpl/m4/issm_options.m4
+===================================================================
+--- ../trunk-jpl/m4/issm_options.m4	(revision 14170)
++++ ../trunk-jpl/m4/issm_options.m4	(revision 14171)
+@@ -1044,9 +1044,20 @@
+ 
+ 		dnl check that --with-fortran-lib may have been provided
+ 		if test -n "$FORTRAN_LIB" ; then
+-			FORTRANLIB="$FORTRAN_LIB"
+-			AC_DEFINE([_HAVE_FORTRAN_],[1],[with FORTRAN in ISSM src])
+-			AC_SUBST([FORTRANLIB])
++			dnl check that library provided EXISTS!
++			if test -f "$FORTRAN_LIB"; then
++				FORTRANLIB="$FORTRAN_LIB"
++				AC_DEFINE([_HAVE_FORTRAN_],[1],[with FORTRAN in ISSM src])
++				AC_SUBST([FORTRANLIB])
++			else
++			 if test "x$HAVE_MPI" = "xyes"; then
++				FORTRANLIB=$(mpif77 -print-file-name="libgfortran.a")
++				if test -f "$FORTRANLIB"; then
++					 AC_MSG_ERROR([fortran library provided ($FORTRAN_LIB) does not exist, MPI suggests the following library: $FORTRANLIB]);
++				fi
++			 fi
++				AC_MSG_ERROR([frtran library provided ($FORTRAN_LIB$) does not exist!]);
++			fi
+ 		fi
+ 		AC_MSG_RESULT(done)
+ 	fi
+@@ -1058,12 +1069,21 @@
+ 	  [GRAPHICS_LIB=$withval],[GRAPHICS_LIB=""])
+ 
+ 	dnl check that --with-graphics-lib may have been provided
++	
+ 	if test -n "$GRAPHICS_LIB" ; then
+-		HAVE_GRAPHICS=yes
+-		GRAPHICSLIB="$GRAPHICS_LIB"
+-
+-		AC_DEFINE([_HAVE_GRAPHICS_],[1],[with GRAPHICS in ISSM src])
+-		AC_SUBST([GRAPHICSLIB])
++		dnl check that library provided EXISTS!
++		if test -f "$GRAPHICS_LIB"; then
++			HAVE_GRAPHICS=yes
++			GRAPHICSLIB="$GRAPHICS_LIB"
++			AC_DEFINE([_HAVE_GRAPHICS_],[1],[with GRAPHICS in ISSM src])
++			AC_SUBST([GRAPHICSLIB])
++		else
++			if test -f "$PETSC_ROOT/conf/petscvariables"; then
++				GRAPHICSLIB=$(cat $PETSC_ROOT/conf/petscvariables | grep X_LIB)
++				AC_MSG_ERROR([graphics library provided ($GRAPHICS_LIB) does not exist, PETSc suggests the following library: $GRAPHICSLIB]);
++			fi
++			AC_MSG_ERROR([graphics library provided ($GRAPHICS_LIB$) does not exist!]);
++		fi
+ 	fi
+ 	AC_MSG_RESULT(done)
+ 	dnl }}}
Index: /issm/oecreview/Archive/14064-14311/ISSM-14171-14172.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14171-14172.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14171-14172.diff	(revision 14312)
@@ -0,0 +1,14 @@
+Index: ../trunk-jpl/m4/issm_options.m4
+===================================================================
+--- ../trunk-jpl/m4/issm_options.m4	(revision 14171)
++++ ../trunk-jpl/m4/issm_options.m4	(revision 14172)
+@@ -1072,7 +1072,8 @@
+ 	
+ 	if test -n "$GRAPHICS_LIB" ; then
+ 		dnl check that library provided EXISTS!
+-		if test -f "$GRAPHICS_LIB"; then
++		GRAPHICS_DIR=$(echo $GRAPHICS_LIB | sed -e "s/-L//g" | awk '{print $[1]}')
++		if test -d "$GRAPHICS_DIR"; then
+ 			HAVE_GRAPHICS=yes
+ 			GRAPHICSLIB="$GRAPHICS_LIB"
+ 			AC_DEFINE([_HAVE_GRAPHICS_],[1],[with GRAPHICS in ISSM src])
Index: /issm/oecreview/Archive/14064-14311/ISSM-14172-14173.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14172-14173.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14172-14173.diff	(revision 14312)
@@ -0,0 +1,13 @@
+Index: ../trunk-jpl/m4/issm_options.m4
+===================================================================
+--- ../trunk-jpl/m4/issm_options.m4	(revision 14172)
++++ ../trunk-jpl/m4/issm_options.m4	(revision 14173)
+@@ -1073,7 +1073,7 @@
+ 	if test -n "$GRAPHICS_LIB" ; then
+ 		dnl check that library provided EXISTS!
+ 		GRAPHICS_DIR=$(echo $GRAPHICS_LIB | sed -e "s/-L//g" | awk '{print $[1]}')
+-		if test -d "$GRAPHICS_DIR"; then
++		if test -d "$GRAPHICS_DIR" || test -f "$GRAPHICS_DIR"; then
+ 			HAVE_GRAPHICS=yes
+ 			GRAPHICSLIB="$GRAPHICS_LIB"
+ 			AC_DEFINE([_HAVE_GRAPHICS_],[1],[with GRAPHICS in ISSM src])
Index: /issm/oecreview/Archive/14064-14311/ISSM-14173-14174.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14173-14174.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14173-14174.diff	(revision 14312)
@@ -0,0 +1,623 @@
+Index: ../trunk-jpl/externalpackages/export_fig/export_fig.m
+===================================================================
+--- ../trunk-jpl/externalpackages/export_fig/export_fig.m	(revision 14173)
++++ ../trunk-jpl/externalpackages/export_fig/export_fig.m	(revision 14174)
+@@ -122,8 +122,8 @@
+ %             of being overwritten (default).
+ %   -bookmark - option to indicate that a bookmark with the name of the
+ %               figure is to be created in the output file (pdf only).
+-%   handle - The handle of the figure or axes (can be an array of handles
+-%            of several axes, but these must be in the same figure) to be
++%   handle - The handle of the figure, axes or uipanels (can be an array of
++%            handles, but the objects must be in the same figure) to be
+ %            saved. Default: gcf.
+ %
+ %OUT:
+@@ -165,19 +165,26 @@
+ %           bookmarking of figures in pdf files.
+ % 09/05/12: Incorporate patch of Arcelia Arrieta (many thanks), to keep
+ %           tick marks fixed.
++% 12/12/12: Add support for isolating uipanels. Thanks to michael for
++%           suggesting it.
+ 
+-function [im alpha] = export_fig(varargin)
++function [im, alpha] = export_fig(varargin)
+ % Make sure the figure is rendered correctly _now_ so that properties like
+ % axes limits are up-to-date.
+ drawnow;
+ % Parse the input arguments
+-[fig options] = parse_args(nargout, varargin{:});
++[fig, options] = parse_args(nargout, varargin{:});
+ % Isolate the subplot, if it is one
+-cls = strcmp(get(fig(1), 'Type'), 'axes');
++cls = all(ismember(get(fig, 'Type'), {'axes', 'uipanel'}));
+ if cls
+     % Given handles of one or more axes, so isolate them from the rest
+     fig = isolate_axes(fig);
+ else
++    % Check we have a figure
++    if ~isequal(get(fig, 'Type'), 'figure');
++        error('Handle must be that of a figure, axes or uipanel');
++    end
++    % Get the old InvertHardcopy mode
+     old_mode = get(fig, 'InvertHardcopy');
+ end
+ % Hack the font units where necessary (due to a font rendering bug in
+@@ -197,7 +204,7 @@
+         set(fontu, 'FontUnits', 'points');
+     end
+ end
+-% MATLAB "feature": axes limits can change when printing
++% MATLAB "feature": axes limits and tick marks can change when printing
+ Hlims = findall(fig, 'Type', 'axes');
+ if ~cls
+     % Record the old axes limit and tick modes
+@@ -281,14 +288,14 @@
+         A = uint8(A);
+         % Crop the background
+         if options.crop
+-            [alpha v] = crop_background(alpha, 0);
++            [alpha, v] = crop_background(alpha, 0);
+             A = A(v(1):v(2),v(3):v(4),:);
+         end
+         if options.png
+             % Compute the resolution
+             res = options.magnify * get(0, 'ScreenPixelsPerInch') / 25.4e-3;
+             % Save the png
+-            imwrite(A, [options.name '.png'], 'Alpha', alpha, 'ResolutionUnit', 'meter', 'XResolution', res, 'YResolution', res);
++            imwrite(A, [options.name '.png'], 'Alpha', double(alpha), 'ResolutionUnit', 'meter', 'XResolution', res, 'YResolution', res);
+             % Clear the png bit
+             options.png = false;
+         end
+@@ -324,7 +331,7 @@
+             set(fig, 'Color', tcol, 'Position', pos);
+             tcol = 255;
+         else
+-            [A tcol] = print2array(fig, magnify, renderer);
++            [A, tcol] = print2array(fig, magnify, renderer);
+         end
+         % Crop the background
+         if options.crop
+@@ -459,7 +466,7 @@
+ end
+ return
+ 
+-function [fig options] = parse_args(nout, varargin)
++function [fig, options] = parse_args(nout, varargin)
+ % Parse the input arguments
+ % Set the defaults
+ fig = get(0, 'CurrentFigure');
+@@ -541,7 +548,7 @@
+                     end
+             end
+         else
+-            [p options.name ext] = fileparts(varargin{a});
++            [p, options.name, ext] = fileparts(varargin{a});
+             if ~isempty(p)
+                 options.name = [p filesep options.name];
+             end
+@@ -576,7 +583,7 @@
+ end
+ 
+ % Check whether transparent background is wanted (old way)
+-if isequal(get(fig, 'Color'), 'none')
++if isequal(get(ancestor(fig, 'figure'), 'Color'), 'none')
+     options.transparent = true;
+ end
+ 
+@@ -666,9 +673,9 @@
+ end
+ return
+ 
+-function [A v] = crop_background(A, bcol)
++function [A, v] = crop_background(A, bcol)
+ % Map the foreground pixels
+-[h w c] = size(A);
++[h, w, c] = size(A);
+ if isscalar(bcol) && c > 1
+     bcol = bcol(ones(1, c));
+ end
+Index: ../trunk-jpl/externalpackages/export_fig/print2eps.m
+===================================================================
+--- ../trunk-jpl/externalpackages/export_fig/print2eps.m	(revision 14173)
++++ ../trunk-jpl/externalpackages/export_fig/print2eps.m	(revision 14174)
+@@ -27,25 +27,27 @@
+ % The idea of changing dash length with line width came from comments on
+ % fex id: 5743, but the implementation is mine :)
+ 
+-% 14/11/2011 Fix a MATLAB bug rendering black or white text incorrectly.
+-% Thanks to Mathieu Morlighem for reporting the issue and obtaining a fix
+-% from TMW.
++% 14/11/2011: Fix a MATLAB bug rendering black or white text incorrectly.
++%             Thanks to Mathieu Morlighem for reporting the issue and
++%             obtaining a fix from TMW.
++% 08/12/11: Added ability to correct fonts. Several people have requested
++%           this at one time or another, and also pointed me to printeps
++%           (fex id: 7501), so thank you to them. My implementation (which
++%           was not inspired by printeps - I'd already had the idea for my
++%           approach) goes slightly further in that it allows multiple
++%           fonts to be swapped.
++% 14/12/11: Fix bug affecting font names containing spaces. Thanks to David
++%           Szwer for reporting the issue.
++% 25/01/12: Add a font not to be swapped. Thanks to Anna Rafferty and Adam
++%           Jackson for reporting the issue. Also fix a bug whereby using a
++%           font alias can lead to another font being swapped in.
++% 10/04/12: Make the font swapping case insensitive.
++% 26/10/12: Set PaperOrientation to portrait. Thanks to Michael Watts for
++%           reporting the issue.
++% 26/10/12: Fix issue to do with swapping fonts changing other fonts and
++%           sizes we don't want, due to listeners. Thanks to Malcolm Hudson
++%           for reporting the issue.
+ 
+-% 8/12/2011 Added ability to correct fonts. Several people have requested
+-% this at one time or another, and also pointed me to printeps (fex id:
+-% 7501), so thank you to them. My implementation (which was not inspired by
+-% printeps - I'd already had the idea for my approach) goes
+-% slightly further in that it allows multiple fonts to be swapped.
+-
+-% 14/12/2011 Fix bug affecting font names containing spaces. Many thanks to
+-% David Szwer for reporting the issue.
+-
+-% 25/1/2012 Add a font not to be swapped. Thanks to Anna Rafferty and Adam
+-% Jackson for reporting the issue. Also fix a bug whereby using a font
+-% alias can lead to another font being swapped in.
+-
+-% 10/4/2012 Make the font swapping case insensitive.
+-
+ function print2eps(name, fig, varargin)
+ options = {'-depsc2'};
+ if nargin < 2
+@@ -58,7 +60,7 @@
+     name = [name '.eps']; % Add the missing extension
+ end
+ % Find all the used fonts in the figure
+-font_handles = findall(fig, '-property', 'FontName');
++font_handles = findobj(fig, '-property', 'FontName');
+ fonts = get(font_handles, 'FontName');
+ if ~iscell(fonts)
+     fonts = {fonts};
+@@ -85,21 +87,46 @@
+ matlab_fontsl = lower(matlab_fonts);
+ require_swap = find(~ismember(fontslu, matlab_fontsl));
+ unused_fonts = find(~ismember(matlab_fontsl, fontslu));
+-font_swap = cell(3, 0);
+-for a = 1:min(numel(require_swap), numel(unused_fonts))
+-    ind = find(strcmp(fontslu{require_swap(a)}, fontsl));
+-    n = numel(ind);
+-    font_swap(1,end+1:end+n) = reshape(mat2cell(font_handles(ind), ones(n, 1)), 1, []);
+-    font_swap(2,end-n+1:end) = matlab_fonts(unused_fonts(a));
+-    font_swap(3,end-n+1:end) = reshape(fonts(ind), 1, []);
++font_swap = cell(3, min(numel(require_swap), numel(unused_fonts)));
++fonts_new = fonts;
++for a = 1:size(font_swap, 2)
++    font_swap{1,a} = find(strcmp(fontslu{require_swap(a)}, fontsl));
++    font_swap{2,a} = matlab_fonts{unused_fonts(a)};
++    font_swap{3,a} = fonts{font_swap{1,end}(1)};
++    fonts_new(font_swap{1,a}) = {font_swap{2,a}};
+ end
+ % Swap the fonts
+-for a = 1:size(font_swap, 2)
+-    set(font_swap{1,a}, 'FontName', font_swap{2,a});
++if ~isempty(font_swap)
++    fonts_size = get(font_handles, 'FontSize');
++    if iscell(fonts_size)
++        fonts_size = cell2mat(fonts_size);
++    end
++    M = false(size(font_handles));
++    % Loop because some changes may not stick first time, due to listeners
++    c = 0;
++    update = zeros(1000, 1);
++    for b = 1:10 % Limit number of loops to avoid infinite loop case
++        for a = 1:numel(M)
++            M(a) = ~isequal(get(font_handles(a), 'FontName'), fonts_new{a}) || ~isequal(get(font_handles(a), 'FontSize'), fonts_size(a));
++            if M(a)
++                set(font_handles(a), 'FontName', fonts_new{a}, 'FontSize', fonts_size(a));
++                c = c + 1;
++                update(c) = a;
++            end
++        end
++        if ~any(M)
++            break;
++        end
++    end
++    % Compute the order to revert fonts later, without the need of a loop
++    [update, M] = unique(update(1:c));
++    [M, M] = sort(M);
++    update = reshape(update(M), 1, []);
+ end
+ % Set paper size
+-old_mode = get(fig, 'PaperPositionMode');
+-set(fig, 'PaperPositionMode', 'auto');
++old_pos_mode = get(fig, 'PaperPositionMode');
++old_orientation = get(fig, 'PaperOrientation');
++set(fig, 'PaperPositionMode', 'auto', 'PaperOrientation', 'portrait');
+ % MATLAB bug fix - black and white text can come out inverted sometimes
+ % Find the white and black text
+ white_text_handles = findobj(fig, 'Type', 'text');
+@@ -119,12 +146,12 @@
+ set(black_text_handles, 'Color', [0 0 0]);
+ set(white_text_handles, 'Color', [1 1 1]);
+ % Reset paper size
+-set(fig, 'PaperPositionMode', old_mode);
++set(fig, 'PaperPositionMode', old_pos_mode, 'PaperOrientation', old_orientation);
+ % Correct the fonts
+ if ~isempty(font_swap)
+     % Reset the font names in the figure
+-    for a = 1:size(font_swap, 2)
+-        set(font_swap{1,a}, 'FontName', font_swap{3,a});
++    for a = update
++        set(font_handles(a), 'FontName', fonts{a}, 'FontSize', fonts_size(a));
+     end
+     % Replace the font names in the eps file
+     font_swap = font_swap(2:3,:);
+Index: ../trunk-jpl/externalpackages/export_fig/ghostscript.m
+===================================================================
+--- ../trunk-jpl/externalpackages/export_fig/ghostscript.m	(revision 14173)
++++ ../trunk-jpl/externalpackages/export_fig/ghostscript.m	(revision 14174)
+@@ -1,4 +1,3 @@
+-function varargout = ghostscript(cmd)
+ %GHOSTSCRIPT  Calls a local GhostScript executable with the input command
+ %
+ % Example:
+@@ -24,37 +23,37 @@
+ 
+ % Thanks to Jonas Dorn for the fix for the title of the uigetdir window on
+ % Mac OS.
+-
+ % Thanks to Nathan Childress for the fix to the default location on 64-bit
+ % Windows systems.
+-
+ % 27/4/11 - Find 64-bit Ghostscript on Windows. Thanks to Paul Durack and
+ % Shaun Kline for pointing out the issue
+-
+ % 4/5/11 - Thanks to David Chorlian for pointing out an alternative
+ % location for gs on linux.
++% 12/12/12 - Add extra executable name on Windows. Thanks to Ratish
++% Punnoose for highlighting the issue.
+ 
++function varargout = ghostscript(cmd)
+ % Call ghostscript
+ [varargout{1:nargout}] = system(sprintf('"%s" %s', gs_path, cmd));
+ return
+ 
+-function path = gs_path
++function path_ = gs_path
+ % Return a valid path
+ % Start with the currently set path
+-path = user_string('ghostscript');
++path_ = user_string('ghostscript');
+ % Check the path works
+-if check_gs_path(path)
++if check_gs_path(path_)
+     return
+ end
+ % Check whether the binary is on the path
+ if ispc
+-    bin = {'gswin32c.exe', 'gswin64c.exe'};
++    bin = {'gswin32c.exe', 'gswin64c.exe', 'gs'};
+ else
+     bin = {'gs'};
+ end
+ for a = 1:numel(bin)
+-    path = bin{a};
+-    if check_store_gs_path(path)
++    path_ = bin{a};
++    if check_store_gs_path(path_)
+         return
+     end
+ end
+@@ -75,20 +74,20 @@
+             for b = 1:numel(executable)
+                 path2 = [default_location dir_list(a).name executable{b}];
+                 if exist(path2, 'file') == 2
+-                    path = path2;
++                    path_ = path2;
+                     ver_num = ver_num2;
+                 end
+             end
+         end
+     end
+-    if check_store_gs_path(path)
++    if check_store_gs_path(path_)
+         return
+     end
+ else
+     bin = {'/usr/bin/gs', '/usr/local/bin/gs'};
+     for a = 1:numel(bin)
+-        path = bin{a};
+-        if check_store_gs_path(path)
++        path_ = bin{a};
++        if check_store_gs_path(path_)
+             return
+         end
+     end
+@@ -109,9 +108,9 @@
+     bin_dir = {'', ['bin' filesep], ['lib' filesep]};
+     for a = 1:numel(bin_dir)
+         for b = 1:numel(bin)
+-            path = [base bin_dir{a} bin{b}];
+-            if exist(path, 'file') == 2
+-                if check_store_gs_path(path)
++            path_ = [base bin_dir{a} bin{b}];
++            if exist(path_, 'file') == 2
++                if check_store_gs_path(path_)
+                     return
+                 end
+             end
+@@ -120,21 +119,21 @@
+ end
+ error('Ghostscript not found. Have you installed it from www.ghostscript.com?');
+ 
+-function good = check_store_gs_path(path)
++function good = check_store_gs_path(path_)
+ % Check the path is valid
+-good = check_gs_path(path);
++good = check_gs_path(path_);
+ if ~good
+     return
+ end
+ % Update the current default path to the path found
+-if ~user_string('ghostscript', path)
++if ~user_string('ghostscript', path_)
+     warning('Path to ghostscript installation could not be saved. Enter it manually in ghostscript.txt.');
+     return
+ end
+ return
+ 
+-function good = check_gs_path(path)
++function good = check_gs_path(path_)
+ % Check the path is valid
+-[good message] = system(sprintf('"%s" -h', path));
++[good, message] = system(sprintf('"%s" -h', path_));
+ good = good == 0;
+ return
+\ No newline at end of file
+Index: ../trunk-jpl/externalpackages/export_fig/print2array.m
+===================================================================
+--- ../trunk-jpl/externalpackages/export_fig/print2array.m	(revision 14173)
++++ ../trunk-jpl/externalpackages/export_fig/print2array.m	(revision 14174)
+@@ -24,27 +24,26 @@
+ %   A - MxNx3 uint8 image of the figure.
+ %   bcol - 1x3 uint8 vector of the background color
+ 
+-% Copyright (C) Oliver Woodford 2008-2011
++% Copyright (C) Oliver Woodford 2008-2012
+ 
+-% 5/9/2011 Set EraseModes to normal when using opengl or zbuffer renderers.
+-% Thanks to Pawel Kocieniewski for reporting the issue.
++% 05/09/11: Set EraseModes to normal when using opengl or zbuffer
++%           renderers. Thanks to Pawel Kocieniewski for reporting the
++%           issue.
++% 21/09/11: Bug fix: unit8 -> uint8! Thanks to Tobias Lamour for reporting
++%           the issue.
++% 14/11/11: Bug fix: stop using hardcopy(), as it interfered with figure
++%           size and erasemode settings. Makes it a bit slower, but more
++%           reliable. Thanks to Phil Trinh and Meelis Lootus for reporting
++%           the issues.
++% 09/12/11: Pass font path to ghostscript.
++% 27/01/12: Bug fix affecting painters rendering tall figures. Thanks to
++%           Ken Campbell for reporting it.
++% 03/04/12: Bug fix to median input. Thanks to Andy Matthews for reporting
++%           it.
++% 26/10/12: Set PaperOrientation to portrait. Thanks to Michael Watts for
++%           reporting the issue.
+ 
+-% 21/9/2011 Bug fix: unit8 -> uint8!
+-% Thanks to Tobias Lamour for reporting the issue.
+-
+-% 14/11/2011 Bug fix: stop using hardcopy(), as it interfered with figure
+-% size and erasemode settings. Makes it a bit slower, but more reliable.
+-% Thanks to Phil Trinh and Meelis Lootus for reporting the issues.
+-
+-% 9/12/2011 Pass font path to ghostscript.
+-
+-% 27/1/2012 Bug fix affecting painters rendering tall figures. Thanks to
+-% Ken Campbell for reporting it.
+-
+-% 3/4/2012 Bug fix to median input. Thanks to Andy Matthews for reporting
+-% it.
+-
+-function [A bcol] = print2array(fig, res, renderer)
++function [A, bcol] = print2array(fig, res, renderer)
+ % Generate default input arguments, if needed
+ if nargin < 2
+     res = 1;
+@@ -84,10 +83,10 @@
+         cmd_str = [cmd_str ' -sOutputFile="' tmp_nam '" "' tmp_eps '"'];
+         % Execute the ghostscript command
+         ghostscript(cmd_str);
+-    catch
++    catch me
+         % Delete the intermediate file
+         delete(tmp_eps);
+-        rethrow(lasterror);
++        rethrow(me);
+     end
+     % Delete the intermediate file
+     delete(tmp_eps);
+@@ -133,8 +132,9 @@
+     end
+     err = false;
+     % Set paper size
+-    old_mode = get(fig, 'PaperPositionMode');
+-    set(fig, 'PaperPositionMode', 'auto');
++    old_pos_mode = get(fig, 'PaperPositionMode');
++    old_orientation = get(fig, 'PaperOrientation');
++    set(fig, 'PaperPositionMode', 'auto', 'PaperOrientation', 'portrait');
+     try
+         % Print to tiff file
+         print(fig, renderer, res_str, '-dtiff', tmp_nam);
+@@ -146,7 +146,7 @@
+         err = true;
+     end
+     % Reset paper size
+-    set(fig, 'PaperPositionMode', old_mode);
++    set(fig, 'PaperPositionMode', old_pos_mode, 'PaperOrientation', old_orientation);
+     % Throw any error that occurred
+     if err
+         rethrow(ex);
+Index: ../trunk-jpl/externalpackages/export_fig/pdftops.m
+===================================================================
+--- ../trunk-jpl/externalpackages/export_fig/pdftops.m	(revision 14173)
++++ ../trunk-jpl/externalpackages/export_fig/pdftops.m	(revision 14174)
+@@ -32,12 +32,12 @@
+ [varargout{1:nargout}] = system(sprintf('"%s" %s', xpdf_path, cmd));
+ return
+ 
+-function path = xpdf_path
++function path_ = xpdf_path
+ % Return a valid path
+ % Start with the currently set path
+-path = user_string('pdftops');
++path_ = user_string('pdftops');
+ % Check the path works
+-if check_xpdf_path(path)
++if check_xpdf_path(path_)
+     return
+ end
+ % Check whether the binary is on the path
+@@ -47,16 +47,16 @@
+     bin = 'pdftops';
+ end
+ if check_store_xpdf_path(bin)
+-    path = bin;
++    path_ = bin;
+     return
+ end
+ % Search the obvious places
+ if ispc
+-    path = 'C:\Program Files\xpdf\pdftops.exe';
++    path_ = 'C:\Program Files\xpdf\pdftops.exe';
+ else
+-    path = '/usr/local/bin/pdftops';
++    path_ = '/usr/local/bin/pdftops';
+ end
+-if check_store_xpdf_path(path)
++if check_store_xpdf_path(path_)
+     return
+ end
+ % Ask the user to enter the path
+@@ -74,33 +74,33 @@
+     base = [base filesep];
+     bin_dir = {'', ['bin' filesep], ['lib' filesep]};
+     for a = 1:numel(bin_dir)
+-        path = [base bin_dir{a} bin];
+-        if exist(path, 'file') == 2
++        path_ = [base bin_dir{a} bin];
++        if exist(path_, 'file') == 2
+             break;
+         end
+     end
+-    if check_store_xpdf_path(path)
++    if check_store_xpdf_path(path_)
+         return
+     end
+ end
+ error('pdftops executable not found.');
+ 
+-function good = check_store_xpdf_path(path)
++function good = check_store_xpdf_path(path_)
+ % Check the path is valid
+-good = check_xpdf_path(path);
++good = check_xpdf_path(path_);
+ if ~good
+     return
+ end
+ % Update the current default path to the path found
+-if ~user_string('pdftops', path)
++if ~user_string('pdftops', path_)
+     warning('Path to pdftops executable could not be saved. Enter it manually in pdftops.txt.');
+     return
+ end
+ return
+ 
+-function good = check_xpdf_path(path)
++function good = check_xpdf_path(path_)
+ % Check the path is valid
+-[good message] = system(sprintf('"%s" -h', path));
++[good message] = system(sprintf('"%s" -h', path_));
+ % system returns good = 1 even when the command runs
+ % Look for something distinct in the help text
+ good = ~isempty(strfind(message, 'PostScript'));
+Index: ../trunk-jpl/externalpackages/export_fig/isolate_axes.m
+===================================================================
+--- ../trunk-jpl/externalpackages/export_fig/isolate_axes.m	(revision 14173)
++++ ../trunk-jpl/externalpackages/export_fig/isolate_axes.m	(revision 14174)
+@@ -4,13 +4,14 @@
+ %   fh = isolate_axes(ah)
+ %   fh = isolate_axes(ah, vis)
+ %
+-% This function will create a new figure containing the axes specified, and
+-% also their associated legends and colorbars. The axes specified must all
+-% be in the same figure, but they will generally only be a subset of the
+-% axes in the figure.
++% This function will create a new figure containing the axes/uipanels
++% specified, and also their associated legends and colorbars. The objects
++% specified must all be in the same figure, but they will generally only be
++% a subset of the objects in the figure.
+ %
+ % IN:
+-%    ah - An array of axes handles, which must come from the same figure.
++%    ah - An array of axes and uipanel handles, which must come from the
++%         same figure.
+ %    vis - A boolean indicating whether the new figure should be visible.
+ %          Default: false.
+ %
+@@ -22,24 +23,26 @@
+ % Thank you to Rosella Blatt for reporting a bug to do with axes in GUIs
+ % 16/3/2012 Moved copyfig to its own function. Thanks to Bob Fratantonio
+ % for pointing out that the function is also used in export_fig.m.
++% 12/12/12 - Add support for isolating uipanels. Thanks to michael for
++% suggesting it.
+ 
+ function fh = isolate_axes(ah, vis)
+ % Make sure we have an array of handles
+ if ~all(ishandle(ah))
+     error('ah must be an array of handles');
+ end
+-% Check that the handles are all for axes, and are all in the same figure
++% Check that the handles are all for axes or uipanels, and are all in the same figure
+ fh = ancestor(ah(1), 'figure');
+ nAx = numel(ah);
+ for a = 1:nAx
+-    if ~strcmp(get(ah(a), 'Type'), 'axes')
+-        error('All handles must be axes handles.');
++    if ~ismember(get(ah(a), 'Type'), {'axes', 'uipanel'})
++        error('All handles must be axes or uipanel handles.');
+     end
+     if ~isequal(ancestor(ah(a), 'figure'), fh)
+         error('Axes must all come from the same figure.');
+     end
+ end
+-% Tag the axes so we can find them in the copy
++% Tag the objects so we can find them in the copy
+ old_tag = get(ah, 'Tag');
+ if nAx == 1
+     old_tag = {old_tag};
+@@ -50,7 +53,7 @@
+ if nargin < 2 || ~vis
+     set(fh, 'Visible', 'off');
+ end
+-% Reset the axes tags
++% Reset the object tags
+ for a = 1:nAx
+     set(ah(a), 'Tag', old_tag{a});
+ end
+@@ -58,7 +61,7 @@
+ ah = findall(fh, 'Tag', 'ObjectToCopy');
+ if numel(ah) ~= nAx
+     close(fh);
+-    error('Incorrect number of axes found.');
++    error('Incorrect number of objects found.');
+ end
+ % Set the axes tags to what they should be
+ for a = 1:nAx
+@@ -86,7 +89,7 @@
+ end
+ % Get all the objects in the figure
+ axs = findall(fh);
+-% Delete everything except for the input axes and associated items
++% Delete everything except for the input objects and associated items
+ delete(axs(~ismember(axs, [ah; allchildren(ah); allancestors(ah)])));
+ return
+ 
Index: /issm/oecreview/Archive/14064-14311/ISSM-14174-14175.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14174-14175.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14174-14175.diff	(revision 14312)
@@ -0,0 +1,320 @@
+Index: ../trunk-jpl/src/c/EnumDefinitions/EnumDefinitions.h
+===================================================================
+--- ../trunk-jpl/src/c/EnumDefinitions/EnumDefinitions.h	(revision 14174)
++++ ../trunk-jpl/src/c/EnumDefinitions/EnumDefinitions.h	(revision 14175)
+@@ -195,14 +195,9 @@
+ 	SurfaceforcingsIspddEnum,
+ 	SurfaceforcingsIssmbgradientsEnum,
+ 	SurfaceforcingsMonthlytemperaturesEnum,
+-	SurfaceforcingsHcEnum,
+ 	SurfaceforcingsHrefEnum,
+ 	SurfaceforcingsSmbrefEnum,
+-	SurfaceforcingsSmbPosMaxEnum,
+-	SurfaceforcingsSmbPosMinEnum,
+-	SurfaceforcingsAPosEnum,
+ 	SurfaceforcingsBPosEnum,
+-	SurfaceforcingsANegEnum,
+ 	SurfaceforcingsBNegEnum,
+ 	ThermalMaxiterEnum,
+ 	ThermalPenaltyFactorEnum,
+Index: ../trunk-jpl/src/c/shared/Numerics/UnitConversion.cpp
+===================================================================
+--- ../trunk-jpl/src/c/shared/Numerics/UnitConversion.cpp	(revision 14174)
++++ ../trunk-jpl/src/c/shared/Numerics/UnitConversion.cpp	(revision 14175)
+@@ -64,11 +64,7 @@
+ 		case BasalforcingsMeltingRateCorrectionEnum: scale=yts;break;     //m/yr
+ 		case SurfaceforcingsPrecipitationEnum:       scale=yts;break;     //m/yr
+ 		case SurfaceforcingsMassBalanceEnum:         scale=yts;break;     //m/yr
+-		case SurfaceforcingsSmbPosMaxEnum:				scale=yts;break;     //m/yr
+-		case SurfaceforcingsSmbPosMinEnum:				scale=yts;break;     //m/yr
+-		case SurfaceforcingsAPosEnum:						scale=yts;break;     //m/yr
+ 		case SurfaceforcingsBPosEnum:						scale=yts;break;     //m/yr
+-		case SurfaceforcingsANegEnum:						scale=yts;break;     //m/yr
+ 		case SurfaceforcingsBNegEnum:						scale=yts;break;     //m/yr
+ 		case SurfaceforcingsSmbrefEnum:					scale=yts;break;     //m/yr
+ 		case MisfitEnum:                             scale=pow(yts,2);break; //(m/yr)^2
+Index: ../trunk-jpl/src/c/modules/StringToEnumx/StringToEnumx.cpp
+===================================================================
+--- ../trunk-jpl/src/c/modules/StringToEnumx/StringToEnumx.cpp	(revision 14174)
++++ ../trunk-jpl/src/c/modules/StringToEnumx/StringToEnumx.cpp	(revision 14175)
+@@ -204,14 +204,9 @@
+ 	      else if (strcmp(name,"SurfaceforcingsIspdd")==0) return SurfaceforcingsIspddEnum;
+ 	      else if (strcmp(name,"SurfaceforcingsIssmbgradients")==0) return SurfaceforcingsIssmbgradientsEnum;
+ 	      else if (strcmp(name,"SurfaceforcingsMonthlytemperatures")==0) return SurfaceforcingsMonthlytemperaturesEnum;
+-	      else if (strcmp(name,"SurfaceforcingsHc")==0) return SurfaceforcingsHcEnum;
+ 	      else if (strcmp(name,"SurfaceforcingsHref")==0) return SurfaceforcingsHrefEnum;
+ 	      else if (strcmp(name,"SurfaceforcingsSmbref")==0) return SurfaceforcingsSmbrefEnum;
+-	      else if (strcmp(name,"SurfaceforcingsSmbPosMax")==0) return SurfaceforcingsSmbPosMaxEnum;
+-	      else if (strcmp(name,"SurfaceforcingsSmbPosMin")==0) return SurfaceforcingsSmbPosMinEnum;
+-	      else if (strcmp(name,"SurfaceforcingsAPos")==0) return SurfaceforcingsAPosEnum;
+ 	      else if (strcmp(name,"SurfaceforcingsBPos")==0) return SurfaceforcingsBPosEnum;
+-	      else if (strcmp(name,"SurfaceforcingsANeg")==0) return SurfaceforcingsANegEnum;
+ 	      else if (strcmp(name,"SurfaceforcingsBNeg")==0) return SurfaceforcingsBNegEnum;
+ 	      else if (strcmp(name,"ThermalMaxiter")==0) return ThermalMaxiterEnum;
+ 	      else if (strcmp(name,"ThermalPenaltyFactor")==0) return ThermalPenaltyFactorEnum;
+@@ -260,15 +255,15 @@
+ 	      else if (strcmp(name,"MeltingAnalysis")==0) return MeltingAnalysisEnum;
+ 	      else if (strcmp(name,"NoneAnalysis")==0) return NoneAnalysisEnum;
+ 	      else if (strcmp(name,"PrognosticAnalysis")==0) return PrognosticAnalysisEnum;
+-         else stage=3;
+-   }
+-   if(stage==3){
+-	      if (strcmp(name,"PrognosticSolution")==0) return PrognosticSolutionEnum;
++	      else if (strcmp(name,"PrognosticSolution")==0) return PrognosticSolutionEnum;
+ 	      else if (strcmp(name,"SteadystateSolution")==0) return SteadystateSolutionEnum;
+ 	      else if (strcmp(name,"SurfaceSlopeAnalysis")==0) return SurfaceSlopeAnalysisEnum;
+ 	      else if (strcmp(name,"SurfaceSlopeSolution")==0) return SurfaceSlopeSolutionEnum;
+ 	      else if (strcmp(name,"SurfaceSlopeXAnalysis")==0) return SurfaceSlopeXAnalysisEnum;
+-	      else if (strcmp(name,"SurfaceSlopeYAnalysis")==0) return SurfaceSlopeYAnalysisEnum;
++         else stage=3;
++   }
++   if(stage==3){
++	      if (strcmp(name,"SurfaceSlopeYAnalysis")==0) return SurfaceSlopeYAnalysisEnum;
+ 	      else if (strcmp(name,"ThermalAnalysis")==0) return ThermalAnalysisEnum;
+ 	      else if (strcmp(name,"ThermalSolution")==0) return ThermalSolutionEnum;
+ 	      else if (strcmp(name,"TransientSolution")==0) return TransientSolutionEnum;
+@@ -383,15 +378,15 @@
+ 	      else if (strcmp(name,"QmuSurface")==0) return QmuSurfaceEnum;
+ 	      else if (strcmp(name,"QmuMelting")==0) return QmuMeltingEnum;
+ 	      else if (strcmp(name,"ResetPenalties")==0) return ResetPenaltiesEnum;
+-         else stage=4;
+-   }
+-   if(stage==4){
+-	      if (strcmp(name,"SegmentOnIceShelf")==0) return SegmentOnIceShelfEnum;
++	      else if (strcmp(name,"SegmentOnIceShelf")==0) return SegmentOnIceShelfEnum;
+ 	      else if (strcmp(name,"SurfaceAbsVelMisfit")==0) return SurfaceAbsVelMisfitEnum;
+ 	      else if (strcmp(name,"SurfaceArea")==0) return SurfaceAreaEnum;
+ 	      else if (strcmp(name,"SurfaceAverageVelMisfit")==0) return SurfaceAverageVelMisfitEnum;
+ 	      else if (strcmp(name,"SurfaceLogVelMisfit")==0) return SurfaceLogVelMisfitEnum;
+-	      else if (strcmp(name,"SurfaceLogVxVyMisfit")==0) return SurfaceLogVxVyMisfitEnum;
++         else stage=4;
++   }
++   if(stage==4){
++	      if (strcmp(name,"SurfaceLogVxVyMisfit")==0) return SurfaceLogVxVyMisfitEnum;
+ 	      else if (strcmp(name,"SurfaceRelVelMisfit")==0) return SurfaceRelVelMisfitEnum;
+ 	      else if (strcmp(name,"SurfaceSlopeX")==0) return SurfaceSlopeXEnum;
+ 	      else if (strcmp(name,"SurfaceSlopeY")==0) return SurfaceSlopeYEnum;
+@@ -506,15 +501,15 @@
+ 	      else if (strcmp(name,"PetscOptionsStrings")==0) return PetscOptionsStringsEnum;
+ 	      else if (strcmp(name,"QmuErrName")==0) return QmuErrNameEnum;
+ 	      else if (strcmp(name,"QmuInName")==0) return QmuInNameEnum;
+-         else stage=5;
+-   }
+-   if(stage==5){
+-	      if (strcmp(name,"QmuOutName")==0) return QmuOutNameEnum;
++	      else if (strcmp(name,"QmuOutName")==0) return QmuOutNameEnum;
+ 	      else if (strcmp(name,"Regular")==0) return RegularEnum;
+ 	      else if (strcmp(name,"Scaled")==0) return ScaledEnum;
+ 	      else if (strcmp(name,"Separate")==0) return SeparateEnum;
+ 	      else if (strcmp(name,"Sset")==0) return SsetEnum;
+-	      else if (strcmp(name,"Verbose")==0) return VerboseEnum;
++         else stage=5;
++   }
++   if(stage==5){
++	      if (strcmp(name,"Verbose")==0) return VerboseEnum;
+ 	      else if (strcmp(name,"TriangleInterp")==0) return TriangleInterpEnum;
+ 	      else if (strcmp(name,"BilinearInterp")==0) return BilinearInterpEnum;
+ 	      else if (strcmp(name,"NearestInterp")==0) return NearestInterpEnum;
+Index: ../trunk-jpl/src/c/modules/EnumToStringx/EnumToStringx.cpp
+===================================================================
+--- ../trunk-jpl/src/c/modules/EnumToStringx/EnumToStringx.cpp	(revision 14174)
++++ ../trunk-jpl/src/c/modules/EnumToStringx/EnumToStringx.cpp	(revision 14175)
+@@ -200,14 +200,9 @@
+ 		case SurfaceforcingsIspddEnum : return "SurfaceforcingsIspdd";
+ 		case SurfaceforcingsIssmbgradientsEnum : return "SurfaceforcingsIssmbgradients";
+ 		case SurfaceforcingsMonthlytemperaturesEnum : return "SurfaceforcingsMonthlytemperatures";
+-		case SurfaceforcingsHcEnum : return "SurfaceforcingsHc";
+ 		case SurfaceforcingsHrefEnum : return "SurfaceforcingsHref";
+ 		case SurfaceforcingsSmbrefEnum : return "SurfaceforcingsSmbref";
+-		case SurfaceforcingsSmbPosMaxEnum : return "SurfaceforcingsSmbPosMax";
+-		case SurfaceforcingsSmbPosMinEnum : return "SurfaceforcingsSmbPosMin";
+-		case SurfaceforcingsAPosEnum : return "SurfaceforcingsAPos";
+ 		case SurfaceforcingsBPosEnum : return "SurfaceforcingsBPos";
+-		case SurfaceforcingsANegEnum : return "SurfaceforcingsANeg";
+ 		case SurfaceforcingsBNegEnum : return "SurfaceforcingsBNeg";
+ 		case ThermalMaxiterEnum : return "ThermalMaxiter";
+ 		case ThermalPenaltyFactorEnum : return "ThermalPenaltyFactor";
+Index: ../trunk-jpl/src/c/modules/ModelProcessorx/Prognostic/UpdateElementsPrognostic.cpp
+===================================================================
+--- ../trunk-jpl/src/c/modules/ModelProcessorx/Prognostic/UpdateElementsPrognostic.cpp	(revision 14174)
++++ ../trunk-jpl/src/c/modules/ModelProcessorx/Prognostic/UpdateElementsPrognostic.cpp	(revision 14175)
+@@ -71,14 +71,9 @@
+ 		iomodel->FetchDataToInput(elements,TemperatureEnum);
+ 	}
+ 	if(issmbgradients){
+-	        iomodel->FetchDataToInput(elements,SurfaceforcingsHcEnum);
+ 	        iomodel->FetchDataToInput(elements,SurfaceforcingsHrefEnum);
+ 	        iomodel->FetchDataToInput(elements,SurfaceforcingsSmbrefEnum);
+-	        iomodel->FetchDataToInput(elements,SurfaceforcingsSmbPosMaxEnum);
+-	        iomodel->FetchDataToInput(elements,SurfaceforcingsSmbPosMinEnum);
+-	        iomodel->FetchDataToInput(elements,SurfaceforcingsAPosEnum);
+ 	        iomodel->FetchDataToInput(elements,SurfaceforcingsBPosEnum);
+-	        iomodel->FetchDataToInput(elements,SurfaceforcingsANegEnum);
+ 	        iomodel->FetchDataToInput(elements,SurfaceforcingsBNegEnum);
+ 	}
+ 	if(ispdd){
+Index: ../trunk-jpl/src/c/classes/objects/Elements/Tria.cpp
+===================================================================
+--- ../trunk-jpl/src/c/classes/objects/Elements/Tria.cpp	(revision 14174)
++++ ../trunk-jpl/src/c/classes/objects/Elements/Tria.cpp	(revision 14175)
+@@ -2324,15 +2324,10 @@
+ 	// input
+    IssmDouble h[NUMVERTICES];					// ice thickness (m)		
+ 	IssmDouble s[NUMVERTICES];					// surface elevation (m)
+-	IssmDouble a_pos[NUMVERTICES];				// Hs-SMB relation parameter 
+ 	IssmDouble b_pos[NUMVERTICES];				// Hs-SMB relation parameter
+-	IssmDouble a_neg[NUMVERTICES];				// Hs-SMB relation parameter
+ 	IssmDouble b_neg[NUMVERTICES];				// Hs-SMB relation paremeter
+-	IssmDouble Hc[NUMVERTICES];					// elevation of transition between accumulation regime and ablation regime
+ 	IssmDouble Href[NUMVERTICES];					// reference elevation from which deviations are used to calculate the SMB adjustment
+ 	IssmDouble Smbref[NUMVERTICES];				// reference SMB to which deviations are added
+-	IssmDouble smb_pos_max[NUMVERTICES];		// maximum SMB value in the accumulation regime
+-	IssmDouble smb_pos_min[NUMVERTICES];		// minimum SMB value in the accumulation regime
+    IssmDouble rho_water;                   // density of fresh water
+ 	IssmDouble rho_ice;                     // density of ice
+ 
+@@ -2340,14 +2335,9 @@
+ 	IssmDouble smb[NUMVERTICES];					// surface mass balance (m/yr ice)
+ 
+ 	/*Recover SmbGradients*/
+-	GetInputListOnVertices(&Hc[0],SurfaceforcingsHcEnum);
+ 	GetInputListOnVertices(&Href[0],SurfaceforcingsHrefEnum);
+ 	GetInputListOnVertices(&Smbref[0],SurfaceforcingsSmbrefEnum);
+-	GetInputListOnVertices(&smb_pos_max[0],SurfaceforcingsSmbPosMaxEnum);
+-	GetInputListOnVertices(&smb_pos_min[0],SurfaceforcingsSmbPosMinEnum);
+-	GetInputListOnVertices(&a_pos[0],SurfaceforcingsAPosEnum);
+ 	GetInputListOnVertices(&b_pos[0],SurfaceforcingsBPosEnum);
+-	GetInputListOnVertices(&a_neg[0],SurfaceforcingsANegEnum);
+ 	GetInputListOnVertices(&b_neg[0],SurfaceforcingsBNegEnum);
+ 
+    /*Recover surface elevatio at vertices: */
+@@ -2360,24 +2350,13 @@
+ 
+    // loop over all vertices
+    for(i=0;i<NUMVERTICES;i++){
+-     if(s[i]>Hc[i]){
+-		  if(Href[i]>Hc[i]){smb[i]=Smbref[i]+b_pos[i]*(s[i]-Href[i]);}
+-		  if(Href[i]<=Hc[i]){smb[i]=a_pos[i]+b_pos[i]*s[i];}
+-		  if(smb[i]>smb_pos_max[i]){smb[i]=smb_pos_max[i];}
+-		  if(smb[i]<smb_pos_min[i]){smb[i]=smb_pos_min[i];}
++     if(Smbref[i]>0){
++		  smb[i]=Smbref[i]+b_pos[i]*(s[i]-Href[i]);
+ 	  }
+ 	  else{
+-		  if(Href[i]>Hc[i]){smb[i]=a_neg[i]+b_neg[i]*s[i];}
+-		  if(Href[i]<=Hc[i]){smb[i]=Smbref[i]+b_neg[i]*(s[i]-Href[i]);}
++		  smb[i]=Smbref[i]+b_neg[i]*(s[i]-Href[i]);
+ 	  }
+ 	  smb[i]=smb[i]/rho_ice;      // SMB in m/y ice		
+-  /*   printf("s %e \n",s[i]); 
+-     printf("Hsref %e \n",Href[i]); 
+-     printf("Hc %e \n",Hc[i]); 
+-     printf("Smbref %e \n",Smbref[i]); 
+-     printf("b_neg %e \n",b_neg[i]); 
+-     printf("smb %e \n",smb[i]); 
+-	  _error_("stop-in-code"); */
+ 		}  //end of the loop over the vertices
+ 	  /*Update inputs*/
+ 	  this->inputs->AddInput(new TriaP1Input(SurfaceforcingsMassBalanceEnum,&smb[0]));
+Index: ../trunk-jpl/src/c/classes/objects/Elements/Penta.cpp
+===================================================================
+--- ../trunk-jpl/src/c/classes/objects/Elements/Penta.cpp	(revision 14174)
++++ ../trunk-jpl/src/c/classes/objects/Elements/Penta.cpp	(revision 14175)
+@@ -2726,14 +2726,9 @@
+ 	IssmDouble smb[NUMVERTICES];					// surface mass balance (m/yr ice)
+ 
+ 	/*Recover SmbGradients*/
+-	GetInputListOnVertices(&Hc[0],SurfaceforcingsHcEnum);
+ 	GetInputListOnVertices(&Href[0],SurfaceforcingsHrefEnum);
+ 	GetInputListOnVertices(&Smbref[0],SurfaceforcingsSmbrefEnum);
+-	GetInputListOnVertices(&smb_pos_max[0],SurfaceforcingsSmbPosMaxEnum);
+-	GetInputListOnVertices(&smb_pos_min[0],SurfaceforcingsSmbPosMinEnum);
+-	GetInputListOnVertices(&a_pos[0],SurfaceforcingsAPosEnum);
+ 	GetInputListOnVertices(&b_pos[0],SurfaceforcingsBPosEnum);
+-	GetInputListOnVertices(&a_neg[0],SurfaceforcingsANegEnum);
+ 	GetInputListOnVertices(&b_neg[0],SurfaceforcingsBNegEnum);
+ 
+    /*Recover surface elevatio at vertices: */
+@@ -2746,15 +2741,11 @@
+ 
+    // loop over all vertices
+  for(i=0;i<NUMVERTICES;i++){
+-     if(s[i]>Hc[i]){
+-		  if(Href[i]>Hc[i]){smb[i]=Smbref[i]+b_pos[i]*(s[i]-Href[i]);}
+-		  if(Href[i]<=Hc[i]){smb[i]=a_pos[i]+b_pos[i]*s[i];}
+-		  if(smb[i]>smb_pos_max[i]){smb[i]=smb_pos_max[i];}
+-		  if(smb[i]<smb_pos_min[i]){smb[i]=smb_pos_min[i];}
++     if(Smbref[i]>0){
++		  smb[i]=Smbref[i]+b_pos[i]*(s[i]-Href[i]);
+ 	  }
+ 	  else{
+-		  if(Href[i]>Hc[i]){smb[i]=a_neg[i]+b_neg[i]*s[i];}
+-		  if(Href[i]<=Hc[i]){smb[i]=Smbref[i]+b_neg[i]*(s[i]-Href[i]);}
++		  smb[i]=Smbref[i]+b_neg[i]*(s[i]-Href[i]);
+ 	  }
+ 	  smb[i]=smb[i]/rho_ice;      // SMB in m/y ice		
+ 	}  //end of the loop over the vertices
+Index: ../trunk-jpl/src/m/classes/surfaceforcings.m
+===================================================================
+--- ../trunk-jpl/src/m/classes/surfaceforcings.m	(revision 14174)
++++ ../trunk-jpl/src/m/classes/surfaceforcings.m	(revision 14175)
+@@ -10,14 +10,9 @@
+ 		ispdd = 0;
+ 		issmbgradients = 0;
+ 		isdelta18o = 0;
+-		hc = NaN;
+ 		href = NaN;
+ 		smbref = NaN;
+-		smb_pos_max = NaN;
+-		smb_pos_min = NaN;
+-		a_pos = NaN;
+ 		b_pos = NaN;
+-		a_neg = NaN;
+ 		b_neg = NaN;
+ 		monthlytemperatures = NaN;
+ 		delta18o = NaN;
+@@ -60,14 +55,9 @@
+ 						md = checkfield(md,'surfaceforcings.precipitations_presentday','size',[md.mesh.numberofvertices+1 12],'NaN',1);
+ 					end
+ 				elseif(obj.issmbgradients)
+-					md = checkfield(md,'surfaceforcings.hc','forcing',1,'NaN',1);
+ 					md = checkfield(md,'surfaceforcings.href','forcing',1,'NaN',1);
+ 					md = checkfield(md,'surfaceforcings.smbref','forcing',1,'NaN',1);
+-					md = checkfield(md,'surfaceforcings.smb_pos_max','forcing',1,'NaN',1);
+-					md = checkfield(md,'surfaceforcings.smb_pos_min','forcing',1,'NaN',1);
+-					md = checkfield(md,'surfaceforcings.a_pos','forcing',1,'NaN',1);
+ 					md = checkfield(md,'surfaceforcings.b_pos','forcing',1,'NaN',1);
+-					md = checkfield(md,'surfaceforcings.a_neg','forcing',1,'NaN',1);
+ 					md = checkfield(md,'surfaceforcings.b_neg','forcing',1,'NaN',1);
+ 				else
+ 					md = checkfield(md,'surfaceforcings.mass_balance','forcing',1,'NaN',1);
+@@ -91,14 +81,9 @@
+ 			fielddisplay(obj,'delta18o','delta18o, required if pdd is activated and delta18o activated');
+ 			fielddisplay(obj,'delta18o_surface','surface elevation of the delta18o site, required if pdd is activated and delta18o activated');
+ 			fielddisplay(obj,'issmbgradients','is smb gradients method activated (0 or 1, default is 0)');
+-			fielddisplay(obj,'hc',' elevation of intersection between accumulation and ablation regime required if smb gradients is activated');
+ 			fielddisplay(obj,'href',' reference elevation from which deviation is used to calculate SMB adjustment in smb gradients method');
+ 			fielddisplay(obj,'smbref',' reference smb from which deviation is calculated in smb gradients method');
+-			fielddisplay(obj,'smb_pos_max',' maximum value of positive smb required if smb gradients is activated');
+-			fielddisplay(obj,'smb_pos_min',' minimum value of positive smb required if smb gradients is activated');
+-			fielddisplay(obj,'a_pos',' intercept of hs - smb regression line for accumulation regime required if smb gradients is activated');
+ 			fielddisplay(obj,'b_pos',' slope of hs - smb regression line for accumulation regime required if smb gradients is activated');
+-			fielddisplay(obj,'a_neg',' intercept of hs - smb regression line for ablation regime required if smb gradients is activated');
+ 			fielddisplay(obj,'b_neg',' slope of hs - smb regression line for ablation regime required if smb gradients is activated');
+ 
+ 		end % }}}
+@@ -121,14 +106,9 @@
+ 			end
+ 			WriteData(fid,'object',obj,'fieldname','issmbgradients','format','Boolean');
+ 			if obj.issmbgradients,
+-				WriteData(fid,'object',obj,'fieldname','hc','format','DoubleMat','mattype',1);
+ 				WriteData(fid,'object',obj,'fieldname','href','format','DoubleMat','mattype',1);
+ 				WriteData(fid,'object',obj,'fieldname','smbref','format','DoubleMat','mattype',1);
+-				WriteData(fid,'object',obj,'fieldname','smb_pos_max','format','DoubleMat','mattype',1);
+-				WriteData(fid,'object',obj,'fieldname','smb_pos_min','format','DoubleMat','mattype',1);
+-				WriteData(fid,'object',obj,'fieldname','a_pos','format','DoubleMat','mattype',1);
+ 				WriteData(fid,'object',obj,'fieldname','b_pos','format','DoubleMat','mattype',1);
+-				WriteData(fid,'object',obj,'fieldname','a_neg','format','DoubleMat','mattype',1);
+ 				WriteData(fid,'object',obj,'fieldname','b_neg','format','DoubleMat','mattype',1);
+ 			end
+ 
Index: /issm/oecreview/Archive/14064-14311/ISSM-14175-14176.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14175-14176.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14175-14176.diff	(revision 14312)
@@ -0,0 +1,84 @@
+Index: ../trunk-jpl/src/m/classes/pairoptions.m
+===================================================================
+--- ../trunk-jpl/src/m/classes/pairoptions.m	(revision 14175)
++++ ../trunk-jpl/src/m/classes/pairoptions.m	(revision 14176)
+@@ -4,10 +4,10 @@
+ %      pairoptions=pairoptions();
+ %      pairoptions=pairoptions('module',true,'solver',false);
+ 
+-classdef pairoptions
++classdef pairoptions < handle
+ 	properties (SetAccess = private,GetAccess = private) 
+ 		functionname = '';
+-		list         = cell(0,2);
++		list         = cell(0,3);
+ 	end
+ 	methods
+ 		function obj = pairoptions(varargin) % {{{
+@@ -37,13 +37,14 @@
+ 			numoptions = (nargin-1)/2;
+ 
+ 			%Allocate memory
+-			obj.list=cell(numoptions,2);
++			obj.list=cell(numoptions,3);
+ 
+ 			%go through varargin and build list of obj
+ 			for i=1:numoptions,
+ 				if ischar(varargin{2*i-1}),
+ 					obj.list{i,1}=varargin{2*i-1};
+ 					obj.list{i,2}=varargin{2*i};
++					obj.list{i,3}=false; %used?
+ 				else
+ 					%option is not a string, ignore it
+ 					disp(['WARNING: option number ' num2str(i) ' is not a string, it will be ignored']);
+@@ -56,6 +57,7 @@
+ 			if ischar(field),
+ 				obj.list{end+1,1} = field;
+ 				obj.list{end,2}   = value;
++				obj.list{end,3}   = false;
+ 			end
+ 		end % }}}
+ 		function obj = addfielddefault(obj,field,value) % {{{
+@@ -64,6 +66,7 @@
+ 				if ~exist(obj,field),
+ 					obj.list{end+1,1} = field;
+ 					obj.list{end,2}   = value;
++					obj.list{end,3}   = true;  %It is a default so user will not be notified if not used
+ 				end
+ 			end
+ 		end % }}}
+@@ -90,6 +93,7 @@
+ 			if isempty(lines),
+ 				%add new field if not found
+ 				obj=addfield(obj,field,newvalue);
++				obj.list{end,3}=true; % do not notify user if unused
+ 			else
+ 				for i=1:length(lines),
+ 					obj.list{lines(i),2}=newvalue;
+@@ -116,6 +120,16 @@
+ 			%remove duplicates from the options list
+ 			obj.list=obj.list(lines,:);
+ 		end % }}}
++		function displayunused(obj) % {{{
++			%DISPLAYUNUSED - display unused options
++
++			numoptions=size(obj.list,1);
++			for i=1:numoptions,
++				if ~obj.list{i,3},
++					disp(['WARNING: option ' obj.list{i,1} ' was not used'])
++				end
++			end
++		end % }}}
+ 		function disp(obj) % {{{
+ 			disp(sprintf('   functionname: %s',obj.functionname));
+ 			if ~isempty(obj.list),
+@@ -186,7 +200,8 @@
+ 			%Recover option
+ 			pos=find(strcmpi(obj.list(:,1),field));
+ 			if ~isempty(pos),
+-				value=obj.list{pos(1),2}; %ignore extra entry
++				value=obj.list{pos(1),2}; % ignore extra entry
++				obj.list{pos(1),3}=true;  % option used
+ 				return;
+ 			end
+ 
Index: /issm/oecreview/Archive/14064-14311/ISSM-14176-14177.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14176-14177.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14176-14177.diff	(revision 14312)
@@ -0,0 +1,13 @@
+Index: ../trunk-jpl/src/m/plot/plotmodel.m
+===================================================================
+--- ../trunk-jpl/src/m/plot/plotmodel.m	(revision 14176)
++++ ../trunk-jpl/src/m/plot/plotmodel.m	(revision 14177)
+@@ -47,6 +47,8 @@
+ 	try,
+ 		for i=1:numberofplots,
+ 			plot_manager(getfieldvalue(options.list{i},'model',md),options.list{i},subplotwidth,nlines,ncols,i);
++			%List all unused options
++			displayunused(options.list{i})
+ 		end
+ 	catch me,
+ 		%figure(figurenumber),close;
Index: /issm/oecreview/Archive/14064-14311/ISSM-14177-14178.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14177-14178.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14177-14178.diff	(revision 14312)
@@ -0,0 +1,14 @@
+Index: ../trunk-jpl/src/m/plot/kmlgroundoverlay.m
+===================================================================
+--- ../trunk-jpl/src/m/plot/kmlgroundoverlay.m	(revision 14177)
++++ ../trunk-jpl/src/m/plot/kmlgroundoverlay.m	(revision 14178)
+@@ -33,7 +33,8 @@
+ north=max(md.mesh.lat);
+ 
+ %print image at high resolution
+-printmodel([kmlroot '/' kmlimagename],kmlimagetype,'trim','on','resolution',kmlresolution,'margin','off','frame','off');
++export_fig([kmlroot '/' kmlimagename],'-transparent');
++%printmodel([kmlroot '/' kmlimagename],kmlimagetype,'trim','on','resolution',kmlresolution,'margin','off','frame','off');
+ 
+ %now write kml file
+ fid=fopen([kmlroot '/' kmlfilename],'w');
Index: /issm/oecreview/Archive/14064-14311/ISSM-14178-14179.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14178-14179.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14178-14179.diff	(revision 14312)
@@ -0,0 +1,83 @@
+Index: ../trunk-jpl/test/NightlyRun/test328.m
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/test328.m	(revision 14178)
++++ ../trunk-jpl/test/NightlyRun/test328.m	(revision 14179)
+@@ -3,23 +3,11 @@
+ md=parameterize(md,'../Par/SquareSheetConstrained.par');
+ md=setflowequation(md,'macayeal','all');
+ md.surfaceforcings.issmbgradients=1;
+-md.surfaceforcings.smb_pos_max=5000. - 0.00005*md.mesh.x + 0.0001*md.mesh.y;
+-md.surfaceforcings.smb_pos_min=1250. + 0.00005*md.mesh.x -0.0001*md.mesh.y;
+-md.surfaceforcings.a_pos=15000. - 0.000051*md.mesh.x + 0.00011*md.mesh.y;
+ md.surfaceforcings.b_pos=-100. + 0.00005*md.mesh.x - 0.0001*md.mesh.y;
+-md.surfaceforcings.a_neg=-20000. - 0.00005*md.mesh.x + 0.0001*md.mesh.y;
+ md.surfaceforcings.b_neg=250. + 0.000051*md.mesh.x - 0.00011*md.mesh.y;
+-md.surfaceforcings.hc=(md.surfaceforcings.a_pos-md.surfaceforcings.a_neg)./(md.surfaceforcings.b_neg-md.surfaceforcings.b_pos);
++md.surfaceforcings.href=md.geometry.surface;
++md.surfaceforcings.smbref= 1000 - 0.001*md.mesh.x - 0.005*md.mesh.y;
+ md.transient.requested_outputs=TotalSmbEnum();
+-md.surfaceforcings.href=md.geometry.surface;
+-for i=1:size(md.surfaceforcings.hc),
+-	if md.geometry.surface(i)<md.surfaceforcings.hc(i)
+-		smbref(i)=md.surfaceforcings.a_neg(i)+md.surfaceforcings.b_neg(i)*md.geometry.surface(i);
+-	else
+-		smbref(i)=md.surfaceforcings.a_pos(i)+md.surfaceforcings.b_pos(i)*md.geometry.surface(i);
+-	end
+-end
+-md.surfaceforcings.smbref=smbref';
+ md.cluster=generic('name',oshostname(),'np',3);
+ md=solve(md,TransientSolutionEnum());
+ 
+Index: ../trunk-jpl/test/NightlyRun/runme.m
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/runme.m	(revision 14178)
++++ ../trunk-jpl/test/NightlyRun/runme.m	(revision 14179)
+@@ -78,7 +78,12 @@
+ 	if ( strncmp(flist(i).name,'test',4) &...                         %File name must start with 'test'
+ 			strncmp(fliplr(flist(i).name),fliplr('.m'),2)&...           %File name must end by '.m'
+ 			~strcmp(flist(i).name,'test.m'))                            %File name must be different than 'test.m'
+-		list_ids(end+1)=eval(flist(i).name(5:end-2));                  %Keep test id only (skip 'test' and '.m')
++		id=str2num(flist(i).name(5:end-2));
++		if isempty(id),
++			disp(['WARNING: ignore file ' flist(i).name ]);
++		else
++			list_ids(end+1)=eval(flist(i).name(5:end-2));                  %Keep test id only (skip 'test' and '.m')
++		end
+ 	end
+ end
+ [i1,i2]=parallelrange(rank,numprocs,length(list_ids));               %Get tests for this cpu only
+Index: ../trunk-jpl/test/NightlyRun/test329.m
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/test329.m	(revision 14178)
++++ ../trunk-jpl/test/NightlyRun/test329.m	(revision 14179)
+@@ -4,28 +4,16 @@
+ md=extrude(md,3,1.);
+ md=setflowequation(md,'pattyn','all');
+ md.surfaceforcings.issmbgradients=1;
+-md.surfaceforcings.smb_pos_max=5000. - 0.00005*md.mesh.x + 0.0001*md.mesh.y;
+-md.surfaceforcings.smb_pos_min=1250. + 0.00005*md.mesh.x -0.0001*md.mesh.y;
+-md.surfaceforcings.a_pos=15000. - 0.000051*md.mesh.x + 0.00011*md.mesh.y;
+ md.surfaceforcings.b_pos=-100. + 0.00005*md.mesh.x - 0.0001*md.mesh.y;
+-md.surfaceforcings.a_neg=-20000. - 0.00005*md.mesh.x + 0.0001*md.mesh.y;
+ md.surfaceforcings.b_neg=250. + 0.000051*md.mesh.x - 0.00011*md.mesh.y;
+-md.surfaceforcings.hc=(md.surfaceforcings.a_pos-md.surfaceforcings.a_neg)./(md.surfaceforcings.b_neg-md.surfaceforcings.b_pos);
+ md.surfaceforcings.href=md.geometry.surface;
+-for i=1:size(md.surfaceforcings.hc),
+-	if md.geometry.surface(i)<md.surfaceforcings.hc(i)
+-		smbref(i)=md.surfaceforcings.a_neg(i)+md.surfaceforcings.b_neg(i)*md.geometry.surface(i);
+-	else
+-		smbref(i)=md.surfaceforcings.a_pos(i)+md.surfaceforcings.b_pos(i)*md.geometry.surface(i);
+-	end
+-end
+-md.surfaceforcings.smbref=smbref';
++md.surfaceforcings.smbref= 1000 - 0.001*md.mesh.x - 0.005*md.mesh.y;
+ md.transient.requested_outputs=TotalSmbEnum();
+ md.cluster=generic('name',oshostname(),'np',3);
+ md=solve(md,TransientSolutionEnum());
+ 
+ %Fields and tolerances to track changes
+-field_names     ={'Vx1','Vy1','Vz1','Vel1','Bed1','Surface1','Thickness1','Temperature1','SMB1','TotalSmb1','Vx2','Vy2','Vz2','Vel2','Bed2','Surface2','Thickness2','Temperature2','SMB2','TotalSmb1','Vx3','Vy3','Vz3','Vel3','Bed3','Surface3','Thickness3','Temperature3','SMB3','TotalSmb1'};
++field_names     ={'Vx1','Vy1','Vz1','Vel1','Bed1','Surface1','Thickness1','Temperature1','SMB1','TotalSmb1','Vx2','Vy2','Vz2','Vel2','Bed2','Surface2','Thickness2','Temperature2','SMB2','TotalSmb2','Vx3','Vy3','Vz3','Vel3','Bed3','Surface3','Thickness3','Temperature3','SMB3','TotalSmb3'};
+ field_tolerances={1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
+ 	1e-09,1e-09,1e-10,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
+ 	1e-09,5e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10};
Index: /issm/oecreview/Archive/14064-14311/ISSM-14179-14180.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14179-14180.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14179-14180.diff	(revision 14312)
@@ -0,0 +1,4 @@
+Index: ../trunk-jpl/test/Archives/Archive328.nc
+===================================================================
+Cannot display: file marked as a binary type.
+svn:mime-type = application/octet-stream
Index: /issm/oecreview/Archive/14064-14311/ISSM-14180-14181.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14180-14181.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14180-14181.diff	(revision 14312)
@@ -0,0 +1,4 @@
+Index: ../trunk-jpl/test/Archives/Archive329.nc
+===================================================================
+Cannot display: file marked as a binary type.
+svn:mime-type = application/octet-stream
Index: /issm/oecreview/Archive/14064-14311/ISSM-14181-14182.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14181-14182.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14181-14182.diff	(revision 14312)
@@ -0,0 +1,364 @@
+Index: ../trunk-jpl/src/m/qmu/dakota_out_parse.m
+===================================================================
+--- ../trunk-jpl/src/m/qmu/dakota_out_parse.m	(revision 14181)
++++ ../trunk-jpl/src/m/qmu/dakota_out_parse.m	(revision 14182)
+@@ -197,7 +197,7 @@
+     %dmean  =mean   (data);
+     %dstddev=std    (data,0);
+     [dmean,dstddev,dmeanci,dstddevci]=...
+-        normfit(data,0.05);
++        normfit_issm(data,0.05);
+ else
+     dmean    =zeros(1,size(data,2));
+     dstddev  =zeros(1,size(data,2));
+@@ -205,7 +205,7 @@
+     dstddevci=zeros(2,size(data,2));
+     for i=1:size(data,2)
+         [dmean(1,i),dstddev(1,i),dmeanci(:,i),dstddevci(:,i)]=...
+-            normfit(data(:,i),0.05);
++            normfit_issm(data(:,i),0.05);
+     end
+ end
+ 
+Index: ../trunk-jpl/src/m/qmu/dakota_cdfs.m
+===================================================================
+--- ../trunk-jpl/src/m/qmu/dakota_cdfs.m	(revision 14181)
++++ ../trunk-jpl/src/m/qmu/dakota_cdfs.m	(revision 14182)
+@@ -246,7 +246,7 @@
+     for i=1:length(resp)
+         irow=irow+1;
+         cdf(irow,1)=resp(i);
+-        cdf(irow,2)=normcdf(resp(i),mu,sigma);
++        cdf(irow,2)=normcdf_issm(resp(i),mu,sigma);
+         cdf(irow,3)=(mu-resp(i))/sigma;
+         cdf(irow,4)=(mu-resp(i))/sigma;
+     end
+@@ -255,10 +255,10 @@
+ 
+     for i=1:length(prob)
+         irow=irow+1;
+-        cdf(irow,1)=norminv(prob(i),mu,sigma);
++        cdf(irow,1)=norminv_issm(prob(i),mu,sigma);
+         cdf(irow,2)=prob(i);
+-        cdf(irow,3)=-norminv(prob(i),0,1);
+-        cdf(irow,4)=-norminv(prob(i),0,1);
++        cdf(irow,3)=-norminv_issm(prob(i),0,1);
++        cdf(irow,4)=-norminv_issm(prob(i),0,1);
+     end
+ 
+ %  compute quantities, given reliabilities
+@@ -266,7 +266,7 @@
+     for i=1:length(rel)
+         irow=irow+1;
+         cdf(irow,1)=mu-sigma*rel(i);
+-        cdf(irow,2)=normcdf(-rel(i),0,1);
++        cdf(irow,2)=normcdf_issm(-rel(i),0,1);
+         cdf(irow,3)=rel(i);
+         cdf(irow,4)=rel(i);
+     end
+@@ -276,7 +276,7 @@
+     for i=1:length(grel)
+         irow=irow+1;
+         cdf(irow,1)=mu-sigma*grel(i);
+-        cdf(irow,2)=normcdf(-grel(i),0,1);
++        cdf(irow,2)=normcdf_issm(-grel(i),0,1);
+         cdf(irow,3)=grel(i);
+         cdf(irow,4)=grel(i);
+     end
+Index: ../trunk-jpl/src/m/qmu/plot/plot_normdist_bars.m
+===================================================================
+--- ../trunk-jpl/src/m/qmu/plot/plot_normdist_bars.m	(revision 14181)
++++ ../trunk-jpl/src/m/qmu/plot/plot_normdist_bars.m	(revision 14182)
+@@ -125,7 +125,7 @@
+ 
+ if ~isfield(dresp,'mean') || ~isfield(dresp,'stddev')
+     for i=1:length(dresp)
+-        [dresp(i).mean,dresp(i).stddev]=normfit(dresp(i).sample);
++        [dresp(i).mean,dresp(i).stddev]=normfit_issm(dresp(i).sample);
+     end
+ end
+ 
+@@ -140,7 +140,7 @@
+ 
+ for i=1:length(dresp)
+     descr(i)=cellstr(dresp(i).descriptor);
+-    data(i,:)=norminv(prob,dresp(i).mean,dresp(i).stddev);
++    data(i,:)=norminv_issm(prob,dresp(i).mean,dresp(i).stddev);
+ end
+ 
+ for j=length(prob):-1:2
+Index: ../trunk-jpl/src/m/qmu/plot/plot_rlev_bars_ci.m
+===================================================================
+--- ../trunk-jpl/src/m/qmu/plot/plot_rlev_bars_ci.m	(revision 14181)
++++ ../trunk-jpl/src/m/qmu/plot/plot_rlev_bars_ci.m	(revision 14182)
+@@ -132,16 +132,16 @@
+ %  calculate 95% confidence intervals (same as dakota)
+         [dresp(i).mean,dresp(i).stddev,...
+          dresp(i).meanci,dresp(i).stddevci]=...
+-            normfit(sampr(:,i),0.05);
++            normfit_issm(sampr(:,i),0.05);
+         display('Using calculated normal fits from sample data.')
+     end
+ 
+     if ~isfield(dresp(i),'cdf') || isempty(dresp(i).cdf)
+ %  use minus/plus integer standard deviations
+         sdvect=[-4 -3 -2 -1 0 1 2 3 4];
+-        dresp(i).cdf(:,2)=normcdf(sdvect,0,1);
+-        dresp(i).cdf(:,1)=norminv(dresp(i).cdf(:,2),...
+-                                  dresp(i).mean,dresp(i).stddev);
++        dresp(i).cdf(:,2)=normcdf_issm(sdvect,0,1);
++        dresp(i).cdf(:,1)=norminv_issm(dresp(i).cdf(:,2),...
++                                       dresp(i).mean,dresp(i).stddev);
+         display('Using integer standard deviations for percentages.')
+ 
+         if ~exist('lstr','var') || isempty(lstr)
+@@ -175,7 +175,7 @@
+         if isfield(dresp(i),'mean'  ) && ~isempty(dresp(i).mean  ) && ...
+            isfield(dresp(i),'stddev') && ~isempty(dresp(i).stddev)
+             descr(end+1)=cellstr([dresp(i).descriptor ' norm']);
+-            cdfr(end+1,:)=norminv(dresp(i).cdf(:,2),dresp(i).mean,dresp(i).stddev);
++            cdfr(end+1,:)=norminv_issm(dresp(i).cdf(:,2),dresp(i).mean,dresp(i).stddev);
+         end
+         if isfield(dresp(i),'meanci'  ) && ~isempty(dresp(i).meanci  ) && ...
+            isfield(dresp(i),'stddevci') && ~isempty(dresp(i).stddevci)
+@@ -183,10 +183,10 @@
+             descr(end+1)=cellstr([dresp(i).descriptor ' norm--']);
+             descr(end+1)=cellstr([dresp(i).descriptor ' norm+-']);
+             descr(end+1)=cellstr([dresp(i).descriptor ' norm++']);
+-            cdfr(end+1,:)=norminv(dresp(i).cdf(:,2),dresp(i).meanci(1),dresp(i).stddevci(2));
+-            cdfr(end+1,:)=norminv(dresp(i).cdf(:,2),dresp(i).meanci(1),dresp(i).stddevci(1));
+-            cdfr(end+1,:)=norminv(dresp(i).cdf(:,2),dresp(i).meanci(2),dresp(i).stddevci(1));
+-            cdfr(end+1,:)=norminv(dresp(i).cdf(:,2),dresp(i).meanci(2),dresp(i).stddevci(2));
++            cdfr(end+1,:)=norminv_issm(dresp(i).cdf(:,2),dresp(i).meanci(1),dresp(i).stddevci(2));
++            cdfr(end+1,:)=norminv_issm(dresp(i).cdf(:,2),dresp(i).meanci(1),dresp(i).stddevci(1));
++            cdfr(end+1,:)=norminv_issm(dresp(i).cdf(:,2),dresp(i).meanci(2),dresp(i).stddevci(1));
++            cdfr(end+1,:)=norminv_issm(dresp(i).cdf(:,2),dresp(i).meanci(2),dresp(i).stddevci(2));
+         end
+     end
+ end
+Index: ../trunk-jpl/src/m/qmu/plot/plot_cdf.m
+===================================================================
+--- ../trunk-jpl/src/m/qmu/plot/plot_cdf.m	(revision 14181)
++++ ../trunk-jpl/src/m/qmu/plot/plot_cdf.m	(revision 14182)
+@@ -138,9 +138,9 @@
+         xdata(1:lcdfr(i),i)=dresp(i).cdf(:,1);
+         if strncmpi(cplot,'p',1) && ...
+            exist('ynorm','var') && strncmpi(ynorm,'y',1)
+-             ydata(1:lcdfr(i),i)=norminv(dresp(i).cdf(:,iplot),0,1);
++             ydata(1:lcdfr(i),i)=norminv_issm(dresp(i).cdf(:,iplot),0,1);
+         else
+-             ydata(1:lcdfr(i),i)=        dresp(i).cdf(:,iplot);
++             ydata(1:lcdfr(i),i)=             dresp(i).cdf(:,iplot);
+         end
+     end
+ end
+@@ -236,7 +236,7 @@
+         label(i)=cellstr(num2str(yprob(i)));
+     end
+ 
+-    tick  = norminv(yprob,0,1);
++    tick  = norminv_issm(yprob,0,1);
+     set(ax1,'YTick',tick,'YTickLabel',label);
+     ylim([tick(1) tick(end)])
+ end
+Index: ../trunk-jpl/src/m/qmu/plot/plot_hist_norm_ci.m
+===================================================================
+--- ../trunk-jpl/src/m/qmu/plot/plot_hist_norm_ci.m	(revision 14181)
++++ ../trunk-jpl/src/m/qmu/plot/plot_hist_norm_ci.m	(revision 14182)
+@@ -128,7 +128,7 @@
+     for i=1:size(sampr,2)
+ %  calculate 95% confidence intervals (same as dakota)
+         [mu(i),sigma(i),muci(:,i),sigmaci(:,i)]=...
+-            normfit(sampr(:,i),0.05);
++            normfit_issm(sampr(:,i),0.05);
+     end
+     display('Using calculated normal fits.')
+ end
+@@ -190,11 +190,11 @@
+ ncol=size(sampr,2);
+ if exist('mu','var') && exist('sigma','var')
+     for i=1:ncol
+-        dbelow(end+1)=normcdf(edges(  1),mu(i),sigma(i));
++        dbelow(end+1)=normcdf_issm(edges(  1),mu(i),sigma(i));
+         dhistc(1:size(dhistc,1)-1,end+1)=...
+-            normcdf(edges(2:end  ),mu(i),sigma(i))-...
+-            normcdf(edges(1:end-1),mu(i),sigma(i));
+-        dabove(end+1)=norminv(edges(end),mu(i),sigma(i));
++            normcdf_issm(edges(2:end  ),mu(i),sigma(i))-...
++            normcdf_issm(edges(1:end-1),mu(i),sigma(i));
++        dabove(end+1)=norminv_issm(edges(end),mu(i),sigma(i));
+         if exist('descr','var')
+             descr(end+1)={[descr{i} ' norm']};
+         end
+@@ -203,41 +203,41 @@
+ 
+ if exist('muci','var') && exist('sigmaci','var')
+     for i=1:ncol
+-        dbelow(end+1)=normcdf(edges(  1),muci(1,i),sigmaci(2,i));
++        dbelow(end+1)=normcdf_issm(edges(  1),muci(1,i),sigmaci(2,i));
+         dhistc(1:size(dhistc,1)-1,end+1)=...
+-            normcdf(edges(2:end  ),muci(1,i),sigmaci(2,i))-...
+-            normcdf(edges(1:end-1),muci(1,i),sigmaci(2,i));
+-        dabove(end+1)=norminv(edges(end),muci(1,i),sigmaci(2,i));
++            normcdf_issm(edges(2:end  ),muci(1,i),sigmaci(2,i))-...
++            normcdf_issm(edges(1:end-1),muci(1,i),sigmaci(2,i));
++        dabove(end+1)=norminv_issm(edges(end),muci(1,i),sigmaci(2,i));
+         if exist('descr','var')
+             descr(end+1)={[descr{i} ' norm-+']};
+         end
+     end
+     for i=1:ncol
+-        dbelow(end+1)=normcdf(edges(  1),muci(1,i),sigmaci(1,i));
++        dbelow(end+1)=normcdf_issm(edges(  1),muci(1,i),sigmaci(1,i));
+         dhistc(1:size(dhistc,1)-1,end+1)=...
+-            normcdf(edges(2:end  ),muci(1,i),sigmaci(1,i))-...
+-            normcdf(edges(1:end-1),muci(1,i),sigmaci(1,i));
+-        dabove(end+1)=norminv(edges(end),muci(1,i),sigmaci(1,i));
++            normcdf_issm(edges(2:end  ),muci(1,i),sigmaci(1,i))-...
++            normcdf_issm(edges(1:end-1),muci(1,i),sigmaci(1,i));
++        dabove(end+1)=norminv_issm(edges(end),muci(1,i),sigmaci(1,i));
+         if exist('descr','var')
+             descr(end+1)={[descr{i} ' norm--']};
+         end
+     end
+     for i=1:ncol
+-        dbelow(end+1)=normcdf(edges(  1),muci(2,i),sigmaci(1,i));
++        dbelow(end+1)=normcdf_issm(edges(  1),muci(2,i),sigmaci(1,i));
+         dhistc(1:size(dhistc,1)-1,end+1)=...
+-            normcdf(edges(2:end  ),muci(2,i),sigmaci(1,i))-...
+-            normcdf(edges(1:end-1),muci(2,i),sigmaci(1,i));
+-        dabove(end+1)=norminv(edges(end),muci(2,i),sigmaci(1,i));
++            normcdf_issm(edges(2:end  ),muci(2,i),sigmaci(1,i))-...
++            normcdf_issm(edges(1:end-1),muci(2,i),sigmaci(1,i));
++        dabove(end+1)=norminv_issm(edges(end),muci(2,i),sigmaci(1,i));
+         if exist('descr','var')
+             descr(end+1)={[descr{i} ' norm+-']};
+         end
+     end
+     for i=1:ncol
+-        dbelow(end+1)=normcdf(edges(  1),muci(2,i),sigmaci(2,i));
++        dbelow(end+1)=normcdf_issm(edges(  1),muci(2,i),sigmaci(2,i));
+         dhistc(1:size(dhistc,1)-1,end+1)=...
+-            normcdf(edges(2:end  ),muci(2,i),sigmaci(2,i))-...
+-            normcdf(edges(1:end-1),muci(2,i),sigmaci(2,i));
+-        dabove(end+1)=norminv(edges(end),muci(2,i),sigmaci(2,i));
++            normcdf_issm(edges(2:end  ),muci(2,i),sigmaci(2,i))-...
++            normcdf_issm(edges(1:end-1),muci(2,i),sigmaci(2,i));
++        dabove(end+1)=norminv_issm(edges(end),muci(2,i),sigmaci(2,i));
+         if exist('descr','var')
+             descr(end+1)={[descr{i} ' norm++']};
+         end
+Index: ../trunk-jpl/src/m/qmu/plot/plot_hist_norm.m
+===================================================================
+--- ../trunk-jpl/src/m/qmu/plot/plot_hist_norm.m	(revision 14181)
++++ ../trunk-jpl/src/m/qmu/plot/plot_hist_norm.m	(revision 14182)
+@@ -223,11 +223,11 @@
+ ncol=size(sampr,2);
+ if exist('mu','var') && exist('sigma','var')
+     for i=1:ncol
+-        dbelow(end+1)=normcdf(edges(  1),mu(i),sigma(i));
++        dbelow(end+1)=normcdf_issm(edges(  1),mu(i),sigma(i));
+         dhistc(1:size(dhistc,1)-1,end+1)=...
+-            normcdf(edges(2:end  ),mu(i),sigma(i))-...
+-            normcdf(edges(1:end-1),mu(i),sigma(i));
+-        dabove(end+1)=norminv(edges(end),mu(i),sigma(i));
++            normcdf_issm(edges(2:end  ),mu(i),sigma(i))-...
++            normcdf_issm(edges(1:end-1),mu(i),sigma(i));
++        dabove(end+1)=norminv_issm(edges(end),mu(i),sigma(i));
+         if exist('descr','var')
+             descr(end+1)={[descr{i} ' norm']};
+         end
+Index: ../trunk-jpl/src/m/qmu/dakota_moments.m
+===================================================================
+--- ../trunk-jpl/src/m/qmu/dakota_moments.m	(revision 14181)
++++ ../trunk-jpl/src/m/qmu/dakota_moments.m	(revision 14182)
+@@ -132,9 +132,16 @@
+     mu   =mean(samp);
+     sigma=std(samp);
+ 
+-    muci(1)   =mu-tinv(prob,nsamp-1)*sigma/sqrt(nsamp);
+-    muci(2)   =mu+tinv(prob,nsamp-1)*sigma/sqrt(nsamp);
+-    sigmaci(1)=sigma*sqrt((nsamp-1)/chi2inv(prob  ,nsamp-1));
+-    sigmaci(2)=sigma*sqrt((nsamp-1)/chi2inv(1-prob,nsamp-1));
++	try
++        muci(1,1)   =mu-tinv(prob,nsamp-1)*sigma/sqrt(nsamp);
++        muci(2,1)   =mu+tinv(prob,nsamp-1)*sigma/sqrt(nsamp);
++        sigmaci(1,1)=sigma*sqrt((nsamp-1)/chi2inv(prob  ,nsamp-1));
++        sigmaci(2,1)=sigma*sqrt((nsamp-1)/chi2inv(1-prob,nsamp-1));
++	catch me
++        muci(1,1)   =mu;
++        muci(2,1)   =mu;
++        sigmaci(1,1)=sigma;
++        sigmaci(2,1)=sigma;
++	end
+ 
+ end
+Index: ../trunk-jpl/src/m/miscellaneous/normfit_issm.m
+===================================================================
+--- ../trunk-jpl/src/m/miscellaneous/normfit_issm.m	(revision 0)
++++ ../trunk-jpl/src/m/miscellaneous/normfit_issm.m	(revision 14182)
+@@ -0,0 +1,36 @@
++%
++%  wrapper for normfit to avoid using the matlab statistics toolbox.
++%
++function [muhat,sigmahat,muci,sigmaci]=normfit_issm(x,alpha)
++
++%  remove any NaN
++
++	x=x(~isnan(x(:)));
++	n=length(x);
++
++%  explicitly calculate the moments
++
++	muhat   =mean(x);
++	sigmahat=std(x);
++
++	if (nargout>2)
++		if ~exist('alpha','var')
++			alpha=0.05;
++		end
++		prob=1.-alpha/2.;
++
++		try
++			muci(1,1)   =muhat-tinv(prob,n-1)*sigmahat/sqrt(n);
++			muci(2,1)   =muhat+tinv(prob,n-1)*sigmahat/sqrt(n);
++			sigmaci(1,1)=sigmahat*sqrt((n-1)/chi2inv(prob   ,n-1));
++			sigmaci(2,1)=sigmahat*sqrt((n-1)/chi2inv(1.-prob,n-1));
++		catch me
++			muci(1,1)   =muhat;
++			muci(2,1)   =muhat;
++			sigmaci(1,1)=sigmahat;
++			sigmaci(2,1)=sigmahat;
++		end
++	end
++
++end
++
+Index: ../trunk-jpl/src/m/miscellaneous/normcdf_issm.m
+===================================================================
+--- ../trunk-jpl/src/m/miscellaneous/normcdf_issm.m	(revision 0)
++++ ../trunk-jpl/src/m/miscellaneous/normcdf_issm.m	(revision 14182)
+@@ -0,0 +1,9 @@
++%
++%  wrapper for normcdf to avoid using the matlab statistics toolbox.
++%
++function [p]=normcdf_issm(x,mu,sigma)
++
++	p=(1.+erf((x-mu)/(sigma*sqrt(2.))))/2.;
++
++end
++
+Index: ../trunk-jpl/src/m/miscellaneous/norminv_issm.m
+===================================================================
+--- ../trunk-jpl/src/m/miscellaneous/norminv_issm.m	(revision 0)
++++ ../trunk-jpl/src/m/miscellaneous/norminv_issm.m	(revision 14182)
+@@ -0,0 +1,9 @@
++%
++%  wrapper for norminv to avoid using the matlab statistics toolbox.
++%
++function [x]=norminv_issm(p,mu,sigma)
++
++	x=mu+sigma*sqrt(2.)*erfinv(2.*p-1.);
++
++end
++
Index: /issm/oecreview/Archive/14064-14311/ISSM-14182-14183.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14182-14183.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14182-14183.diff	(revision 14312)
@@ -0,0 +1,14 @@
+Index: ../trunk-jpl/m4/issm_options.m4
+===================================================================
+--- ../trunk-jpl/m4/issm_options.m4	(revision 14182)
++++ ../trunk-jpl/m4/issm_options.m4	(revision 14183)
+@@ -1045,7 +1045,8 @@
+ 		dnl check that --with-fortran-lib may have been provided
+ 		if test -n "$FORTRAN_LIB" ; then
+ 			dnl check that library provided EXISTS!
+-			if test -f "$FORTRAN_LIB"; then
++		   FORTRAN_DIR=$(echo $FORTRAN_LIB | sed -e "s/-L//g" | awk '{print $[1]}')
++			if test -d "$FORTRAN_DIR" || test -f "$FORTRAN_DIR"; then
+ 				FORTRANLIB="$FORTRAN_LIB"
+ 				AC_DEFINE([_HAVE_FORTRAN_],[1],[with FORTRAN in ISSM src])
+ 				AC_SUBST([FORTRANLIB])
Index: /issm/oecreview/Archive/14064-14311/ISSM-14183-14184.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14183-14184.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14183-14184.diff	(revision 14312)
@@ -0,0 +1,172 @@
+Index: ../trunk-jpl/src/m/enum/SurfaceforcingsSmbPosMinEnum.m
+===================================================================
+--- ../trunk-jpl/src/m/enum/SurfaceforcingsSmbPosMinEnum.m	(revision 14183)
++++ ../trunk-jpl/src/m/enum/SurfaceforcingsSmbPosMinEnum.m	(revision 14184)
+@@ -1,11 +0,0 @@
+-function macro=SurfaceforcingsSmbPosMinEnum()
+-%SURFACEFORCINGSSMBPOSMINENUM - Enum of SurfaceforcingsSmbPosMin
+-%
+-%   WARNING: DO NOT MODIFY THIS FILE
+-%            this file has been automatically generated by src/c/EnumDefinitions/Synchronize.sh
+-%            Please read src/c/EnumDefinitions/README for more information
+-%
+-%   Usage:
+-%      macro=SurfaceforcingsSmbPosMinEnum()
+-
+-macro=StringToEnum('SurfaceforcingsSmbPosMin');
+Index: ../trunk-jpl/src/m/enum/SurfaceforcingsHcEnum.m
+===================================================================
+--- ../trunk-jpl/src/m/enum/SurfaceforcingsHcEnum.m	(revision 14183)
++++ ../trunk-jpl/src/m/enum/SurfaceforcingsHcEnum.m	(revision 14184)
+@@ -1,11 +0,0 @@
+-function macro=SurfaceforcingsHcEnum()
+-%SURFACEFORCINGSHCENUM - Enum of SurfaceforcingsHc
+-%
+-%   WARNING: DO NOT MODIFY THIS FILE
+-%            this file has been automatically generated by src/c/EnumDefinitions/Synchronize.sh
+-%            Please read src/c/EnumDefinitions/README for more information
+-%
+-%   Usage:
+-%      macro=SurfaceforcingsHcEnum()
+-
+-macro=StringToEnum('SurfaceforcingsHc');
+Index: ../trunk-jpl/src/m/enum/SurfaceforcingsSmbPosMaxEnum.m
+===================================================================
+--- ../trunk-jpl/src/m/enum/SurfaceforcingsSmbPosMaxEnum.m	(revision 14183)
++++ ../trunk-jpl/src/m/enum/SurfaceforcingsSmbPosMaxEnum.m	(revision 14184)
+@@ -1,11 +0,0 @@
+-function macro=SurfaceforcingsSmbPosMaxEnum()
+-%SURFACEFORCINGSSMBPOSMAXENUM - Enum of SurfaceforcingsSmbPosMax
+-%
+-%   WARNING: DO NOT MODIFY THIS FILE
+-%            this file has been automatically generated by src/c/EnumDefinitions/Synchronize.sh
+-%            Please read src/c/EnumDefinitions/README for more information
+-%
+-%   Usage:
+-%      macro=SurfaceforcingsSmbPosMaxEnum()
+-
+-macro=StringToEnum('SurfaceforcingsSmbPosMax');
+Index: ../trunk-jpl/src/m/enum/SurfaceforcingsAPosEnum.m
+===================================================================
+--- ../trunk-jpl/src/m/enum/SurfaceforcingsAPosEnum.m	(revision 14183)
++++ ../trunk-jpl/src/m/enum/SurfaceforcingsAPosEnum.m	(revision 14184)
+@@ -1,11 +0,0 @@
+-function macro=SurfaceforcingsAPosEnum()
+-%SURFACEFORCINGSAPOSENUM - Enum of SurfaceforcingsAPos
+-%
+-%   WARNING: DO NOT MODIFY THIS FILE
+-%            this file has been automatically generated by src/c/EnumDefinitions/Synchronize.sh
+-%            Please read src/c/EnumDefinitions/README for more information
+-%
+-%   Usage:
+-%      macro=SurfaceforcingsAPosEnum()
+-
+-macro=StringToEnum('SurfaceforcingsAPos');
+Index: ../trunk-jpl/src/m/enum/SurfaceforcingsANegEnum.m
+===================================================================
+--- ../trunk-jpl/src/m/enum/SurfaceforcingsANegEnum.m	(revision 14183)
++++ ../trunk-jpl/src/m/enum/SurfaceforcingsANegEnum.m	(revision 14184)
+@@ -1,11 +0,0 @@
+-function macro=SurfaceforcingsANegEnum()
+-%SURFACEFORCINGSANEGENUM - Enum of SurfaceforcingsANeg
+-%
+-%   WARNING: DO NOT MODIFY THIS FILE
+-%            this file has been automatically generated by src/c/EnumDefinitions/Synchronize.sh
+-%            Please read src/c/EnumDefinitions/README for more information
+-%
+-%   Usage:
+-%      macro=SurfaceforcingsANegEnum()
+-
+-macro=StringToEnum('SurfaceforcingsANeg');
+Index: ../trunk-jpl/src/m/enum/MaximumNumberOfEnums.m
+===================================================================
+--- ../trunk-jpl/src/m/enum/MaximumNumberOfEnums.m	(revision 14183)
++++ ../trunk-jpl/src/m/enum/MaximumNumberOfEnums.m	(revision 14184)
+@@ -8,4 +8,4 @@
+ %   Usage:
+ %      macro=MaximumNumberOfEnums()
+ 
+-macro=500;
++macro=495;
+Index: ../trunk-jpl/src/m/enum/EnumDefinitions.py
+===================================================================
+--- ../trunk-jpl/src/m/enum/EnumDefinitions.py	(revision 14183)
++++ ../trunk-jpl/src/m/enum/EnumDefinitions.py	(revision 14184)
+@@ -1848,16 +1848,6 @@
+ 
+ 	return StringToEnum('SurfaceforcingsMonthlytemperatures')[0]
+ 
+-def SurfaceforcingsHcEnum():
+-	"""
+-	SURFACEFORCINGSHCENUM - Enum of SurfaceforcingsHc
+-
+-	   Usage:
+-	      macro=SurfaceforcingsHcEnum()
+-	"""
+-
+-	return StringToEnum('SurfaceforcingsHc')[0]
+-
+ def SurfaceforcingsHrefEnum():
+ 	"""
+ 	SURFACEFORCINGSHREFENUM - Enum of SurfaceforcingsHref
+@@ -1878,36 +1868,6 @@
+ 
+ 	return StringToEnum('SurfaceforcingsSmbref')[0]
+ 
+-def SurfaceforcingsSmbPosMaxEnum():
+-	"""
+-	SURFACEFORCINGSSMBPOSMAXENUM - Enum of SurfaceforcingsSmbPosMax
+-
+-	   Usage:
+-	      macro=SurfaceforcingsSmbPosMaxEnum()
+-	"""
+-
+-	return StringToEnum('SurfaceforcingsSmbPosMax')[0]
+-
+-def SurfaceforcingsSmbPosMinEnum():
+-	"""
+-	SURFACEFORCINGSSMBPOSMINENUM - Enum of SurfaceforcingsSmbPosMin
+-
+-	   Usage:
+-	      macro=SurfaceforcingsSmbPosMinEnum()
+-	"""
+-
+-	return StringToEnum('SurfaceforcingsSmbPosMin')[0]
+-
+-def SurfaceforcingsAPosEnum():
+-	"""
+-	SURFACEFORCINGSAPOSENUM - Enum of SurfaceforcingsAPos
+-
+-	   Usage:
+-	      macro=SurfaceforcingsAPosEnum()
+-	"""
+-
+-	return StringToEnum('SurfaceforcingsAPos')[0]
+-
+ def SurfaceforcingsBPosEnum():
+ 	"""
+ 	SURFACEFORCINGSBPOSENUM - Enum of SurfaceforcingsBPos
+@@ -1918,16 +1878,6 @@
+ 
+ 	return StringToEnum('SurfaceforcingsBPos')[0]
+ 
+-def SurfaceforcingsANegEnum():
+-	"""
+-	SURFACEFORCINGSANEGENUM - Enum of SurfaceforcingsANeg
+-
+-	   Usage:
+-	      macro=SurfaceforcingsANegEnum()
+-	"""
+-
+-	return StringToEnum('SurfaceforcingsANeg')[0]
+-
+ def SurfaceforcingsBNegEnum():
+ 	"""
+ 	SURFACEFORCINGSBNEGENUM - Enum of SurfaceforcingsBNeg
+@@ -5016,5 +4966,5 @@
+ 	      macro=MaximumNumberOfEnums()
+ 	"""
+ 
+-	return 500
++	return 495
+ 
Index: /issm/oecreview/Archive/14064-14311/ISSM-14184-14185.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14184-14185.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14184-14185.diff	(revision 14312)
@@ -0,0 +1,21 @@
+Index: ../trunk-jpl/src/android/ISSM_Visual/bin
+===================================================================
+--- ../trunk-jpl/src/android/ISSM_Visual/bin	(revision 14184)
++++ ../trunk-jpl/src/android/ISSM_Visual/bin	(revision 14185)
+
+Property changes on: ../trunk-jpl/src/android/ISSM_Visual/bin
+___________________________________________________________________
+Modified: svn:ignore
+## -1 +1,2 ##
++classes
+ *.apk
+Index: ../trunk-jpl/src/android/ISSM_Visual/gen
+===================================================================
+--- ../trunk-jpl/src/android/ISSM_Visual/gen	(revision 14184)
++++ ../trunk-jpl/src/android/ISSM_Visual/gen	(revision 14185)
+
+Property changes on: ../trunk-jpl/src/android/ISSM_Visual/gen
+___________________________________________________________________
+Added: svn:ignore
+## -0,0 +1 ##
++gov
Index: /issm/oecreview/Archive/14064-14311/ISSM-14185-14186.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14185-14186.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14185-14186.diff	(revision 14312)
@@ -0,0 +1,23 @@
+Index: ../trunk-jpl/src/android/ISSM/project.properties
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/project.properties	(revision 14185)
++++ ../trunk-jpl/src/android/ISSM/project.properties	(revision 14186)
+@@ -11,4 +11,4 @@
+ #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
+ 
+ # Project target.
+-target=android-17
++target=android-16
+Index: ../trunk-jpl/src/android/ISSM/Makefile.am
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/Makefile.am	(revision 14185)
++++ ../trunk-jpl/src/android/ISSM/Makefile.am	(revision 14186)
+@@ -4,7 +4,7 @@
+ if SHAREDLIBS 	 	 
+ deps = 	 	 
+ else 	 	 
+-deps = ../../c/libISSMCore.a 	 	 
++deps = ../../c/libISSMCore.a ./jni/Main.cpp
+ endif
+ 
+ install-exec-am: all
Index: /issm/oecreview/Archive/14064-14311/ISSM-14186-14187.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14186-14187.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14186-14187.diff	(revision 14312)
@@ -0,0 +1,4 @@
+Index: ../trunk-jpl/src/android/ISSM/assets/Map/greenland.bin
+===================================================================
+Cannot display: file marked as a binary type.
+svn:mime-type = application/octet-stream
Index: /issm/oecreview/Archive/14064-14311/ISSM-14187-14188.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14187-14188.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14187-14188.diff	(revision 14312)
@@ -0,0 +1,180 @@
+Index: ../trunk-jpl/src/android/ISSM/jni/Main.cpp
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/Main.cpp	(revision 14187)
++++ ../trunk-jpl/src/android/ISSM/jni/Main.cpp	(revision 14188)
+@@ -137,13 +137,13 @@
+ 			}
+ 		}
+ 
+-		for(i=0;i<148;i++){
++		/*for(i=0;i<148;i++){
+ 		__android_log_print(ANDROID_LOG_INFO, "Native","%g %g %g | %g %g %g | %g %g %g | %g %g %g\n",
+ 				dBuf[12*i+0],dBuf[12*i+1],dBuf[12*i+2],
+ 				dBuf[12*i+3],dBuf[12*i+4],dBuf[12*i+5],
+ 				dBuf[12*i+6],dBuf[12*i+7],dBuf[12*i+8],
+ 				dBuf[12*i+9],dBuf[12*i+10],dBuf[12*i+11]);
+-		}
++		}*/
+ 
+ 		/*delete temporary data:*/
+ 		delete patch;
+Index: ../trunk-jpl/src/android/ISSM/src/com/example/issm/ColorMap.java
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/src/com/example/issm/ColorMap.java	(revision 14187)
++++ ../trunk-jpl/src/android/ISSM/src/com/example/issm/ColorMap.java	(revision 14188)
+@@ -4,13 +4,14 @@
+ class ColorMap
+ {
+ 	private double[][] d;
++	final int rowNumber = 64;
+ //-------------------------------------------------------
+ 	public ColorMap()
+ 	{
+ 		setDefault();
+ 	}
+ //-------------------------------------------------------
+-	//set default color map => hsv
++	//set default color map => hsv {{{
+ 	public void setDefault()
+ 	{
+ 		d = new double[][]{	
+@@ -79,7 +80,8 @@
+ 				{ 1.0, 	0.0, 	0.1875 },
+ 				{ 1.0, 	0.0, 	0.0938 }
+ 			};
+-	}
++	} 
++	//}}}
+ //-------------------------------------------------------
+ 	public void setAutumn()
+ 	{
+@@ -851,11 +853,46 @@
+ 			};
+ 	}	
+ //-------------------------------------------------------
+-	public void getRGB(int index, RGB rgb)
++	public void getRGB(double alpha, RGB rgb)
+ 	{
+-		rgb.setR( (float) d[index][0] );
+-		rgb.setG( (float) d[index][1] );
+-		rgb.setB( (float) d[index][2] );
++
++		double d1,d2,d3;
++		double d1a,d2a,d3a;
++		double d1b,d2b,d3b;
++		int    index1,index2;
++
++		System.out.println(alpha);
++
++		if (alpha==0){
++			d1=d[0][0];
++			d2=d[0][1];
++			d3=d[0][2];
++		}
++		else if (alpha==1){
++			d1=d[rowNumber-1][0];
++			d2=d[rowNumber-1][1];
++			d3=d[rowNumber-1][2];
++		}
++		else{
++			index1=(int)(alpha*(rowNumber-1));
++			index2=index1+1;
++			
++			d1a=d[index1][0];
++			d2a=d[index1][1];
++			d3a=d[index1][2];
++
++			d1b=d[index2][0];
++			d2b=d[index2][1];
++			d3b=d[index2][2];
++
++			d1=(d1a+d1b)/2;
++			d2=(d2a+d2b)/2;
++			d3=(d3a+d3b)/2;
++		}
++	
++		rgb.setR( (float) d1);
++		rgb.setG( (float) d2);
++		rgb.setB( (float) d3);
+ 	}	
+ //-------------------------------------------------------
+ } // end class colorMap
+@@ -872,4 +909,4 @@
+ 	public float getB() { return B;}
+ //-------------------------------------------------------
+ } //end class RGB	
+-/////////////////////////////////////////////////////////
+\ No newline at end of file
++/////////////////////////////////////////////////////////
+Index: ../trunk-jpl/src/android/ISSM/src/com/example/issm/MyGLSurfaceView.java
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/src/com/example/issm/MyGLSurfaceView.java	(revision 14187)
++++ ../trunk-jpl/src/android/ISSM/src/com/example/issm/MyGLSurfaceView.java	(revision 14188)
+@@ -13,7 +13,7 @@
+ 	private DoubleBuffer db;
+ 	private int size;
+ 	double vmax = 0, vmin=0;
+-	final int rowNumber = 64, firstVelocity = 9;
++	final int firstVelocity = 9; 
+ 	ColorMap colorMap;
+     public MyGLSurfaceView(Context context, DoubleBuffer db, int size, ColorMap colorMap) 
+     {
+@@ -32,7 +32,7 @@
+         final int MAX_VERTICES = 21;
+         float f[][] = new float[size][MAX_VERTICES];
+         //indexes prefer to velocity at each vertices of triangles.
+-        int index1, index2, index3;
++        double alpha1, alpha2, alpha3;
+         final int SCALE_FACTOR = 700000;
+         RGB rgb = new RGB();
+ 		for (int i = 0; i < size; i++)
+@@ -51,21 +51,21 @@
+ 				f[i][13] = 1.0f;
+ 				f[i][20] = 1.0f;
+ 				
+-				index1 = getRowColor(db.get(12*i+9));
+-				index2 = getRowColor(db.get(12*i+10));
+-				index3 = getRowColor(db.get(12*i+11));
++				alpha1 = getAlphaColor(db.get(12*i+9));
++				alpha2 = getAlphaColor(db.get(12*i+10));
++				alpha3 = getAlphaColor(db.get(12*i+11));
+ 				
+-				colorMap.getRGB(index1, rgb);
++				colorMap.getRGB(alpha1, rgb);
+ 				float r1 = rgb.getR();
+ 				float g1 = rgb.getG();
+ 				float b1 = rgb.getB();
+ 				
+-				colorMap.getRGB(index2, rgb);
++				colorMap.getRGB(alpha2, rgb);
+ 				float r2 = rgb.getR();
+ 				float g2 = rgb.getG();
+ 				float b2 = rgb.getB();
+ 				
+-				colorMap.getRGB(index3, rgb);
++				colorMap.getRGB(alpha3, rgb);
+ 				float r3 = rgb.getR();
+ 				float g3 = rgb.getG();
+ 				float b3 = rgb.getB();
+@@ -104,11 +104,10 @@
+     	}
+     	
+     }  
+-    private int getRowColor(double velocity)
++    private double getAlphaColor(double velocity)
+     {
+-    	double alpha=(vmax-velocity)/(vmax-vmin) ;
+-    	int row = (int) (alpha * (rowNumber-1));
+-    	return row;
++    	double alpha=(velocity-vmin)/(vmax-vmin) ;
++    	return alpha;
+     }
+     
+     private final float TOUCH_SCALE_FACTOR = 180.0f / 320;
+@@ -148,4 +147,4 @@
+         mPreviousY = y;
+         return true;
+     }
+-}
+\ No newline at end of file
++}
Index: /issm/oecreview/Archive/14064-14311/ISSM-14188-14189.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14188-14189.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14188-14189.diff	(revision 14312)
@@ -0,0 +1,73 @@
+Index: ../trunk-jpl/src/android/ISSM/jni/issmlib/libISSMCore.a
+===================================================================
+Cannot display: file marked as a binary type.
+svn:mime-type = application/octet-stream
+Index: ../trunk-jpl/src/android/ISSM/jni/Main.cpp
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/Main.cpp	(revision 14188)
++++ ../trunk-jpl/src/android/ISSM/jni/Main.cpp	(revision 14189)
+@@ -1,5 +1,4 @@
+ #include <jni.h>
+-#include "../../../c/android/fac.h"
+ #include <android/log.h>
+ #include "../../../c/issm.h"
+ #include <cstddef>
+@@ -9,7 +8,6 @@
+ namespace com_example_issm
+ {
+ 	/*Global variables{{{*/
+-	fac* f;
+ 	FemModel *fm;
+ 	double* xyz; /*keep vertices information here*/
+ 	/*}}}*/
+@@ -41,8 +39,6 @@
+ 		argv[2]=absfile;
+ 		argv[3]=relfile;
+ 
+-		f = new fac();
+-
+ 		/*call Model constructor passing in infile as File Descriptor parameter.*/
+ 		fm  = new FemModel(argc,argv,communicator);
+ 
+@@ -149,16 +145,8 @@
+ 		delete patch;
+ 
+ 	}/*}}}*/
+-	jlong factorial(JNIEnv *env, jclass clazz, jlong n) /*{{{*/
+-	{
+-		if( f != NULL)
+-			return (jlong) (f->factorial(n));
+-		return 0;
+-	}
+-	/*}}}*/
+ 	static JNINativeMethod method_table[] = /*{{{*/
+ 	{
+-			{"fac"      	,     "(J)J" 	, (void *) factorial},
+ 			{"createISSMModel"   ,"(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I"  , (void *) Initialize},
+ 			{"solveISSMModel", "(DLjava/nio/DoubleBuffer;)V", (void *) Solve}
+ 	};
+Index: ../trunk-jpl/src/android/ISSM/src/com/example/issm/ColorMap.java
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/src/com/example/issm/ColorMap.java	(revision 14188)
++++ ../trunk-jpl/src/android/ISSM/src/com/example/issm/ColorMap.java	(revision 14189)
+@@ -861,8 +861,6 @@
+ 		double d1b,d2b,d3b;
+ 		int    index1,index2;
+ 
+-		System.out.println(alpha);
+-
+ 		if (alpha==0){
+ 			d1=d[0][0];
+ 			d2=d[0][1];
+Index: ../trunk-jpl/src/android/ISSM/src/com/example/issm/IssmJni.java
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/src/com/example/issm/IssmJni.java	(revision 14188)
++++ ../trunk-jpl/src/android/ISSM/src/com/example/issm/IssmJni.java	(revision 14189)
+@@ -3,7 +3,6 @@
+ 
+ class IssmJni
+ {
+-	public native long fac(long n);
+ 	public native void solveISSMModel(double alpha, DoubleBuffer buff);
+ 	public native int createISSMModel(String solution_type, String absfile, String relfile);
+ 	static 
Index: /issm/oecreview/Archive/14064-14311/ISSM-14189-14190.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14189-14190.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14189-14190.diff	(revision 14312)
@@ -0,0 +1,62 @@
+Index: ../trunk-jpl/test/NightlyRun/test329.py
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/test329.py	(revision 14189)
++++ ../trunk-jpl/test/NightlyRun/test329.py	(revision 14190)
+@@ -15,27 +15,16 @@
+ md.extrude(3,1)
+ md=setflowequation(md,'pattyn','all')
+ md.surfaceforcings.issmbgradients=1
+-md.surfaceforcings.smb_pos_max=5000. - 0.00005*md.mesh.x + 0.0001*md.mesh.y
+-md.surfaceforcings.smb_pos_min=1250. + 0.00005*md.mesh.x -0.0001*md.mesh.y
+-md.surfaceforcings.a_pos=15000. - 0.000051*md.mesh.x + 0.00011*md.mesh.y
+ md.surfaceforcings.b_pos=-100. + 0.00005*md.mesh.x - 0.0001*md.mesh.y
+-md.surfaceforcings.a_neg=-20000. - 0.00005*md.mesh.x + 0.0001*md.mesh.y
+ md.surfaceforcings.b_neg=250. + 0.000051*md.mesh.x - 0.00011*md.mesh.y
+-md.surfaceforcings.hc=(md.surfaceforcings.a_pos-md.surfaceforcings.a_neg)/(md.surfaceforcings.b_neg-md.surfaceforcings.b_pos)
+ md.surfaceforcings.href=copy.deepcopy(md.geometry.surface).reshape(-1)
+-smbref=numpy.empty_like(md.surfaceforcings.hc)
+-for i in xrange(numpy.size(md.surfaceforcings.hc,axis=0)):
+-	if md.geometry.surface[i]<md.surfaceforcings.hc[i]:
+-		smbref[i]=md.surfaceforcings.a_neg[i]+md.surfaceforcings.b_neg[i]*md.geometry.surface[i]
+-	else:
+-		smbref[i]=md.surfaceforcings.a_pos[i]+md.surfaceforcings.b_pos[i]*md.geometry.surface[i]
+-md.surfaceforcings.smbref=smbref
++md.surfaceforcings.smbref= 1000 - 0.001*md.mesh.x - 0.005*md.mesh.y;
+ md.transient.requested_outputs=TotalSmbEnum()
+ md.cluster=generic('name',oshostname(),'np',3)
+ md=solve(md,TransientSolutionEnum())
+ 
+ #Fields and tolerances to track changes
+-field_names     =['Vx1','Vy1','Vz1','Vel1','Bed1','Surface1','Thickness1','Temperature1','SMB1','TotalSmb1','Vx2','Vy2','Vz2','Vel2','Bed2','Surface2','Thickness2','Temperature2','SMB2','TotalSmb1','Vx3','Vy3','Vz3','Vel3','Bed3','Surface3','Thickness3','Temperature3','SMB3','TotalSmb1']
++field_names     =['Vx1','Vy1','Vz1','Vel1','Bed1','Surface1','Thickness1','Temperature1','SMB1','TotalSmb1','Vx2','Vy2','Vz2','Vel2','Bed2','Surface2','Thickness2','Temperature2','SMB2','TotalSmb2','Vx3','Vy3','Vz3','Vel3','Bed3','Surface3','Thickness3','Temperature3','SMB3','TotalSmb3']
+ field_tolerances=[1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,\
+ 	1e-09,1e-09,1e-10,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,\
+ 	1e-09,5e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10]
+Index: ../trunk-jpl/test/NightlyRun/test328.py
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/test328.py	(revision 14189)
++++ ../trunk-jpl/test/NightlyRun/test328.py	(revision 14190)
+@@ -14,22 +14,11 @@
+ md=parameterize(md,'../Par/SquareSheetConstrained.py')
+ md=setflowequation(md,'macayeal','all')
+ md.surfaceforcings.issmbgradients=1
+-md.surfaceforcings.smb_pos_max=5000. - 0.00005*md.mesh.x + 0.0001*md.mesh.y
+-md.surfaceforcings.smb_pos_min=1250. + 0.00005*md.mesh.x -0.0001*md.mesh.y
+-md.surfaceforcings.a_pos=15000. - 0.000051*md.mesh.x + 0.00011*md.mesh.y
+ md.surfaceforcings.b_pos=-100. + 0.00005*md.mesh.x - 0.0001*md.mesh.y
+-md.surfaceforcings.a_neg=-20000. - 0.00005*md.mesh.x + 0.0001*md.mesh.y
+ md.surfaceforcings.b_neg=250. + 0.000051*md.mesh.x - 0.00011*md.mesh.y
+-md.surfaceforcings.hc=(md.surfaceforcings.a_pos-md.surfaceforcings.a_neg)/(md.surfaceforcings.b_neg-md.surfaceforcings.b_pos)
+ md.transient.requested_outputs=TotalSmbEnum()
+ md.surfaceforcings.href=copy.deepcopy(md.geometry.surface).reshape(-1)
+-smbref=numpy.empty_like(md.surfaceforcings.hc)
+-for i in xrange(numpy.size(md.surfaceforcings.hc,axis=0)):
+-	if md.geometry.surface[i]<md.surfaceforcings.hc[i]:
+-		smbref[i]=md.surfaceforcings.a_neg[i]+md.surfaceforcings.b_neg[i]*md.geometry.surface[i]
+-	else:
+-		smbref[i]=md.surfaceforcings.a_pos[i]+md.surfaceforcings.b_pos[i]*md.geometry.surface[i]
+-md.surfaceforcings.smbref=smbref
++md.surfaceforcings.smbref= 1000 - 0.001*md.mesh.x - 0.005*md.mesh.y;
+ md.cluster=generic('name',oshostname(),'np',3)
+ md=solve(md,TransientSolutionEnum())
+ 
Index: /issm/oecreview/Archive/14064-14311/ISSM-14190-14191.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14190-14191.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14190-14191.diff	(revision 14312)
@@ -0,0 +1,285 @@
+Index: ../trunk-jpl/src/android/ISSM/jni/issmlib/libISSMCore.a
+===================================================================
+Cannot display: file marked as a binary type.
+svn:mime-type = application/octet-stream
+Index: ../trunk-jpl/src/android/ISSM/jni/Main.cpp
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/Main.cpp	(revision 14190)
++++ ../trunk-jpl/src/android/ISSM/jni/Main.cpp	(revision 14191)
+@@ -38,7 +38,7 @@
+ 		argv[1]=solution_type;
+ 		argv[2]=absfile;
+ 		argv[3]=relfile;
+-
++		
+ 		/*call Model constructor passing in infile as File Descriptor parameter.*/
+ 		fm  = new FemModel(argc,argv,communicator);
+ 
+@@ -74,9 +74,14 @@
+ 		/*log:*/
+ 		__android_log_print(ANDROID_LOG_INFO, "Native","Solving ");
+ 
++		/*retrieve buffer: */
+ 		jdouble *dBuf = (jdouble *)env->GetDirectBufferAddress(buf);
+ 
+-		/*pass bBuff to fem model to allocate data. In the future: fm -> Solve(dBuf, alpha)*/
++		/*reset basal friction to what it was before: */
++		__android_log_print(ANDROID_LOG_INFO, "Native","alpha %g ",alpha);
++		InputDuplicatex(fm->elements,fm->nodes,fm->vertices,fm->loads,fm->materials,fm->parameters,AndroidFrictionCoefficientEnum,FrictionCoefficientEnum);
++
++		/*solve: */
+ 		fm -> Solve();
+ 
+ 		/*retrieve results: */
+Index: ../trunk-jpl/src/android/ISSM/assets/Map/antarctica.bin
+===================================================================
+Cannot display: file marked as a binary type.
+svn:mime-type = application/octet-stream
+Index: ../trunk-jpl/src/android/ISSM/assets/Map/antarctica.petsc
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/assets/Map/antarctica.petsc	(revision 14190)
++++ ../trunk-jpl/src/android/ISSM/assets/Map/antarctica.petsc	(revision 14191)
+@@ -1,4 +1,4 @@
+-%Petsc options file: android.petsc written from Matlab solver array
++%Petsc options file: SeaRISEgreenland.petsc written from Matlab solver array
+ 
+ +NoneAnalysis
+ -mat_type aij
+Index: ../trunk-jpl/src/android/ISSM/assets/Map/greenland.bin
+===================================================================
+Cannot display: file marked as a binary type.
+svn:mime-type = application/octet-stream
+Index: ../trunk-jpl/src/android/ISSM/Makefile.am
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/Makefile.am	(revision 14190)
++++ ../trunk-jpl/src/android/ISSM/Makefile.am	(revision 14191)
+@@ -4,7 +4,7 @@
+ if SHAREDLIBS 	 	 
+ deps = 	 	 
+ else 	 	 
+-deps = ../../c/libISSMCore.a ./jni/Main.cpp
++deps = ./jni/issmlib/libISSMCore.a ./jni/Main.cpp
+ endif
+ 
+ install-exec-am: all
+Index: ../trunk-jpl/src/c/android/fac.h
+===================================================================
+--- ../trunk-jpl/src/c/android/fac.h	(revision 14190)
++++ ../trunk-jpl/src/c/android/fac.h	(revision 14191)
+@@ -1,14 +0,0 @@
+-/*
+- * fac.h:  prototype fac class with a simple factorial routine
+- */
+-
+-#ifndef _FAC_H_
+-#define _FAC_H_
+-
+-class fac {
+-
+-	public:
+-		long factorial(long n);
+-};
+-
+-#endif
+Index: ../trunk-jpl/src/c/android/fac.cpp
+===================================================================
+--- ../trunk-jpl/src/c/android/fac.cpp	(revision 14190)
++++ ../trunk-jpl/src/c/android/fac.cpp	(revision 14191)
+@@ -1,28 +0,0 @@
+-/*!\file fac.cpp
+- * \brief: implementation of the fac class
+- */
+-
+-/*Headers{{{*/
+-#ifdef HAVE_CONFIG_H
+-	#include <config.h>
+-#else
+-#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+-#endif
+-
+-#include "./fac.h"
+-
+-/*}}}*/
+-#include "stdio.h"
+-long fac::factorial(long n) {
+-	long f = 1;
+-	long i;
+-	printf("ok1\n");
+-	
+-	for(i = 1; i <= n; i++){
+-		f *= i;
+-	}
+-	printf("ok2\n");
+-	
+-	return f;
+-}
+-
+Index: ../trunk-jpl/src/c/EnumDefinitions/EnumDefinitions.h
+===================================================================
+--- ../trunk-jpl/src/c/EnumDefinitions/EnumDefinitions.h	(revision 14190)
++++ ../trunk-jpl/src/c/EnumDefinitions/EnumDefinitions.h	(revision 14191)
+@@ -379,6 +379,7 @@
+ 	QmuBedEnum,
+ 	QmuSurfaceEnum,
+ 	QmuMeltingEnum,
++	AndroidFrictionCoefficientEnum,
+ 	ResetPenaltiesEnum,
+ 	SegmentOnIceShelfEnum,
+ 	SurfaceAbsVelMisfitEnum,
+Index: ../trunk-jpl/src/c/modules/StringToEnumx/StringToEnumx.cpp
+===================================================================
+--- ../trunk-jpl/src/c/modules/StringToEnumx/StringToEnumx.cpp	(revision 14190)
++++ ../trunk-jpl/src/c/modules/StringToEnumx/StringToEnumx.cpp	(revision 14191)
+@@ -377,16 +377,17 @@
+ 	      else if (strcmp(name,"QmuBed")==0) return QmuBedEnum;
+ 	      else if (strcmp(name,"QmuSurface")==0) return QmuSurfaceEnum;
+ 	      else if (strcmp(name,"QmuMelting")==0) return QmuMeltingEnum;
++	      else if (strcmp(name,"AndroidFrictionCoefficient")==0) return AndroidFrictionCoefficientEnum;
+ 	      else if (strcmp(name,"ResetPenalties")==0) return ResetPenaltiesEnum;
+ 	      else if (strcmp(name,"SegmentOnIceShelf")==0) return SegmentOnIceShelfEnum;
+ 	      else if (strcmp(name,"SurfaceAbsVelMisfit")==0) return SurfaceAbsVelMisfitEnum;
+ 	      else if (strcmp(name,"SurfaceArea")==0) return SurfaceAreaEnum;
+ 	      else if (strcmp(name,"SurfaceAverageVelMisfit")==0) return SurfaceAverageVelMisfitEnum;
+-	      else if (strcmp(name,"SurfaceLogVelMisfit")==0) return SurfaceLogVelMisfitEnum;
+          else stage=4;
+    }
+    if(stage==4){
+-	      if (strcmp(name,"SurfaceLogVxVyMisfit")==0) return SurfaceLogVxVyMisfitEnum;
++	      if (strcmp(name,"SurfaceLogVelMisfit")==0) return SurfaceLogVelMisfitEnum;
++	      else if (strcmp(name,"SurfaceLogVxVyMisfit")==0) return SurfaceLogVxVyMisfitEnum;
+ 	      else if (strcmp(name,"SurfaceRelVelMisfit")==0) return SurfaceRelVelMisfitEnum;
+ 	      else if (strcmp(name,"SurfaceSlopeX")==0) return SurfaceSlopeXEnum;
+ 	      else if (strcmp(name,"SurfaceSlopeY")==0) return SurfaceSlopeYEnum;
+@@ -505,11 +506,11 @@
+ 	      else if (strcmp(name,"Regular")==0) return RegularEnum;
+ 	      else if (strcmp(name,"Scaled")==0) return ScaledEnum;
+ 	      else if (strcmp(name,"Separate")==0) return SeparateEnum;
+-	      else if (strcmp(name,"Sset")==0) return SsetEnum;
+          else stage=5;
+    }
+    if(stage==5){
+-	      if (strcmp(name,"Verbose")==0) return VerboseEnum;
++	      if (strcmp(name,"Sset")==0) return SsetEnum;
++	      else if (strcmp(name,"Verbose")==0) return VerboseEnum;
+ 	      else if (strcmp(name,"TriangleInterp")==0) return TriangleInterpEnum;
+ 	      else if (strcmp(name,"BilinearInterp")==0) return BilinearInterpEnum;
+ 	      else if (strcmp(name,"NearestInterp")==0) return NearestInterpEnum;
+Index: ../trunk-jpl/src/c/modules/EnumToStringx/EnumToStringx.cpp
+===================================================================
+--- ../trunk-jpl/src/c/modules/EnumToStringx/EnumToStringx.cpp	(revision 14190)
++++ ../trunk-jpl/src/c/modules/EnumToStringx/EnumToStringx.cpp	(revision 14191)
+@@ -370,6 +370,7 @@
+ 		case QmuBedEnum : return "QmuBed";
+ 		case QmuSurfaceEnum : return "QmuSurface";
+ 		case QmuMeltingEnum : return "QmuMelting";
++		case AndroidFrictionCoefficientEnum : return "AndroidFrictionCoefficient";
+ 		case ResetPenaltiesEnum : return "ResetPenalties";
+ 		case SegmentOnIceShelfEnum : return "SegmentOnIceShelf";
+ 		case SurfaceAbsVelMisfitEnum : return "SurfaceAbsVelMisfit";
+Index: ../trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/UpdateElementsDiagnosticHoriz.cpp
+===================================================================
+--- ../trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/UpdateElementsDiagnosticHoriz.cpp	(revision 14190)
++++ ../trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/UpdateElementsDiagnosticHoriz.cpp	(revision 14191)
+@@ -1,6 +1,11 @@
+ /*
+  * UpdateElementsDiagnosticHoriz:
+  */
++#ifdef HAVE_CONFIG_H
++	#include <config.h>
++#else
++#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
++#endif
+ 
+ #include "../../../Container/Container.h"
+ #include "../../../modules/modules.h"
+@@ -84,6 +89,10 @@
+ 	elements->InputDuplicate(VxEnum,VxPicardEnum);
+ 	elements->InputDuplicate(VxEnum,InversionVxObsEnum);
+ 	if(dakota_analysis)elements->InputDuplicate(VxEnum,QmuVxEnum);
++	
++	#ifdef _HAVE_ANDROID_
++	elements->InputDuplicate(FrictionCoefficientEnum,AndroidFrictionCoefficientEnum);
++	#endif
+ 
+ 	elements->InputDuplicate(VyEnum,VyPicardEnum);
+ 	elements->InputDuplicate(VyEnum,InversionVyObsEnum);
+Index: ../trunk-jpl/src/c/Makefile.am
+===================================================================
+--- ../trunk-jpl/src/c/Makefile.am	(revision 14190)
++++ ../trunk-jpl/src/c/Makefile.am	(revision 14191)
+@@ -499,8 +499,7 @@
+ 				    ./modules/ConstraintsStatex/RiftConstraintsState.cpp
+ #}}}
+ #Android sources  {{{
+-android_sources = ./android/fac.h\
+-				  ./android/fac.cpp
++android_sources = 
+ #}}}
+ #3D sources  {{{
+ threed_sources = ./classes/gauss/GaussPenta.h\
+Index: ../trunk-jpl/src/c/classes/FemModel.cpp
+===================================================================
+--- ../trunk-jpl/src/c/classes/FemModel.cpp	(revision 14190)
++++ ../trunk-jpl/src/c/classes/FemModel.cpp	(revision 14191)
+@@ -181,6 +181,7 @@
+ 	for(i=0;i<nummodels;i++)analysis_type_list[i]=analyses[i];
+ 
+ 	/*create datasets for all analyses*/
++	if(VerboseMProcessor()) _pprintLine_("   Model processor\n");
+ 	ModelProcessorx(&this->elements,&this->nodes,&this->vertices,&this->materials,&this->constraints,&this->loads,&this->parameters,IOMODEL,rootpath,this->solution_type,nummodels,analyses);
+ 
+ 	/*do the post-processing of the datasets to get an FemModel that can actually run analyses: */
+Index: ../trunk-jpl/src/m/enum/MaximumNumberOfEnums.m
+===================================================================
+--- ../trunk-jpl/src/m/enum/MaximumNumberOfEnums.m	(revision 14190)
++++ ../trunk-jpl/src/m/enum/MaximumNumberOfEnums.m	(revision 14191)
+@@ -8,4 +8,4 @@
+ %   Usage:
+ %      macro=MaximumNumberOfEnums()
+ 
+-macro=495;
++macro=496;
+Index: ../trunk-jpl/src/m/enum/AndroidFrictionCoefficientEnum.m
+===================================================================
+--- ../trunk-jpl/src/m/enum/AndroidFrictionCoefficientEnum.m	(revision 0)
++++ ../trunk-jpl/src/m/enum/AndroidFrictionCoefficientEnum.m	(revision 14191)
+@@ -0,0 +1,11 @@
++function macro=AndroidFrictionCoefficientEnum()
++%ANDROIDFRICTIONCOEFFICIENTENUM - Enum of AndroidFrictionCoefficient
++%
++%   WARNING: DO NOT MODIFY THIS FILE
++%            this file has been automatically generated by src/c/EnumDefinitions/Synchronize.sh
++%            Please read src/c/EnumDefinitions/README for more information
++%
++%   Usage:
++%      macro=AndroidFrictionCoefficientEnum()
++
++macro=StringToEnum('AndroidFrictionCoefficient');
+Index: ../trunk-jpl/src/m/enum/EnumDefinitions.py
+===================================================================
+--- ../trunk-jpl/src/m/enum/EnumDefinitions.py	(revision 14190)
++++ ../trunk-jpl/src/m/enum/EnumDefinitions.py	(revision 14191)
+@@ -3548,6 +3548,16 @@
+ 
+ 	return StringToEnum('QmuMelting')[0]
+ 
++def AndroidFrictionCoefficientEnum():
++	"""
++	ANDROIDFRICTIONCOEFFICIENTENUM - Enum of AndroidFrictionCoefficient
++
++	   Usage:
++	      macro=AndroidFrictionCoefficientEnum()
++	"""
++
++	return StringToEnum('AndroidFrictionCoefficient')[0]
++
+ def ResetPenaltiesEnum():
+ 	"""
+ 	RESETPENALTIESENUM - Enum of ResetPenalties
+@@ -4966,5 +4976,5 @@
+ 	      macro=MaximumNumberOfEnums()
+ 	"""
+ 
+-	return 495
++	return 496
+ 
Index: /issm/oecreview/Archive/14064-14311/ISSM-14191-14192.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14191-14192.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14191-14192.diff	(revision 14312)
@@ -0,0 +1,66 @@
+Index: ../trunk-jpl/src/android/ISSM/src/com/example/issm/MyGLSurfaceView.java
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/src/com/example/issm/MyGLSurfaceView.java	(revision 14191)
++++ ../trunk-jpl/src/android/ISSM/src/com/example/issm/MyGLSurfaceView.java	(revision 14192)
+@@ -33,19 +33,21 @@
+         float f[][] = new float[size][MAX_VERTICES];
+         //indexes prefer to velocity at each vertices of triangles.
+         double alpha1, alpha2, alpha3;
+-        final int SCALE_FACTOR = 700000;
++		float  xmin,xmax,ymin,ymax;
++        final int XSCALE_FACTOR = 1;
++        final int YSCALE_FACTOR = 2;
+         RGB rgb = new RGB();
+-		for (int i = 0; i < size; i++)
+-		{
+-				f[i][0] = (float)db.get(12*i+0)/SCALE_FACTOR;
+-				f[i][1] = (float)db.get(12*i+1)/SCALE_FACTOR;
+-				f[i][2] = (float)db.get(12*i+2)/SCALE_FACTOR;
+-				f[i][7] = (float)db.get(12*i+3)/SCALE_FACTOR;
+-				f[i][8] = (float)db.get(12*i+4)/SCALE_FACTOR;
+-				f[i][9] = (float)db.get(12*i+5)/SCALE_FACTOR;
+-				f[i][14] = (float)db.get(12*i+6)/SCALE_FACTOR;
+-				f[i][15] = (float)db.get(12*i+7)/SCALE_FACTOR;
+-				f[i][16] = (float)db.get(12*i+8)/SCALE_FACTOR;
++
++		for (int i = 0; i < size; i++) {
++				f[i][0] = (float)db.get(12*i+0);
++				f[i][1] = (float)db.get(12*i+1);
++				f[i][2] = (float)db.get(12*i+2);
++				f[i][7] = (float)db.get(12*i+3);
++				f[i][8] = (float)db.get(12*i+4);
++				f[i][9] = (float)db.get(12*i+5);
++				f[i][14] = (float)db.get(12*i+6);
++				f[i][15] = (float)db.get(12*i+7);
++				f[i][16] = (float)db.get(12*i+8);
+ 				
+ 				f[i][6] = 1.0f;
+ 				f[i][13] = 1.0f;
+@@ -84,6 +86,27 @@
+ 				f[i][19] = b3;
+ 
+ 		}
++
++		/*scale coordinates: */
++		xmin=0; ymin=0; xmax=0; ymax=0;
++
++		for (int i = 0; i < size; i++) {
++			if (f[i][0]<xmin) xmin=f[i][0];
++			if (f[i][0]>xmax) xmax=f[i][0];
++
++			if (f[i][1]<ymin) ymin=f[i][1];
++			if (f[i][1]>ymax) ymax=f[i][1];
++		}
++		
++		for (int i = 0; i < size; i++) {
++				f[i][0] =  (f[i][0]-xmin)/(xmax-xmin)*XSCALE_FACTOR;
++				f[i][1] =  (f[i][1]-ymin)/(ymax-ymin)*YSCALE_FACTOR;
++				f[i][7] =  (f[i][7]-xmin)/(xmax-xmin)*XSCALE_FACTOR;
++				f[i][8] =  (f[i][8]-ymin)/(ymax-ymin)*YSCALE_FACTOR;
++				f[i][14] =  (f[i][14]-xmin)/(xmax-xmin)*XSCALE_FACTOR;
++				f[i][15] =  (f[i][15]-ymin)/(ymax-ymin)*YSCALE_FACTOR;
++		}
++			
+     	mRend = new MyGLRenderer(f);
+     	// Set the Renderer for drawing on the GLSurfaceView
+         setRenderer(mRend);
Index: /issm/oecreview/Archive/14064-14311/ISSM-14192-14193.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14192-14193.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14192-14193.diff	(revision 14312)
@@ -0,0 +1,14 @@
+Index: ../trunk-jpl/src/android/ISSM/src/com/example/issm/ISSM.java
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/src/com/example/issm/ISSM.java	(revision 14192)
++++ ../trunk-jpl/src/android/ISSM/src/com/example/issm/ISSM.java	(revision 14193)
+@@ -78,7 +78,8 @@
+ //------------------------------------------------------------------------------------------------
+     public void fillBuffer()
+     {
+-    	issmNative.solveISSMModel(5,buff);
++		double alpha=5;
++    	issmNative.solveISSMModel(alpha,buff);
+     }
+ //------------------------------------------------------------------------------------------------  
+     public boolean onCreateOptionsMenu(Menu menu)
Index: /issm/oecreview/Archive/14064-14311/ISSM-14193-14194.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14193-14194.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14193-14194.diff	(revision 14312)
@@ -0,0 +1,12 @@
+Index: ../trunk-jpl/src/c/classes/FemModel.cpp
+===================================================================
+--- ../trunk-jpl/src/c/classes/FemModel.cpp	(revision 14193)
++++ ../trunk-jpl/src/c/classes/FemModel.cpp	(revision 14194)
+@@ -181,7 +181,6 @@
+ 	for(i=0;i<nummodels;i++)analysis_type_list[i]=analyses[i];
+ 
+ 	/*create datasets for all analyses*/
+-	if(VerboseMProcessor()) _pprintLine_("   Model processor\n");
+ 	ModelProcessorx(&this->elements,&this->nodes,&this->vertices,&this->materials,&this->constraints,&this->loads,&this->parameters,IOMODEL,rootpath,this->solution_type,nummodels,analyses);
+ 
+ 	/*do the post-processing of the datasets to get an FemModel that can actually run analyses: */
Index: /issm/oecreview/Archive/14064-14311/ISSM-14194-14195.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14194-14195.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14194-14195.diff	(revision 14312)
@@ -0,0 +1,163 @@
+Index: ../trunk-jpl/src/m/plot/plot_gridded.m
+===================================================================
+--- ../trunk-jpl/src/m/plot/plot_gridded.m	(revision 14194)
++++ ../trunk-jpl/src/m/plot/plot_gridded.m	(revision 14195)
+@@ -23,7 +23,7 @@
+ %Interpolating data on grid
+ [x_m y_m data_grid]=InterpFromMeshToGrid(elements,x,y,data,xlim(1),ylim(2),post,post,round(diff(ylim)/post),round(diff(xlim)/post),NaN);
+ if size(data_grid,1)<3 | size(data_grid,2)<3,
+-	error('data_grid size too small in plot_gridded, check posting and uni');
++	error('data_grid size too small in plot_gridded, check posting and units');
+ end
+ 
+ %Get and change colormap
+Index: ../trunk-jpl/src/m/plot/kmlgridded.m
+===================================================================
+--- ../trunk-jpl/src/m/plot/kmlgridded.m	(revision 0)
++++ ../trunk-jpl/src/m/plot/kmlgridded.m	(revision 14195)
+@@ -0,0 +1,145 @@
++function kmlgridded(md,data,varargin)
++
++%process options
++options=pairoptions(varargin{:});
++
++%process options
++options=changefieldvalue(options,'coord','latlon');
++
++%process mesh and data
++[x y z elements is2d isplanet]=processmesh(md,[],options);
++[data datatype]=processdata(md,data,options);
++
++%check is2d
++if ~is2d, 
++	error('buildgridded error message: gridded not supported for 3d meshes, project on a layer');
++end
++
++%Get xlim and ylim (used to extract radar image)
++xlim=[min(x) max(x)];
++ylim=[min(y) max(y)];
++post=getfieldvalue(options,'posting',diff(xlim)/1000);
++if(diff(xlim)/post>10000),
++	error(['posting too large']);
++end
++
++%Interpolating data on grid
++[x_m y_m data_grid]=InterpFromMeshToGrid(elements,x,y,data,xlim(1),ylim(2),post,post,round(diff(ylim)/post),round(diff(xlim)/post),NaN);
++if size(data_grid,1)<3 | size(data_grid,2)<3,
++	error('data_grid size too small, check posting and units');
++end
++pos=find(isinf(data_grid));
++if ~isempty(pos),
++	disp('Warning: removing Infs from vector (probably log(0)?)');
++	data_grid(pos)=NaN;
++end
++
++%Process data_grid: add white in NaN and correct caxis accordingly
++data_nan=find(isnan(data_grid));
++data_min=min(data_grid(:));
++data_max=max(data_grid(:));
++if exist(options,'caxis'),
++	caxis_opt=getfieldvalue(options,'caxis');
++	data_grid(find(data_grid<caxis_opt(1)))=caxis_opt(1);
++	data_grid(find(data_grid>caxis_opt(2)))=caxis_opt(2);
++	data_min=caxis_opt(1);
++	data_max=caxis_opt(2);
++end
++
++%Get colormap
++colorm = getcolormap(options);
++len    = size(colorm,1);
++ind = ceil((len-1)*(data_grid-data_min)/(data_max - data_min + eps) +1);
++ind(find(ind>len))=len;
++ind(find(ind<1)  )=1;
++ind(find(isnan(ind)))=1;
++image_rgb=zeros(size(data_grid,1),size(data_grid,2),3);
++r=colorm(:,1); image_rgb(:,:,1)=r(ind); clear r;
++g=colorm(:,2); image_rgb(:,:,2)=g(ind); clear g;
++b=colorm(:,3); image_rgb(:,:,3)=b(ind); clear b;
++
++%Deal with alpha
++alpha=getfieldvalue(options,'alpha',.8);
++alphaMatrix = alpha*ones(size(data_grid));
++alphaMatrix(data_nan) = 0;
++
++%write kml
++kmlfilename=getfieldvalue(options,'kmlfilename','tempfile.kml');
++kmlroot=getfieldvalue(options,'kmlroot','./');
++kmlimagename=getfieldvalue(options,'kmlimagename','tempimage');
++kmlresolution=getfieldvalue(options,'kmlresolution',1);
++kmlfolder=getfieldvalue(options,'kmlfolder','Ground Overlay');
++kmlfolderdescription=getfieldvalue(options,'kmlfolderdescription','');
++kmlgroundoverlayname=getfieldvalue(options,'kmlgroundoverlayname','ground overlay');
++kmlgroundoverlaydescription=getfieldvalue(options,'kmlgroundoverlaydescription','description');
++
++%write png
++imwrite(image_rgb,[kmlimagename '.png'],'png','alpha',alphaMatrix);
++clear image_rgb alphaMatrix
++
++%prepare colorbar
++iscolorbar=0;
++if strcmpi(getfieldvalue(options,'colorbar','on'),'on'),
++	X = linspace(0,1,len)';
++	Xlab = round(linspace(data_min,data_max,len+1));
++	html = ['<TABLE border=' num2str(1) ' bgcolor=#FFFFFF>',10];
++
++	for k=len:-1:1
++		f = (Xlab(k)-data_min)/(data_max-data_min);
++		if f<0, f=0; end
++		if f>1, f=1; end
++		polyColor(1,1) = interp1(X,colorm(:,1),f);
++		polyColor(1,2) = interp1(X,colorm(:,2),f);
++		polyColor(1,3) = interp1(X,colorm(:,3),f);
++		polyColorStr(1:2) = dec2hex(round(polyColor(1)*255),2);
++		polyColorStr(3:4) = dec2hex(round(polyColor(2)*255),2);
++		polyColorStr(5:6) = dec2hex(round(polyColor(3)*255),2);
++		html = [html,'<TR><TD width="15px" bgcolor=#',polyColorStr, '>&nbsp;</TD>','<TD bgcolor=#FFFFFF>'];
++		if k==1
++			html=[html,'&lt;= ',num2str(Xlab(k),'%g')];
++		elseif k==len
++			html=[html,'&gt;= ',num2str(Xlab(k),'%g')];
++		else
++			html=[html,num2str(Xlab(k),'%g'),' to ',num2str(Xlab(k+1),'%g'),'</TD>'];
++		end
++		html = [html,'</TR>',10];
++	end
++	html = [html,'</TABLE>'];
++	iscolorbar = 1;
++end
++
++%now write kml file
++fid=fopen([kmlroot '/' kmlfilename],'w');
++fprintf(fid,'%s\n','<?xml version="1.0" encoding="UTF-8"?>');
++fprintf(fid,'%s\n','<kml xmlns="http://earth.google.com/kml/2.1">');
++fprintf(fid,'%s\n','<Document>');
++fprintf(fid,'%s%s%s\n','<name>',kmlfilename,'</name>');
++if iscolorbar,
++	fprintf(fid,'<Placemark id="colorbar">\n');
++	fprintf(fid,'%s%s%s\n','<name>','click the icon to see the colorbar','</name>');
++	fprintf(fid,'%s%s%s\n','<description>','Ground overlay colorbar','</description>');
++	fprintf(fid,'<visibility>1</visibility>\n');
++	fprintf(fid,['<description>',10,'<![CDATA[' html ']]>',10,'</description>',10,'\n']);
++	fprintf(fid,['<Style><IconStyle><scale>1</scale><Icon><href>http://maps.google.com/mapfiles/kml/shapes/donut.png</href></Icon></IconStyle><ListStyle></ListStyle></Style><Point id="poly_colorbar">\n']);
++	fprintf(fid,'<altitudeMode>clampToGround</altitudeMode>\n');
++	fprintf(fid,'<extrude>1</extrude>\n');
++	fprintf(fid,'<tessellate>1</tessellate>\n');
++	fprintf(fid,'%s%g,%g%s\n','<coordinates>',max(x),mean(y),'</coordinates>');
++	fprintf(fid,'</Point>\n');
++	fprintf(fid,'</Placemark>\n');
++end
++fprintf(fid,'%s\n','<GroundOverlay id="groundoverlay">');
++fprintf(fid,'%s%s%s\n','<name>',kmlgroundoverlayname,'</name>');
++fprintf(fid,'%s\n','<description>',kmlgroundoverlaydescription,'</description>');
++fprintf(fid,'%s%s.%s%s\n','<Icon>',kmlimagename,'png','</Icon>');
++fprintf(fid,'%s\n','<LatLonBox>');
++fprintf(fid,'%s%f%s\n','<north>',max(y_m),'</north>');
++fprintf(fid,'%s%f%s\n','<south>',min(y_m),'</south>');
++fprintf(fid,'%s%f%s\n','<east>',max(x_m),'</east>');
++fprintf(fid,'%s%f%s\n','<west>',min(x_m),'</west>');
++fprintf(fid,'%s\n','<rotation>0</rotation>');
++fprintf(fid,'%s\n','</LatLonBox>');
++fprintf(fid,'%s\n','</GroundOverlay>');
++fprintf(fid,'%s\n','</Document>');
++fprintf(fid,'%s\n','</kml>');
++fclose(fid);
Index: /issm/oecreview/Archive/14064-14311/ISSM-14195-14196.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14195-14196.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14195-14196.diff	(revision 14312)
@@ -0,0 +1,134 @@
+Index: ../trunk-jpl/src/m/qmu/dakota_out_parse.m
+===================================================================
+--- ../trunk-jpl/src/m/qmu/dakota_out_parse.m	(revision 14195)
++++ ../trunk-jpl/src/m/qmu/dakota_out_parse.m	(revision 14196)
+@@ -209,11 +209,11 @@
+     end
+ end
+ 
+-dmin   =min    (data,[],1);
+-dquart1=prctile(data,25,1);
+-dmedian=median (data,1);
+-dquart3=prctile(data,75,1);
+-dmax   =max    (data,[],1);
++dmin   =min         (data,[],1);
++dquart1=prctile_issm(data,25,1);
++dmedian=median      (data,1);
++dquart3=prctile_issm(data,75,1);
++dmax   =max         (data,[],1);
+ 
+ %  same as Dakota scm, Excel correl
+ dcorrel=corrcoef(data);
+Index: ../trunk-jpl/src/m/qmu/plot/plot_sampdist_bars.m
+===================================================================
+--- ../trunk-jpl/src/m/qmu/plot/plot_sampdist_bars.m	(revision 14195)
++++ ../trunk-jpl/src/m/qmu/plot/plot_sampdist_bars.m	(revision 14196)
+@@ -126,11 +126,11 @@
+    ~isfield(dresp,'median') || ~isfield(dresp,'quart3') || ...
+    ~isfield(dresp,'max')
+     for i=1:length(dresp)
+-        dresp(i).min   =min    (dresp(i).sample);
+-        dresp(i).quart1=prctile(dresp(i).sample,25);
+-        dresp(i).median=median (dresp(i).sample);
+-        dresp(i).quart3=prctile(dresp(i).sample,75);
+-        dresp(i).max   =max    (dresp(i).sample);
++        dresp(i).min   =min         (dresp(i).sample);
++        dresp(i).quart1=prctile_issm(dresp(i).sample,25);
++        dresp(i).median=median      (dresp(i).sample);
++        dresp(i).quart3=prctile_issm(dresp(i).sample,75);
++        dresp(i).max   =max         (dresp(i).sample);
+     end
+ end
+ 
+Index: ../trunk-jpl/src/m/miscellaneous/prctile_issm.m
+===================================================================
+--- ../trunk-jpl/src/m/miscellaneous/prctile_issm.m	(revision 0)
++++ ../trunk-jpl/src/m/miscellaneous/prctile_issm.m	(revision 14196)
+@@ -0,0 +1,87 @@
++%
++%  wrapper for prctile to avoid using the matlab statistics toolbox.
++%
++function [y]=prctile_issm(x,p,dim)
++
++	try
++		y=prctile(argin{:});
++
++	catch me
++
++		if length(size(x)) > 2
++			error('Number of dimensions %d not implemented.',length(size(x)));
++		end
++		if ~exist('dim','var')
++			dim=0;
++			for i=1:length(size(x))
++				if ~dim && size(x,i)>1
++					dim=i;
++				end
++			end
++			if ~dim
++				dim=1;
++			end
++		end
++
++		psize=size(p);
++		if size(p,2)>1
++			p=transp(p);
++		end
++
++		xsize=size(x);
++		if dim==2
++			x=transp(x);
++		end
++
++%  check for any NaN in any columns
++
++		if ~any(isnan(x))
++			x=sort(x,1);
++			n=size(x,1);
++
++%  branch based on number of elements
++
++			if     n>1
++
++%  set up percent values and interpolate
++
++				xi=transp(100.*([1:n]-0.5)/n);
++				y=interp1q(xi,x,p);
++
++%  fill in high and low values
++
++				y(p<xi(1),:)=repmat(x(1,:),nnz(p<xi(1)),1);
++				y(p>xi(n),:)=repmat(x(n,:),nnz(p>xi(n)),1);
++
++%  if one value, just copy it
++
++			elseif n==1
++				y=repmat(x(1,:),length(p),1);
++
++%  if no values, use NaN
++
++			else
++				y=repmat(NaN,size(p,1),size(x,2));
++			end
++
++		else
++
++%  must loop over columns, since number of elements could be different
++
++			y=zeros(size(p,1),size(x,2));
++			for j=1:size(x,2)
++
++%  remove any NaN and recursively call column
++
++				y(:,j)=prctile_issm(x(~isnan(x(:,j)),j),p);
++			end
++		end
++
++		if (min(xsize)==1 && xsize(dim)>1 && psize(2)>1) || ...
++		   (min(xsize)> 1 && dim==2)
++			y=transp(y);
++		end
++	end
++
++end
++
Index: /issm/oecreview/Archive/14064-14311/ISSM-14196-14197.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14196-14197.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14196-14197.diff	(revision 14312)
@@ -0,0 +1,78 @@
+Index: ../trunk-jpl/externalpackages/gdal/GDALmake.opt.patch
+===================================================================
+--- ../trunk-jpl/externalpackages/gdal/GDALmake.opt.patch	(revision 14196)
++++ ../trunk-jpl/externalpackages/gdal/GDALmake.opt.patch	(revision 14197)
+@@ -1,8 +0,0 @@
+-31c31
+-< LIBS	=	$(SDE_LIB) -I/usr/include -lsqlite3 -L/usr/lib -lexpat -ljpeg -lpng -lz  -lm -lrt -ldl  $(KAK_LIBS) $(DWG_LIBS) $(CURL_LIB) \
+----
+-> LIBS	=	$(SDE_LIB) -I/usr/include -lsqlite3 -L/usr/lib64 -lexpat -ljpeg -lpng -lz  -lm -lrt -ldl  $(KAK_LIBS) $(DWG_LIBS) $(CURL_LIB) \
+-225c225
+-< CURL_LIB	=	-L/usr/kerberos/lib64 -lcurl -ldl -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lidn -lssl -lcrypto -lz  
+----
+-> CURL_LIB	=	-L/usr/lib64 -lcurl -ldl -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lidn -lssl -lcrypto -lz  
+Index: ../trunk-jpl/externalpackages/gdal/GDALmake.opt.patch.astrid
+===================================================================
+--- ../trunk-jpl/externalpackages/gdal/GDALmake.opt.patch.astrid	(revision 14196)
++++ ../trunk-jpl/externalpackages/gdal/GDALmake.opt.patch.astrid	(revision 14197)
+@@ -1,8 +0,0 @@
+-31c31
+-< LIBS	=	$(SDE_LIB) -I/usr/include -lsqlite3 -L/usr/lib -lexpat -ljpeg -lz  -lm -lrt -ldl  $(KAK_LIBS) $(DWG_LIBS) $(CURL_LIB) \
+----
+-> LIBS	=	$(SDE_LIB) -I/usr/include -lsqlite3 -L/usr/lib64 -lexpat -ljpeg -lz  -lm -lrt -ldl  $(KAK_LIBS) $(DWG_LIBS) $(CURL_LIB) \
+-225c225
+-< CURL_LIB	=	-L/usr/kerberos/lib64 -lcurl -ldl -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lidn -lssl -lcrypto -lz  
+----
+-> CURL_LIB	=	-L/usr/lib64 -lcurl -ldl -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lidn -lssl -lcrypto -lz  
+Index: ../trunk-jpl/externalpackages/gdal/configs/GDALmake.opt.patch.astrid
+===================================================================
+--- ../trunk-jpl/externalpackages/gdal/configs/GDALmake.opt.patch.astrid	(revision 0)
++++ ../trunk-jpl/externalpackages/gdal/configs/GDALmake.opt.patch.astrid	(revision 14197)
+@@ -0,0 +1,8 @@
++31c31
++< LIBS	=	$(SDE_LIB) -I/usr/include -lsqlite3 -L/usr/lib -lexpat -ljpeg -lz  -lm -lrt -ldl  $(KAK_LIBS) $(DWG_LIBS) $(CURL_LIB) \
++---
++> LIBS	=	$(SDE_LIB) -I/usr/include -lsqlite3 -L/usr/lib64 -lexpat -ljpeg -lz  -lm -lrt -ldl  $(KAK_LIBS) $(DWG_LIBS) $(CURL_LIB) \
++225c225
++< CURL_LIB	=	-L/usr/kerberos/lib64 -lcurl -ldl -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lidn -lssl -lcrypto -lz  
++---
++> CURL_LIB	=	-L/usr/lib64 -lcurl -ldl -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lidn -lssl -lcrypto -lz  
+Index: ../trunk-jpl/externalpackages/gdal/configs/GDALmake.opt.patch.murdo
+===================================================================
+--- ../trunk-jpl/externalpackages/gdal/configs/GDALmake.opt.patch.murdo	(revision 0)
++++ ../trunk-jpl/externalpackages/gdal/configs/GDALmake.opt.patch.murdo	(revision 14197)
+@@ -0,0 +1,8 @@
++31c31
++< LIBS	=	$(SDE_LIB) -I/usr/include -lsqlite3 -L/usr/lib -lexpat -ljpeg -lpng -lz  -lm -lrt -ldl  $(KAK_LIBS) $(DWG_LIBS) $(CURL_LIB) \
++---
++> LIBS	=	$(SDE_LIB) -I/usr/include -lsqlite3 -L/usr/lib64 -lexpat -ljpeg -lpng -lz  -lm -lrt -ldl  $(KAK_LIBS) $(DWG_LIBS) $(CURL_LIB) \
++225c225
++< CURL_LIB	=	-L/usr/kerberos/lib64 -lcurl -ldl -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lidn -lssl -lcrypto -lz  
++---
++> CURL_LIB	=	-L/usr/lib64 -lcurl -ldl -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lidn -lssl -lcrypto -lz  
+Index: ../trunk-jpl/externalpackages/gdal/install-linux64-astrid.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/gdal/install-linux64-astrid.sh	(revision 14196)
++++ ../trunk-jpl/externalpackages/gdal/install-linux64-astrid.sh	(revision 14197)
+@@ -30,7 +30,7 @@
+ 	--with-expat-lib=/usr/lib64/libexpat.so
+ 
+ #Patch GDALmake.opt
+-patch GDALmake.opt ../GDALmake.opt.patch.astrid
++patch GDALmake.opt ../configs/GDALmake.opt.patch.astrid
+ 
+ #Compile and install gdal
+ if [ $# -eq 0 ]; then
+Index: ../trunk-jpl/externalpackages/gdal/install-linux64-murdo.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/gdal/install-linux64-murdo.sh	(revision 14196)
++++ ../trunk-jpl/externalpackages/gdal/install-linux64-murdo.sh	(revision 14197)
+@@ -28,7 +28,7 @@
+ 	--with-unix-stdio-64=no 
+ 
+ #Patch GDALmake.opt
+-patch GDALmake.opt ../GDALmake.opt.patch
++patch GDALmake.opt ../configs/GDALmake.opt.patch
+ 
+ #Compile and install gdal
+ if [ $# -eq 0 ]; then
Index: /issm/oecreview/Archive/14064-14311/ISSM-14197-14198.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14197-14198.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14197-14198.diff	(revision 14312)
@@ -0,0 +1,116 @@
+Index: ../trunk-jpl/test/NightlyRun/test328.m
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/test328.m	(revision 14197)
++++ ../trunk-jpl/test/NightlyRun/test328.m	(revision 14198)
+@@ -6,7 +6,7 @@
+ md.surfaceforcings.b_pos=-100. + 0.00005*md.mesh.x - 0.0001*md.mesh.y;
+ md.surfaceforcings.b_neg=250. + 0.000051*md.mesh.x - 0.00011*md.mesh.y;
+ md.surfaceforcings.href=md.geometry.surface;
+-md.surfaceforcings.smbref= 1000 - 0.001*md.mesh.x - 0.005*md.mesh.y;
++md.surfaceforcings.smbref= 1000. - 0.001*md.mesh.x - 0.005*md.mesh.y;
+ md.transient.requested_outputs=TotalSmbEnum();
+ md.cluster=generic('name',oshostname(),'np',3);
+ md=solve(md,TransientSolutionEnum());
+Index: ../trunk-jpl/test/NightlyRun/test329.py
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/test329.py	(revision 14197)
++++ ../trunk-jpl/test/NightlyRun/test329.py	(revision 14198)
+@@ -18,7 +18,7 @@
+ md.surfaceforcings.b_pos=-100. + 0.00005*md.mesh.x - 0.0001*md.mesh.y
+ md.surfaceforcings.b_neg=250. + 0.000051*md.mesh.x - 0.00011*md.mesh.y
+ md.surfaceforcings.href=copy.deepcopy(md.geometry.surface).reshape(-1)
+-md.surfaceforcings.smbref= 1000 - 0.001*md.mesh.x - 0.005*md.mesh.y;
++md.surfaceforcings.smbref= 1000. - 0.001*md.mesh.x - 0.005*md.mesh.y;
+ md.transient.requested_outputs=TotalSmbEnum()
+ md.cluster=generic('name',oshostname(),'np',3)
+ md=solve(md,TransientSolutionEnum())
+Index: ../trunk-jpl/test/NightlyRun/test329.m
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/test329.m	(revision 14197)
++++ ../trunk-jpl/test/NightlyRun/test329.m	(revision 14198)
+@@ -7,7 +7,7 @@
+ md.surfaceforcings.b_pos=-100. + 0.00005*md.mesh.x - 0.0001*md.mesh.y;
+ md.surfaceforcings.b_neg=250. + 0.000051*md.mesh.x - 0.00011*md.mesh.y;
+ md.surfaceforcings.href=md.geometry.surface;
+-md.surfaceforcings.smbref= 1000 - 0.001*md.mesh.x - 0.005*md.mesh.y;
++md.surfaceforcings.smbref= 1000. - 0.001*md.mesh.x - 0.005*md.mesh.y;
+ md.transient.requested_outputs=TotalSmbEnum();
+ md.cluster=generic('name',oshostname(),'np',3);
+ md=solve(md,TransientSolutionEnum());
+Index: ../trunk-jpl/test/NightlyRun/test328.py
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/test328.py	(revision 14197)
++++ ../trunk-jpl/test/NightlyRun/test328.py	(revision 14198)
+@@ -18,7 +18,7 @@
+ md.surfaceforcings.b_neg=250. + 0.000051*md.mesh.x - 0.00011*md.mesh.y
+ md.transient.requested_outputs=TotalSmbEnum()
+ md.surfaceforcings.href=copy.deepcopy(md.geometry.surface).reshape(-1)
+-md.surfaceforcings.smbref= 1000 - 0.001*md.mesh.x - 0.005*md.mesh.y;
++md.surfaceforcings.smbref= 1000. - 0.001*md.mesh.x - 0.005*md.mesh.y;
+ md.cluster=generic('name',oshostname(),'np',3)
+ md=solve(md,TransientSolutionEnum())
+ 
+Index: ../trunk-jpl/src/m/classes/surfaceforcings.py
+===================================================================
+--- ../trunk-jpl/src/m/classes/surfaceforcings.py	(revision 14197)
++++ ../trunk-jpl/src/m/classes/surfaceforcings.py	(revision 14198)
+@@ -20,14 +20,9 @@
+ 		self.ispdd = 0
+ 		self.issmbgradients = 0
+ 		self.isdelta18o = 0
+-		self.hc = float('NaN')
+ 		self.href = float('NaN')
+ 		self.smbref = float('NaN')
+-		self.smb_pos_max = float('NaN')
+-		self.smb_pos_min = float('NaN')
+-		self.a_pos = float('NaN')
+ 		self.b_pos = float('NaN')
+-		self.a_neg = float('NaN')
+ 		self.b_neg = float('NaN')
+ 		self.monthlytemperatures = float('NaN')
+ 		self.delta18o = float('NaN')
+@@ -56,14 +51,9 @@
+ 		string="%s\n%s"%(string,fielddisplay(self,'delta18o','delta18o, required if pdd is activated and delta18o activated'))
+ 		string="%s\n%s"%(string,fielddisplay(self,'delta18o_surface','surface elevation of the delta18o site, required if pdd is activated and delta18o activated'))
+ 		string="%s\n%s"%(string,fielddisplay(self,'issmbgradients','is smb gradients method activated (0 or 1, default is 0)'))
+-		string="%s\n%s"%(string,fielddisplay(self,'hc',' elevation of intersection between accumulation and ablation regime required if smb gradients is activated'))
+ 		string="%s\n%s"%(string,fielddisplay(self,'href',' reference elevation from which deviation is used to calculate SMB adjustment in smb gradients method'))
+ 		string="%s\n%s"%(string,fielddisplay(self,'smbref',' reference smb from which deviation is calculated in smb gradients method'))
+-		string="%s\n%s"%(string,fielddisplay(self,'smb_pos_max',' maximum value of positive smb required if smb gradients is activated'))
+-		string="%s\n%s"%(string,fielddisplay(self,'smb_pos_min',' minimum value of positive smb required if smb gradients is activated'))
+-		string="%s\n%s"%(string,fielddisplay(self,'a_pos',' intercept of hs - smb regression line for accumulation regime required if smb gradients is activated'))
+ 		string="%s\n%s"%(string,fielddisplay(self,'b_pos',' slope of hs - smb regression line for accumulation regime required if smb gradients is activated'))
+-		string="%s\n%s"%(string,fielddisplay(self,'a_neg',' intercept of hs - smb regression line for ablation regime required if smb gradients is activated'))
+ 		string="%s\n%s"%(string,fielddisplay(self,'b_neg',' slope of hs - smb regression line for ablation regime required if smb gradients is activated'))
+ 
+ 		return string
+@@ -95,14 +85,9 @@
+ 					md = checkfield(md,'surfaceforcings.temperatures_lgm','size',[md.mesh.numberofvertices+1,12],'NaN',1)
+ 					md = checkfield(md,'surfaceforcings.precipitations_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1)
+ 			elif self.issmbgradients:
+-				md = checkfield(md,'surfaceforcings.hc','forcing',1,'NaN',1)
+ 				md = checkfield(md,'surfaceforcings.href','forcing',1,'NaN',1)
+ 				md = checkfield(md,'surfaceforcings.smbref','forcing',1,'NaN',1)
+-				md = checkfield(md,'surfaceforcings.smb_pos_max','forcing',1,'NaN',1)
+-				md = checkfield(md,'surfaceforcings.smb_pos_min','forcing',1,'NaN',1)
+-				md = checkfield(md,'surfaceforcings.a_pos','forcing',1,'NaN',1)
+ 				md = checkfield(md,'surfaceforcings.b_pos','forcing',1,'NaN',1)
+-				md = checkfield(md,'surfaceforcings.a_neg','forcing',1,'NaN',1)
+ 				md = checkfield(md,'surfaceforcings.b_neg','forcing',1,'NaN',1)
+ 			else:
+ 				md = checkfield(md,'surfaceforcings.mass_balance','forcing',1,'NaN',1)
+@@ -133,14 +118,9 @@
+ 		WriteData(fid,'object',self,'fieldname','issmbgradients','format','Boolean')
+ 
+ 		if self.issmbgradients:
+-			WriteData(fid,'object',self,'fieldname','hc','format','DoubleMat','mattype',1)
+ 			WriteData(fid,'object',self,'fieldname','href','format','DoubleMat','mattype',1)
+ 			WriteData(fid,'object',self,'fieldname','smbref','format','DoubleMat','mattype',1)
+-			WriteData(fid,'object',self,'fieldname','smb_pos_max','format','DoubleMat','mattype',1)
+-			WriteData(fid,'object',self,'fieldname','smb_pos_min','format','DoubleMat','mattype',1)
+-			WriteData(fid,'object',self,'fieldname','a_pos','format','DoubleMat','mattype',1)
+ 			WriteData(fid,'object',self,'fieldname','b_pos','format','DoubleMat','mattype',1)
+-			WriteData(fid,'object',self,'fieldname','a_neg','format','DoubleMat','mattype',1)
+ 			WriteData(fid,'object',self,'fieldname','b_neg','format','DoubleMat','mattype',1)
+ 	# }}}
+ 
Index: /issm/oecreview/Archive/14064-14311/ISSM-14198-14199.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14198-14199.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14198-14199.diff	(revision 14312)
@@ -0,0 +1,330 @@
+Index: ../trunk-jpl/externalpackages/gdal/install-macosx64.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/gdal/install-macosx64.sh	(revision 14198)
++++ ../trunk-jpl/externalpackages/gdal/install-macosx64.sh	(revision 14199)
+@@ -1,38 +0,0 @@
+-#!/bin/bash
+-set -eu
+-
+-#Some cleanup
+-rm -rf src
+-rm -rf install
+-rm -rf gdal-1.6.0
+-mkdir src install
+-
+-#Download from ISSM server
+-$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/gdal-1.6.0.tar.gz' 'gdal-1.6.0.tar.gz'
+-
+-#Untar 
+-tar -zxvf  gdal-1.6.0.tar.gz
+-
+-#Move gdal into src directory
+-mv gdal-1.6.0/* src
+-rm -rf gdal-1.6.0
+-
+-#Configure gdal
+-cd src
+-./configure \
+-	--prefix="$ISSM_DIR/externalpackages/gdal/install" \
+-	--without-python \
+-	--without-png \
+-	--with-netcdf=no \
+-	--with-jasper=no \
+-	--without-ld-shared \
+-	--with-unix-stdio-64=no \
+-	--with-expat-lib=/usr/lib64/libexpat.so
+-
+-#Compile and install gdal
+-if [ $# -eq 0 ]; then
+-	make
+-else
+-	make -j $1
+-fi
+-make install
+Index: ../trunk-jpl/externalpackages/gdal/install-linux64-astrid.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/gdal/install-linux64-astrid.sh	(revision 14198)
++++ ../trunk-jpl/externalpackages/gdal/install-linux64-astrid.sh	(revision 14199)
+@@ -1,41 +0,0 @@
+-#!/bin/bash
+-set -eu
+-
+-#Some cleanup
+-rm -rf src
+-rm -rf install
+-rm -rf gdal-1.6.0
+-mkdir src install
+-
+-#Download from ISSM server
+-$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/gdal-1.6.0.tar.gz' 'gdal-1.6.0.tar.gz'
+-
+-#Untar 
+-tar -zxvf  gdal-1.6.0.tar.gz
+-
+-#Move gdal into src directory
+-mv gdal-1.6.0/* src
+-rm -rf gdal-1.6.0
+-
+-#Configure gdal
+-cd src
+-./configure \
+-	--prefix="$ISSM_DIR/externalpackages/gdal/install" \
+-	--without-python \
+-	--without-png \
+-	--with-netcdf=no \
+-	--with-jasper=no \
+-	--without-ld-shared \
+-	--with-unix-stdio-64=no \
+-	--with-expat-lib=/usr/lib64/libexpat.so
+-
+-#Patch GDALmake.opt
+-patch GDALmake.opt ../configs/GDALmake.opt.patch.astrid
+-
+-#Compile and install gdal
+-if [ $# -eq 0 ]; then
+-	make
+-else
+-	make -j $1
+-fi
+-make install
+Index: ../trunk-jpl/externalpackages/gdal/install-linux64-murdo.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/gdal/install-linux64-murdo.sh	(revision 14198)
++++ ../trunk-jpl/externalpackages/gdal/install-linux64-murdo.sh	(revision 14199)
+@@ -1,39 +0,0 @@
+-#!/bin/bash
+-set -eu
+-
+-#Some cleanup
+-rm -rf src
+-rm -rf install
+-rm -rf gdal-1.6.0
+-mkdir src install
+-
+-#Download from ISSM server
+-$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/gdal-1.6.0.tar.gz' 'gdal-1.6.0.tar.gz'
+-
+-#Untar 
+-tar -zxvf  gdal-1.6.0.tar.gz
+-
+-#Move gdal into src directory
+-mv gdal-1.6.0/* src
+-rm -rf gdal-1.6.0
+-
+-#Configure gdal
+-cd src
+-./configure --prefix="$ISSM_DIR/externalpackages/gdal/install" \
+-	--without-python \
+-	--without-png \
+-	--with-netcdf=no \
+-	--with-jasper=no \
+-	--without-ld-shared \
+-	--with-unix-stdio-64=no 
+-
+-#Patch GDALmake.opt
+-patch GDALmake.opt ../configs/GDALmake.opt.patch
+-
+-#Compile and install gdal
+-if [ $# -eq 0 ]; then
+-	make
+-else
+-	make -j $1
+-fi
+-make install
+Index: ../trunk-jpl/externalpackages/gdal/install-1.6-macosx64.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/gdal/install-1.6-macosx64.sh	(revision 0)
++++ ../trunk-jpl/externalpackages/gdal/install-1.6-macosx64.sh	(revision 14199)
+@@ -0,0 +1,38 @@
++#!/bin/bash
++set -eu
++
++#Some cleanup
++rm -rf src
++rm -rf install
++rm -rf gdal-1.6.0
++mkdir src install
++
++#Download from ISSM server
++$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/gdal-1.6.0.tar.gz' 'gdal-1.6.0.tar.gz'
++
++#Untar 
++tar -zxvf  gdal-1.6.0.tar.gz
++
++#Move gdal into src directory
++mv gdal-1.6.0/* src
++rm -rf gdal-1.6.0
++
++#Configure gdal
++cd src
++./configure \
++	--prefix="$ISSM_DIR/externalpackages/gdal/install" \
++	--without-python \
++	--without-png \
++	--with-netcdf=no \
++	--with-jasper=no \
++	--without-ld-shared \
++	--with-unix-stdio-64=no \
++	--with-expat-lib=/usr/lib64/libexpat.so
++
++#Compile and install gdal
++if [ $# -eq 0 ]; then
++	make
++else
++	make -j $1
++fi
++make install
+
+Property changes on: ../trunk-jpl/externalpackages/gdal/install-1.6-macosx64.sh
+___________________________________________________________________
+Added: svn:executable
+## -0,0 +1 ##
++*
+Index: ../trunk-jpl/externalpackages/gdal/install-1.9-macosx64.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/gdal/install-1.9-macosx64.sh	(revision 0)
++++ ../trunk-jpl/externalpackages/gdal/install-1.9-macosx64.sh	(revision 14199)
+@@ -0,0 +1,35 @@
++#!/bin/bash
++set -eu
++
++#Some cleanup
++rm -rf src
++rm -rf install
++rm -rf gdal-1.9.2
++mkdir src install
++
++#Download from ISSM server
++$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/gdal-1.9.2.tar.gz' 'gdal-1.9.2.tar.gz'
++
++#Untar 
++tar -zxvf  gdal-1.9.2.tar.gz
++
++#Move gdal into src directory
++mv gdal-1.9.2/* src
++rm -rf gdal-1.9.2
++
++#Configure gdal
++cd src
++./configure \
++	--prefix="$ISSM_DIR/externalpackages/gdal/install" \
++	--with-python \
++	--with-netcdf=no \
++	--with-static-proj4=".//local/lib/libproj4.a" \
++	--without-hdf5
++
++#Compile and install gdal
++if [ $# -eq 0 ]; then
++	make
++else
++	make -j $1
++fi
++make install
+
+Property changes on: ../trunk-jpl/externalpackages/gdal/install-1.9-macosx64.sh
+___________________________________________________________________
+Added: svn:executable
+## -0,0 +1 ##
++*
+Index: ../trunk-jpl/externalpackages/gdal/install-1.6-linux64-astrid.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/gdal/install-1.6-linux64-astrid.sh	(revision 0)
++++ ../trunk-jpl/externalpackages/gdal/install-1.6-linux64-astrid.sh	(revision 14199)
+@@ -0,0 +1,41 @@
++#!/bin/bash
++set -eu
++
++#Some cleanup
++rm -rf src
++rm -rf install
++rm -rf gdal-1.6.0
++mkdir src install
++
++#Download from ISSM server
++$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/gdal-1.6.0.tar.gz' 'gdal-1.6.0.tar.gz'
++
++#Untar 
++tar -zxvf  gdal-1.6.0.tar.gz
++
++#Move gdal into src directory
++mv gdal-1.6.0/* src
++rm -rf gdal-1.6.0
++
++#Configure gdal
++cd src
++./configure \
++	--prefix="$ISSM_DIR/externalpackages/gdal/install" \
++	--without-python \
++	--without-png \
++	--with-netcdf=no \
++	--with-jasper=no \
++	--without-ld-shared \
++	--with-unix-stdio-64=no \
++	--with-expat-lib=/usr/lib64/libexpat.so
++
++#Patch GDALmake.opt
++patch GDALmake.opt ../configs/GDALmake.opt.patch.astrid
++
++#Compile and install gdal
++if [ $# -eq 0 ]; then
++	make
++else
++	make -j $1
++fi
++make install
+
+Property changes on: ../trunk-jpl/externalpackages/gdal/install-1.6-linux64-astrid.sh
+___________________________________________________________________
+Added: svn:executable
+## -0,0 +1 ##
++*
+Index: ../trunk-jpl/externalpackages/gdal/install-1.6-linux64-murdo.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/gdal/install-1.6-linux64-murdo.sh	(revision 0)
++++ ../trunk-jpl/externalpackages/gdal/install-1.6-linux64-murdo.sh	(revision 14199)
+@@ -0,0 +1,39 @@
++#!/bin/bash
++set -eu
++
++#Some cleanup
++rm -rf src
++rm -rf install
++rm -rf gdal-1.6.0
++mkdir src install
++
++#Download from ISSM server
++$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/gdal-1.6.0.tar.gz' 'gdal-1.6.0.tar.gz'
++
++#Untar 
++tar -zxvf  gdal-1.6.0.tar.gz
++
++#Move gdal into src directory
++mv gdal-1.6.0/* src
++rm -rf gdal-1.6.0
++
++#Configure gdal
++cd src
++./configure --prefix="$ISSM_DIR/externalpackages/gdal/install" \
++	--without-python \
++	--without-png \
++	--with-netcdf=no \
++	--with-jasper=no \
++	--without-ld-shared \
++	--with-unix-stdio-64=no 
++
++#Patch GDALmake.opt
++patch GDALmake.opt ../configs/GDALmake.opt.patch
++
++#Compile and install gdal
++if [ $# -eq 0 ]; then
++	make
++else
++	make -j $1
++fi
++make install
+
+Property changes on: ../trunk-jpl/externalpackages/gdal/install-1.6-linux64-murdo.sh
+___________________________________________________________________
+Added: svn:executable
+## -0,0 +1 ##
++*
Index: /issm/oecreview/Archive/14064-14311/ISSM-14199-14200.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14199-14200.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14199-14200.diff	(revision 14312)
@@ -0,0 +1,56 @@
+Index: ../trunk-jpl/src/android/ISSM/src/com/example/issm/ISSM.java
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/src/com/example/issm/ISSM.java	(revision 14199)
++++ ../trunk-jpl/src/android/ISSM/src/com/example/issm/ISSM.java	(revision 14200)
+@@ -16,6 +16,7 @@
+ import android.widget.EditText;
+ import android.widget.FrameLayout;
+ import android.widget.SeekBar;
++import android.widget.SeekBar.OnSeekBarChangeListener;
+ import android.widget.TextView;
+ import android.widget.Toast;
+ 
+@@ -34,7 +35,7 @@
+ 	private SeekBar bar;
+     private TextView /*txtStatus,*/ txtValue;
+     private ColorMap colorMap;
+-    
++    private int alpha;
+ 
+     @Override
+   //------------------------------------------------------------------------------------------------    
+@@ -54,6 +55,26 @@
+         Button button = (Button) super.findViewById(R.id.button1);
+ 	    frame = (FrameLayout)findViewById(R.id.frame);
+         button.setOnClickListener(this);
++        bar.setOnSeekBarChangeListener(new OnSeekBarChangeListener()
++        {
++                public void onProgressChanged(SeekBar seekBar, int progress,boolean fromUser)
++                {
++                        alpha = progress;
++                }
++
++	            @Override
++	            public void onStartTrackingTouch(SeekBar seekBar) {
++	                    // TODO Auto-generated method stub
++	
++	            }
++	
++	            @Override
++	            public void onStopTrackingTouch(SeekBar seekBar) {
++	                    // TODO Auto-generated method stub
++	
++	            }
++        });
++
+         
+         //load up the ISSM library and create double buffer in java
+         //which later on will be pass for native allocation.
+@@ -78,7 +99,6 @@
+ //------------------------------------------------------------------------------------------------
+     public void fillBuffer()
+     {
+-		double alpha=5;
+     	issmNative.solveISSMModel(alpha,buff);
+     }
+ //------------------------------------------------------------------------------------------------  
Index: /issm/oecreview/Archive/14064-14311/ISSM-14200-14201.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14200-14201.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14200-14201.diff	(revision 14312)
@@ -0,0 +1,48 @@
+Index: ../trunk-jpl/externalpackages/gdal/install-1.9-linux64.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/gdal/install-1.9-linux64.sh	(revision 0)
++++ ../trunk-jpl/externalpackages/gdal/install-1.9-linux64.sh	(revision 14201)
+@@ -0,0 +1,37 @@
++#!/bin/bash
++set -eu
++
++#WARNING: you need to have python installed in externalpackages
++
++#Some cleanup
++rm -rf src
++rm -rf install
++rm -rf gdal-1.9.2
++mkdir src install
++
++#Download from ISSM server
++$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/gdal-1.9.2.tar.gz' 'gdal-1.9.2.tar.gz'
++
++#Untar 
++tar -zxvf  gdal-1.9.2.tar.gz
++
++#Move gdal into src directory
++mv gdal-1.9.2/* src
++rm -rf gdal-1.9.2
++
++#Configure gdal
++cd src
++./configure \
++	--prefix="$ISSM_DIR/externalpackages/gdal/install" \
++	--with-python="$ISSM_DIR/externalpackages/python/install2/" \
++	--with-netcdf=no \
++	--with-jasper=no \
++	--without-hdf5
++
++#Compile and install gdal
++if [ $# -eq 0 ]; then
++	make
++else
++	make -j $1
++fi
++make install
+
+Property changes on: ../trunk-jpl/externalpackages/gdal/install-1.9-linux64.sh
+___________________________________________________________________
+Added: svn:executable
+## -0,0 +1 ##
++*
Index: /issm/oecreview/Archive/14064-14311/ISSM-14201-14202.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14201-14202.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14201-14202.diff	(revision 14312)
@@ -0,0 +1,25 @@
+Index: ../trunk-jpl/externalpackages/gdal/install-1.9-macosx64.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/gdal/install-1.9-macosx64.sh	(revision 14201)
++++ ../trunk-jpl/externalpackages/gdal/install-1.9-macosx64.sh	(revision 14202)
+@@ -23,7 +23,6 @@
+ 	--prefix="$ISSM_DIR/externalpackages/gdal/install" \
+ 	--with-python \
+ 	--with-netcdf=no \
+-	--with-static-proj4=".//local/lib/libproj4.a" \
+ 	--without-hdf5
+ 
+ #Compile and install gdal
+Index: ../trunk-jpl/externalpackages/gdal/install-1.9-linux64.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/gdal/install-1.9-linux64.sh	(revision 14201)
++++ ../trunk-jpl/externalpackages/gdal/install-1.9-linux64.sh	(revision 14202)
+@@ -23,7 +23,7 @@
+ cd src
+ ./configure \
+ 	--prefix="$ISSM_DIR/externalpackages/gdal/install" \
+-	--with-python="$ISSM_DIR/externalpackages/python/install2/" \
++	--with-python \
+ 	--with-netcdf=no \
+ 	--with-jasper=no \
+ 	--without-hdf5
Index: /issm/oecreview/Archive/14064-14311/ISSM-14202-14203.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14202-14203.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14202-14203.diff	(revision 14312)
@@ -0,0 +1,61 @@
+Index: ../trunk-jpl/src/android/ISSM/jni/issmlib/Android.mk
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/issmlib/Android.mk	(revision 14202)
++++ ../trunk-jpl/src/android/ISSM/jni/issmlib/Android.mk	(revision 14203)
+@@ -2,7 +2,7 @@
+ include $(CLEAR_VARS)
+ LOCAL_MODULE    := libISSMCore
+ LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog 
+-LOCAL_SRC_FILES := libISSMCore.a
++LOCAL_SRC_FILES := ../../../../../lib/libISSMCore.a
+ LOCAL_EXPORT_C_INCLUDES := $(ISSM_DIR)
+ include $(PREBUILT_STATIC_LIBRARY)
+ 
+Index: ../trunk-jpl/src/android/ISSM/jni/Android.mk
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/Android.mk	(revision 14202)
++++ ../trunk-jpl/src/android/ISSM/jni/Android.mk	(revision 14203)
+@@ -1,10 +1,8 @@
+ LOCAL_PATH:= $(call my-dir)
+ my_LOCAL_PATH:=$(LOCAL_PATH)
+ 
+-#include $(LOCAL_PATH)/issmlib\Android.mk
+ include $(call all-subdir-makefiles)
+ 
+-
+ LOCAL_PATH := $(my_LOCAL_PATH)
+ 
+ include $(CLEAR_VARS)
+@@ -12,7 +10,6 @@
+ LOCAL_ALLOW_UNDEFINED_SYMBOLS := true
+ LOCAL_CFLAGS := -Wno-psabi -DHAVE_CONFIG_H
+ LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog -ldl -lm
+-#LOCAL_LDLIBS := -llog -ldl -lm
+ LOCAL_MODULE := IssmJni
+ LOCAL_SRC_FILES := Main.cpp 
+ LOCAL_STATIC_LIBRARIES := libISSMCore libgsl libgslcblas
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/Android.mk
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/gsllib/Android.mk	(revision 14202)
++++ ../trunk-jpl/src/android/ISSM/jni/gsllib/Android.mk	(revision 14203)
+@@ -1,16 +1,13 @@
+ LOCAL_PATH:= $(call my-dir)
++my_directory:= $(LOCAL_PATH)
+ include $(CLEAR_VARS)
+ LOCAL_MODULE    := libgsl
+-LOCAL_SRC_FILES := libsgsl.a
++LOCAL_SRC_FILES := ../../../../../externalpackages/gsl/install/lib/libgsl.a
+ LOCAL_EXPORT_C_INCLUDES := $(ISSM_DIR)/externalpackages/gsl/install/include/gsl/
+ include $(PREBUILT_STATIC_LIBRARY)
+ 
+-#include $(CLEAR_VARS)
+-#LOCAL_MODULE    := libgslcblas
+-#LOCAL_SRC_FILES := libgslcblas.so.0 
+-#include $(PREBUILT_SHARED_LIBRARY)
+-
++LOCAL_PATH=$(my_directory)
+ include $(CLEAR_VARS)
+ LOCAL_MODULE    := libgslcblas
+-LOCAL_SRC_FILES := libsgslcblas.a 
++LOCAL_SRC_FILES := ../../../../../externalpackages/gsl/install/lib/libgslcblas.a
+ include $(PREBUILT_STATIC_LIBRARY)
Index: /issm/oecreview/Archive/14064-14311/ISSM-14203-14204.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14203-14204.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14203-14204.diff	(revision 14312)
@@ -0,0 +1,12 @@
+Index: ../trunk-jpl/src/android/ISSM/jni/issmlib/libISSMCore.a
+===================================================================
+Cannot display: file marked as a binary type.
+svn:mime-type = application/octet-stream
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/libsgslcblas.a
+===================================================================
+Cannot display: file marked as a binary type.
+svn:mime-type = application/octet-stream
+Index: ../trunk-jpl/src/android/ISSM/jni/gsllib/libsgsl.a
+===================================================================
+Cannot display: file marked as a binary type.
+svn:mime-type = application/octet-stream
Index: /issm/oecreview/Archive/14064-14311/ISSM-14204-14205.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14204-14205.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14204-14205.diff	(revision 14312)
@@ -0,0 +1,13 @@
+Index: ../trunk-jpl/src/android/ISSM/Makefile.am
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/Makefile.am	(revision 14204)
++++ ../trunk-jpl/src/android/ISSM/Makefile.am	(revision 14205)
+@@ -4,7 +4,7 @@
+ if SHAREDLIBS 	 	 
+ deps = 	 	 
+ else 	 	 
+-deps = ./jni/issmlib/libISSMCore.a ./jni/Main.cpp
++deps = $(ISSM_DIR)/src/c/libISSMCore.a ./jni/Main.cpp
+ endif
+ 
+ install-exec-am: all
Index: /issm/oecreview/Archive/14064-14311/ISSM-14205-14206.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14205-14206.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14205-14206.diff	(revision 14312)
@@ -0,0 +1,11 @@
+Index: ../trunk-jpl/src/android/ISSM/Makefile.am
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/Makefile.am	(revision 14205)
++++ ../trunk-jpl/src/android/ISSM/Makefile.am	(revision 14206)
+@@ -13,3 +13,6 @@
+ libs/armeabi/libIssmJni.so:  $(deps)
+ 	$(ANDROID_NDK_DIR)/ndk-build -C ./jni clean
+ 	$(ANDROID_NDK_DIR)/ndk-build -C ./jni
++
++clean:
++	rm -rf libs obj
Index: /issm/oecreview/Archive/14064-14311/ISSM-14206-14207.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14206-14207.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14206-14207.diff	(revision 14312)
@@ -0,0 +1,14 @@
+Index: ../trunk-jpl/src/android/ISSM/jni/Main.cpp
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/jni/Main.cpp	(revision 14206)
++++ ../trunk-jpl/src/android/ISSM/jni/Main.cpp	(revision 14207)
+@@ -81,6 +81,9 @@
+ 		__android_log_print(ANDROID_LOG_INFO, "Native","alpha %g ",alpha);
+ 		InputDuplicatex(fm->elements,fm->nodes,fm->vertices,fm->loads,fm->materials,fm->parameters,AndroidFrictionCoefficientEnum,FrictionCoefficientEnum);
+ 
++		/*now scale friction by alpha: */
++		InputScalex(fm->elements,fm->nodes,fm->vertices,fm->loads,fm->materials,fm->parameters,FrictionCoefficientEnum,alpha/100);
++
+ 		/*solve: */
+ 		fm -> Solve();
+ 
Index: /issm/oecreview/Archive/14064-14311/ISSM-14207-14208.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14207-14208.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14207-14208.diff	(revision 14312)
@@ -0,0 +1,68 @@
+Index: ../trunk-jpl/src/android/ISSM/src/com/example/issm/MyGLRenderer.java
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/src/com/example/issm/MyGLRenderer.java	(revision 14207)
++++ ../trunk-jpl/src/android/ISSM/src/com/example/issm/MyGLRenderer.java	(revision 14208)
+@@ -234,7 +234,7 @@
+ 		
+ 		mProjectionMatrix = new float[triangleVert.length][16];
+ 		for (int i = 0; i < triangleVert.length; i++)
+-			Matrix.frustumM(mProjectionMatrix[i], 0, -ratio*0.5f, ratio*1.0f, 0.0f, 1.0f, 1.0f, 14f);
++			Matrix.frustumM(mProjectionMatrix[i], 0, -ratio*0.7f, ratio*1.0f, 0.0f, 1.0f, 1.0f, 14f);
+ 		//Matrix.frustumM(m, offset, left, right, bottom, top, near, far)
+     }
+     
+Index: ../trunk-jpl/src/android/ISSM/src/com/example/issm/ISSM.java
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/src/com/example/issm/ISSM.java	(revision 14207)
++++ ../trunk-jpl/src/android/ISSM/src/com/example/issm/ISSM.java	(revision 14208)
+@@ -36,7 +36,8 @@
+     private TextView /*txtStatus,*/ txtValue;
+     private ColorMap colorMap;
+     private int alpha;
+-
++    private final int MINIMUM = 0;
++    private final int OFFSET = 10;
+     @Override
+   //------------------------------------------------------------------------------------------------    
+     public void onCreate(Bundle savedInstanceState) {
+@@ -49,6 +50,7 @@
+         		issmFolder = map.getString("pathToFile");
+         	}
+         }
++        alpha = 90 + OFFSET;
+         setContentView(R.layout.activity_issm);
+         this.bar  = (SeekBar) findViewById(R.id.seekBar);
+         this.txtValue  = (TextView) super.findViewById(R.id.value);
+@@ -59,7 +61,9 @@
+         {
+                 public void onProgressChanged(SeekBar seekBar, int progress,boolean fromUser)
+                 {
+-                        alpha = progress;
++        
++                        alpha = progress + OFFSET;
++                        txtValue.setText("Friction Scaling: " +  alpha + "%");
+                 }
+ 
+ 	            @Override
+Index: ../trunk-jpl/src/android/ISSM/res/layout/activity_issm.xml
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/res/layout/activity_issm.xml	(revision 14207)
++++ ../trunk-jpl/src/android/ISSM/res/layout/activity_issm.xml	(revision 14208)
+@@ -11,6 +11,8 @@
+         android:layout_height="wrap_content"
+         android:layout_alignParentBottom="true"
+         android:layout_alignParentLeft="true"
++        android:progress="90"
++        android:max="490"
+         android:layout_marginBottom="41dp" />
+ 
+     <TextView
+@@ -20,7 +22,7 @@
+         android:layout_above="@+id/seekBar"
+         android:layout_centerHorizontal="true"
+         android:layout_marginBottom="15dp"
+-        android:text="alpha value = 0" />
++        android:text="Friction Scaling: 100%" />
+ 
+     <FrameLayout
+         xmlns:android="http://schemas.android.com/apk/res/android"
Index: /issm/oecreview/Archive/14064-14311/ISSM-14210-14211.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14210-14211.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14210-14211.diff	(revision 14312)
@@ -0,0 +1,140 @@
+Index: ../trunk-jpl/src/m/geometry/FlagElements.py
+===================================================================
+--- ../trunk-jpl/src/m/geometry/FlagElements.py	(revision 14210)
++++ ../trunk-jpl/src/m/geometry/FlagElements.py	(revision 14211)
+@@ -3,6 +3,7 @@
+ #from basinzoom import *
+ from ContourToMesh import *
+ from MatlabFuncs import *
++from PythonFuncs import *
+ 
+ def FlagElements(md,region):
+ 	"""
+@@ -42,7 +43,7 @@
+ 					raise IOError("Error: File 'region' not found!" % region)
+ 				raise RuntimeError("FlagElements.py calling basinzoom.py is not complete.")
+ 				xlim,ylim=basinzoom('basin',region)
+-				flag_nodes=numpy.logical_and(numpy.logical_and(md.mesh.x<xlim[1],md.mesh.x>xlim[0]),numpy.logical_and(md.mesh.y<ylim[1],md.mesh.y>ylim[0]))
++				flag_nodes=logical_and_n(md.mesh.x<xlim[1],md.mesh.x>xlim[0],md.mesh.y<ylim[1],md.mesh.y>ylim[0])
+ 				flag=numpy.prod(flag_nodes[md.mesh.elements],axis=1).astype(bool)
+ 			else:
+ 				#ok, flag elements
+Index: ../trunk-jpl/src/m/mesh/ElementsFromEdge.py
+===================================================================
+--- ../trunk-jpl/src/m/mesh/ElementsFromEdge.py	(revision 14210)
++++ ../trunk-jpl/src/m/mesh/ElementsFromEdge.py	(revision 14211)
+@@ -1,4 +1,5 @@
+ import numpy
++from PythonFuncs import *
+ 
+ def ElementsFromEdge(elements,A,B):
+ 	"""
+@@ -11,16 +12,12 @@
+ 	"""
+ 
+ 	edgeelements=numpy.nonzero(\
+-		numpy.logical_or( \
+-		numpy.logical_or( \
+-		numpy.logical_or(numpy.logical_and(elements[:,0]==A,elements[:,1]==B), \
+-						 numpy.logical_and(elements[:,0]==A,elements[:,2]==B)) \
+-		, \
+-		numpy.logical_or(numpy.logical_and(elements[:,1]==A,elements[:,2]==B), \
+-						 numpy.logical_and(elements[:,1]==A,elements[:,0]==B)) \
+-		), \
+-		numpy.logical_or(numpy.logical_and(elements[:,2]==A,elements[:,0]==B), \
+-						 numpy.logical_and(elements[:,2]==A,elements[:,1]==B)) \
++		logical_or_n(numpy.logical_and(elements[:,0]==A,elements[:,1]==B), \
++					 numpy.logical_and(elements[:,0]==A,elements[:,2]==B), \
++					 numpy.logical_and(elements[:,1]==A,elements[:,2]==B), \
++					 numpy.logical_and(elements[:,1]==A,elements[:,0]==B), \
++					 numpy.logical_and(elements[:,2]==A,elements[:,0]==B), \
++					 numpy.logical_and(elements[:,2]==A,elements[:,1]==B), \
+ 		))[0]+1
+ 
+ 	return edgeelements
+Index: ../trunk-jpl/src/m/classes/model/model.py
+===================================================================
+--- ../trunk-jpl/src/m/classes/model/model.py	(revision 14210)
++++ ../trunk-jpl/src/m/classes/model/model.py	(revision 14211)
+@@ -44,6 +44,7 @@
+ from NodeConnectivity import *
+ from ElementConnectivity import *
+ from contourenvelope import *
++from PythonFuncs import *
+ #}}}
+ 
+ class model(object):
+@@ -406,7 +407,7 @@
+ 			if md1.mesh.dimension==3:
+ 				md2.diagnostic.icefront[:,2]=Pnode[md1.diagnostic.icefront[:,2].astype(int)-1]
+ 				md2.diagnostic.icefront[:,3]=Pnode[md1.diagnostic.icefront[:,3].astype(int)-1]
+-			md2.diagnostic.icefront=md2.diagnostic.icefront[numpy.nonzero(numpy.logical_and(numpy.logical_and(md2.diagnostic.icefront[:,0],md2.diagnostic.icefront[:,1]),md2.diagnostic.icefront[:,-1]))[0],:]
++			md2.diagnostic.icefront=md2.diagnostic.icefront[numpy.nonzero(logical_and_n(md2.diagnostic.icefront[:,0],md2.diagnostic.icefront[:,1],md2.diagnostic.icefront[:,-1]))[0],:]
+ 
+ 		#Results fields
+ 		if md1.results:
+Index: ../trunk-jpl/src/m/miscellaneous/PythonFuncs.py
+===================================================================
+--- ../trunk-jpl/src/m/miscellaneous/PythonFuncs.py	(revision 0)
++++ ../trunk-jpl/src/m/miscellaneous/PythonFuncs.py	(revision 14211)
+@@ -0,0 +1,24 @@
++def logical_and_n(*arg):
++	from numpy import logical_and
++
++	if len(arg):
++		result=arg[0]
++		for item in arg[1:]:
++			result=logical_and(result,item)
++		return result
++
++	else:
++		return None
++
++def logical_or_n(*arg):
++	from numpy import logical_or
++
++	if len(arg):
++		result=arg[0]
++		for item in arg[1:]:
++			result=logical_or(result,item)
++		return result
++
++	else:
++		return None
++
+Index: ../trunk-jpl/src/m/parameterization/setflowequation.py
+===================================================================
+--- ../trunk-jpl/src/m/parameterization/setflowequation.py	(revision 14210)
++++ ../trunk-jpl/src/m/parameterization/setflowequation.py	(revision 14211)
+@@ -2,6 +2,7 @@
+ from model import *
+ from pairoptions import *
+ from MatlabFuncs import *
++from PythonFuncs import *
+ from FlagElements import *
+ 
+ def setflowequation(md,*args):
+@@ -49,11 +50,11 @@
+ 
+ 	#Flag the elements that have not been flagged as filltype
+ 	if   strcmpi(filltype,'hutter'):
+-		hutterflag[numpy.nonzero(numpy.logical_not(numpy.logical_or(macayealflag,pattynflag)))]=True
++		hutterflag[numpy.nonzero(numpy.logical_not(logical_or_n(macayealflag,pattynflag)))]=True
+ 	elif strcmpi(filltype,'macayeal'):
+-		macayealflag[numpy.nonzero(numpy.logical_not(numpy.logical_or(hutterflag,numpy.logical_or(pattynflag,stokesflag))))]=True
++		macayealflag[numpy.nonzero(numpy.logical_not(logical_or_n(hutterflag,pattynflag,stokesflag)))]=True
+ 	elif strcmpi(filltype,'pattyn'):
+-		pattynflag[numpy.nonzero(numpy.logical_not(numpy.logical_or(hutterflag,numpy.logical_or(macayealflag,stokesflag))))]=True
++		pattynflag[numpy.nonzero(numpy.logical_not(logical_or_n(hutterflag,macayealflag,stokesflag)))]=True
+ 
+ 	#check that each element has at least one flag
+ 	if not any(hutterflag+macayealflag+l1l2flag+pattynflag+stokesflag):
+@@ -68,7 +69,7 @@
+ 
+ 	#Check that no pattyn or stokes for 2d mesh
+ 	if md.mesh.dimension==2:
+-		if numpy.any(numpy.logical_or(l1l2flag,stokesflag,pattynflag)):
++		if numpy.any(logical_or_n(l1l2flag,stokesflag,pattynflag)):
+ 			raise TypeError("stokes and pattyn elements not allowed in 2d mesh, extrude it first")
+ 
+ 	#Stokes can only be used alone for now:
Index: /issm/oecreview/Archive/14064-14311/ISSM-14211-14212.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14211-14212.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14211-14212.diff	(revision 14312)
@@ -0,0 +1,237 @@
+Index: ../trunk-jpl/test/NightlyRun/test1107.py
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/test1107.py	(revision 14211)
++++ ../trunk-jpl/test/NightlyRun/test1107.py	(revision 14212)
+@@ -8,6 +8,7 @@
+ from EnumDefinitions import *
+ from solve import *
+ from MatlabFuncs import *
++from PythonFuncs import *
+ 
+ """
+ This test is a test from the ISMP-HOM Intercomparison project.
+@@ -39,17 +40,17 @@
+ 
+ 	#Create MPCs to have periodic boundary conditions
+ #	posx=find(md.mesh.x==0. & ~(md.mesh.y==0. & md.mesh.vertexonbed) & ~(md.mesh.y==L & md.mesh.vertexonbed));
+-	posx=numpy.nonzero(numpy.logical_and(md.mesh.x==0.,numpy.logical_and(numpy.logical_not(numpy.logical_and(md.mesh.y==0.,md.mesh.vertexonbed)),numpy.logical_not(numpy.logical_and(md.mesh.y==L,md.mesh.vertexonbed)))))[0]
++	posx=numpy.nonzero(logical_and_n(md.mesh.x==0.,numpy.logical_not(numpy.logical_and(md.mesh.y==0.,md.mesh.vertexonbed)),numpy.logical_not(numpy.logical_and(md.mesh.y==L,md.mesh.vertexonbed))))[0]
+ #	posx2=find(md.mesh.x==max(md.mesh.x) & ~(md.mesh.y==0. & md.mesh.vertexonbed) & ~(md.mesh.y==L & md.mesh.vertexonbed));
+-	posx2=numpy.nonzero(numpy.logical_and(md.mesh.x==numpy.max(md.mesh.x),numpy.logical_and(numpy.logical_not(numpy.logical_and(md.mesh.y==0.,md.mesh.vertexonbed)),numpy.logical_not(numpy.logical_and(md.mesh.y==L,md.mesh.vertexonbed)))))[0]
++	posx2=numpy.nonzero(logical_and_n(md.mesh.x==numpy.max(md.mesh.x),numpy.logical_not(numpy.logical_and(md.mesh.y==0.,md.mesh.vertexonbed)),numpy.logical_not(numpy.logical_and(md.mesh.y==L,md.mesh.vertexonbed))))[0]
+ 
+-	posy=numpy.nonzero(numpy.logical_and(numpy.logical_and(md.mesh.y==0.,md.mesh.x!=0.),md.mesh.x!=numpy.max(md.mesh.x)))[0]    #Don't take the same nodes two times
+-	posy2=numpy.nonzero(numpy.logical_and(numpy.logical_and(md.mesh.y==numpy.max(md.mesh.y),md.mesh.x!=0.),md.mesh.x!=numpy.max(md.mesh.x)))[0]
++	posy=numpy.nonzero(logical_and_n(md.mesh.y==0.,md.mesh.x!=0.,md.mesh.x!=numpy.max(md.mesh.x)))[0]    #Don't take the same nodes two times
++	posy2=numpy.nonzero(logical_and_n(md.mesh.y==numpy.max(md.mesh.y),md.mesh.x!=0.,md.mesh.x!=numpy.max(md.mesh.x)))[0]
+ 
+ 	md.diagnostic.vertex_pairing=numpy.vstack((numpy.hstack((posx.reshape(-1,1)+1,posx2.reshape(-1,1)+1)),numpy.hstack((posy.reshape(-1,1)+1,posy2.reshape(-1,1)+1))))
+ 
+ 	#Add spc on the corners
+-	pos=numpy.nonzero(numpy.logical_and(numpy.logical_and(numpy.logical_or(md.mesh.x==0.,md.mesh.x==L),numpy.logical_or(md.mesh.y==0.,md.mesh.y==L)),md.mesh.vertexonbed))
++	pos=numpy.nonzero(logical_and_n(numpy.logical_or(md.mesh.x==0.,md.mesh.x==L),numpy.logical_or(md.mesh.y==0.,md.mesh.y==L),md.mesh.vertexonbed))
+ 	md.diagnostic.spcvy[:]=0.
+ 	md.diagnostic.spcvx[pos]=0.
+ 	if   (L==5000.):
+Index: ../trunk-jpl/test/NightlyRun/test1102.py
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/test1102.py	(revision 14211)
++++ ../trunk-jpl/test/NightlyRun/test1102.py	(revision 14212)
+@@ -8,6 +8,7 @@
+ from EnumDefinitions import *
+ from solve import *
+ from MatlabFuncs import *
++from PythonFuncs import *
+ 
+ """
+ This test is a test from the ISMP-HOM Intercomparison project.
+@@ -48,11 +49,11 @@
+ #	#Create MPCs to have periodic boundary conditions
+ #	posx=numpy.nonzero(md.mesh.x==0.)[0]
+ #	posx2=numpy.nonzero(md.mesh.x==numpy.max(md.mesh.x))[0]
+-#	posx=numpy.nonzero(numpy.logical_and(numpy.logical_and(md.mesh.x==0.,md.mesh.y!=0.),numpy.logical_and(md.mesh.y!=numpy.max(md.mesh.y),numpy.logical_not(md.mesh.vertexonbed))))[0]
+-#	posx2=numpy.nonzero(numpy.logical_and(numpy.logical_and(md.mesh.x==numpy.max(md.mesh.x),md.mesh.y!=0.),numpy.logical_and(md.mesh.y!=numpy.max(md.mesh.y),numpy.logical_not(md.mesh.vertexonbed))))[0]
++#	posx=numpy.nonzero(logical_and_n(md.mesh.x==0.,md.mesh.y!=0.,md.mesh.y!=numpy.max(md.mesh.y),numpy.logical_not(md.mesh.vertexonbed)))[0]
++#	posx2=numpy.nonzero(logical_and_n(md.mesh.x==numpy.max(md.mesh.x),md.mesh.y!=0.,md.mesh.y!=numpy.max(md.mesh.y),numpy.logical_not(md.mesh.vertexonbed)))[0]
+ 
+-#	posy=numpy.nonzero(numpy.logical_and(numpy.logical_and(md.mesh.y==0.,md.mesh.x!=0.),numpy.logical_and(md.mesh.x!=numpy.max(md.mesh.x),numpy.logical_not(md.mesh.vertexonbed))))[0]    #Don't take the same nodes two times
+-#	posy2=numpy.nonzero(numpy.logical_and(numpy.logical_and(md.mesh.y==numpy.max(md.mesh.y),md.mesh.x!=0.),numpy.logical_and(md.mesh.x!=numpy.max(md.mesh.x),numpy.logical_not(md.mesh.vertexonbed))))[0]
++#	posy=numpy.nonzero(logical_and_n(md.mesh.y==0.,md.mesh.x!=0.,md.mesh.x!=numpy.max(md.mesh.x),numpy.logical_not(md.mesh.vertexonbed)))[0]    #Don't take the same nodes two times
++#	posy2=numpy.nonzero(logical_and_n(md.mesh.y==numpy.max(md.mesh.y),md.mesh.x!=0.,md.mesh.x!=numpy.max(md.mesh.x),numpy.logical_not(md.mesh.vertexonbed)))[0]
+ 
+ #	md.diagnostic.vertex_pairing=numpy.vstack((numpy.hstack((posx.reshape(-1,1)+1,posx2.reshape(-1,1)+1)),numpy.hstack((posy.reshape(-1,1)+1,posy2.reshape(-1,1)+1))))
+ 
+Index: ../trunk-jpl/test/NightlyRun/test1108.py
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/test1108.py	(revision 14211)
++++ ../trunk-jpl/test/NightlyRun/test1108.py	(revision 14212)
+@@ -7,6 +7,7 @@
+ from EnumDefinitions import *
+ from solve import *
+ from MatlabFuncs import *
++from PythonFuncs import *
+ 
+ """
+ This test is a test from the ISMP-HOM Intercomparison project.
+@@ -32,7 +33,7 @@
+ 	md.diagnostic.spcvy=float('NaN')*numpy.ones((md.mesh.numberofvertices,1))
+ 	md.diagnostic.spcvz=float('NaN')*numpy.ones((md.mesh.numberofvertices,1))
+ 	
+-	pos=numpy.nonzero(numpy.logical_and(md.mesh.vertexonbed,numpy.logical_and(numpy.logical_or(md.mesh.x==0.,md.mesh.x==numpy.max(md.mesh.x)),numpy.logical_or(md.mesh.y==0.,md.mesh.y==numpy.max(md.mesh.y)))))
++	pos=numpy.nonzero(logical_and_n(md.mesh.vertexonbed,numpy.logical_or(md.mesh.x==0.,md.mesh.x==numpy.max(md.mesh.x)),numpy.logical_or(md.mesh.y==0.,md.mesh.y==numpy.max(md.mesh.y))))
+ 	md.diagnostic.spcvx[pos]=0.
+ 	md.diagnostic.spcvy[pos]=0.
+ 	md.diagnostic.spcvz[pos]=0.
+@@ -41,8 +42,8 @@
+ 	posx=numpy.nonzero(md.mesh.x==0.)[0]
+ 	posx2=numpy.nonzero(md.mesh.x==numpy.max(md.mesh.x))[0]
+ 
+-	posy=numpy.nonzero(numpy.logical_and(numpy.logical_and(md.mesh.y==0.,md.mesh.x!=0.),md.mesh.x!=numpy.max(md.mesh.x)))[0]    #Don't take the same nodes two times
+-	posy2=numpy.nonzero(numpy.logical_and(numpy.logical_and(md.mesh.y==numpy.max(md.mesh.y),md.mesh.x!=0.),md.mesh.x!=numpy.max(md.mesh.x)))[0]
++	posy=numpy.nonzero(logical_and_n(md.mesh.y==0.,md.mesh.x!=0.,md.mesh.x!=numpy.max(md.mesh.x)))[0]    #Don't take the same nodes two times
++	posy2=numpy.nonzero(logical_and_n(md.mesh.y==numpy.max(md.mesh.y),md.mesh.x!=0.,md.mesh.x!=numpy.max(md.mesh.x)))[0]
+ 
+ 	md.diagnostic.vertex_pairing=numpy.vstack((numpy.hstack((posx.reshape(-1,1)+1,posx2.reshape(-1,1)+1)),numpy.hstack((posy.reshape(-1,1)+1,posy2.reshape(-1,1)+1))))
+ 
+@@ -57,7 +58,7 @@
+ 	md.diagnostic.spcvx=float('NaN')*numpy.ones((md.mesh.numberofvertices,1))
+ 	md.diagnostic.spcvy=float('NaN')*numpy.ones((md.mesh.numberofvertices,1))
+ 	md.diagnostic.spcvz=float('NaN')*numpy.ones((md.mesh.numberofvertices,1))
+-	pos=numpy.nonzero(numpy.logical_or(numpy.logical_or(md.mesh.y==0.,md.mesh.x==0.),numpy.logical_or(md.mesh.x==numpy.max(md.mesh.x),md.mesh.y==numpy.max(md.mesh.y))))    #Don't take the same nodes two times
++	pos=numpy.nonzero(logical_or_n(md.mesh.y==0.,md.mesh.x==0.,md.mesh.x==numpy.max(md.mesh.x),md.mesh.y==numpy.max(md.mesh.y)))    #Don't take the same nodes two times
+ 	md.diagnostic.spcvx[pos]=md.results.DiagnosticSolution.Vx[pos]
+ 	md.diagnostic.spcvy[pos]=md.results.DiagnosticSolution.Vy[pos]
+ 	md=setflowequation(md,'stokes','all')
+Index: ../trunk-jpl/test/NightlyRun/test1103.py
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/test1103.py	(revision 14211)
++++ ../trunk-jpl/test/NightlyRun/test1103.py	(revision 14212)
+@@ -8,6 +8,7 @@
+ from EnumDefinitions import *
+ from solve import *
+ from MatlabFuncs import *
++from PythonFuncs import *
+ 
+ """
+ This test is a test from the ISMP-HOM Intercomparison project.
+@@ -44,8 +45,8 @@
+ 	posx=numpy.nonzero(md.mesh.x==0.)[0]
+ 	posx2=numpy.nonzero(md.mesh.x==numpy.max(md.mesh.x))[0]
+ 
+-	posy=numpy.nonzero(numpy.logical_and(numpy.logical_and(md.mesh.y==0.,md.mesh.x!=0.),md.mesh.x!=numpy.max(md.mesh.x)))[0]    #Don't take the same nodes two times
+-	posy2=numpy.nonzero(numpy.logical_and(numpy.logical_and(md.mesh.y==numpy.max(md.mesh.y),md.mesh.x!=0.),md.mesh.x!=numpy.max(md.mesh.x)))[0]
++	posy=numpy.nonzero(logical_and_n(md.mesh.y==0.,md.mesh.x!=0.,md.mesh.x!=numpy.max(md.mesh.x)))[0]    #Don't take the same nodes two times
++	posy2=numpy.nonzero(logical_and_n(md.mesh.y==numpy.max(md.mesh.y),md.mesh.x!=0.,md.mesh.x!=numpy.max(md.mesh.x)))[0]
+ 
+ 	md.diagnostic.vertex_pairing=numpy.vstack((numpy.hstack((posx.reshape(-1,1)+1,posx2.reshape(-1,1)+1)),numpy.hstack((posy.reshape(-1,1)+1,posy2.reshape(-1,1)+1))))
+ 
+Index: ../trunk-jpl/test/NightlyRun/test1104.py
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/test1104.py	(revision 14211)
++++ ../trunk-jpl/test/NightlyRun/test1104.py	(revision 14212)
+@@ -7,6 +7,7 @@
+ from EnumDefinitions import *
+ from solve import *
+ from MatlabFuncs import *
++from PythonFuncs import *
+ 
+ """
+ This test is a test from the ISMP-HOM Intercomparison project.
+@@ -39,8 +40,8 @@
+ 	posx=numpy.nonzero(md.mesh.x==0.)[0]
+ 	posx2=numpy.nonzero(md.mesh.x==numpy.max(md.mesh.x))[0]
+ 
+-	posy=numpy.nonzero(numpy.logical_and(numpy.logical_and(md.mesh.y==0.,md.mesh.x!=0.),md.mesh.x!=numpy.max(md.mesh.x)))[0]    #Don't take the same nodes two times
+-	posy2=numpy.nonzero(numpy.logical_and(numpy.logical_and(md.mesh.y==numpy.max(md.mesh.y),md.mesh.x!=0.),md.mesh.x!=numpy.max(md.mesh.x)))[0]
++	posy=numpy.nonzero(logical_and_n(md.mesh.y==0.,md.mesh.x!=0.,md.mesh.x!=numpy.max(md.mesh.x)))[0]    #Don't take the same nodes two times
++	posy2=numpy.nonzero(logical_and_n(md.mesh.y==numpy.max(md.mesh.y),md.mesh.x!=0.,md.mesh.x!=numpy.max(md.mesh.x)))[0]
+ 
+ 	md.diagnostic.vertex_pairing=numpy.vstack((numpy.hstack((posx.reshape(-1,1)+1,posx2.reshape(-1,1)+1)),numpy.hstack((posy.reshape(-1,1)+1,posy2.reshape(-1,1)+1))))
+ 
+@@ -48,7 +49,7 @@
+ 	md.diagnostic.abstol=float('NaN')
+ 	md.cluster=generic('name',oshostname(),'np',8)
+ 	md=solve(md,DiagnosticSolutionEnum())
+-	pos=numpy.nonzero(numpy.logical_or(numpy.logical_or(md.mesh.x==0.,md.mesh.y==0.),numpy.logical_or(md.mesh.x==numpy.max(md.mesh.x),md.mesh.y==numpy.max(md.mesh.y))))
++	pos=numpy.nonzero(logical_or_n(md.mesh.x==0.,md.mesh.y==0.,md.mesh.x==numpy.max(md.mesh.x),md.mesh.y==numpy.max(md.mesh.y)))
+ 	md.diagnostic.spcvx[pos]=md.results.DiagnosticSolution.Vx[pos]
+ 	md.diagnostic.spcvy[pos]=md.results.DiagnosticSolution.Vy[pos]
+ 	md.diagnostic.vertex_pairing=numpy.empty((0,2),int)
+Index: ../trunk-jpl/test/NightlyRun/test1105.py
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/test1105.py	(revision 14211)
++++ ../trunk-jpl/test/NightlyRun/test1105.py	(revision 14212)
+@@ -8,6 +8,7 @@
+ from EnumDefinitions import *
+ from solve import *
+ from MatlabFuncs import *
++from PythonFuncs import *
+ 
+ """
+ This test is a test from the ISMP-HOM Intercomparison project.
+@@ -37,16 +38,16 @@
+ 	md.diagnostic.spcvy=float('NaN')*numpy.ones((md.mesh.numberofvertices,1))
+ 	md.diagnostic.spcvz=float('NaN')*numpy.ones((md.mesh.numberofvertices,1))
+ 
+-	posx=numpy.nonzero(numpy.logical_and(numpy.logical_and(md.mesh.x==0.,md.mesh.y!=0.),md.mesh.y!=L))[0]
+-	posx2=numpy.nonzero(numpy.logical_and(numpy.logical_and(md.mesh.x==L,md.mesh.y!=0.),md.mesh.y!=L))[0]
++	posx=numpy.nonzero(logical_and_n(md.mesh.x==0.,md.mesh.y!=0.,md.mesh.y!=L))[0]
++	posx2=numpy.nonzero(logical_and_n(md.mesh.x==L,md.mesh.y!=0.,md.mesh.y!=L))[0]
+ 
+-	posy=numpy.nonzero(numpy.logical_and(numpy.logical_and(md.mesh.y==0.,md.mesh.x!=0.),md.mesh.x!=L))[0]    #Don't take the same nodes two times
+-	posy2=numpy.nonzero(numpy.logical_and(numpy.logical_and(md.mesh.y==L,md.mesh.x!=0.),md.mesh.x!=L))[0]
++	posy=numpy.nonzero(logical_and_n(md.mesh.y==0.,md.mesh.x!=0.,md.mesh.x!=L))[0]    #Don't take the same nodes two times
++	posy2=numpy.nonzero(logical_and_n(md.mesh.y==L,md.mesh.x!=0.,md.mesh.x!=L))[0]
+ 
+ 	md.diagnostic.vertex_pairing=numpy.vstack((numpy.hstack((posx.reshape(-1,1)+1,posx2.reshape(-1,1)+1)),numpy.hstack((posy.reshape(-1,1)+1,posy2.reshape(-1,1)+1))))
+ 
+ 	#Add spc on the corners
+-	pos=numpy.nonzero(numpy.logical_and(numpy.logical_and(numpy.logical_or(md.mesh.x==0.,md.mesh.x==L),numpy.logical_or(md.mesh.y==0.,md.mesh.y==L)),md.mesh.vertexonbed))
++	pos=numpy.nonzero(logical_and_n(numpy.logical_or(md.mesh.x==0.,md.mesh.x==L),numpy.logical_or(md.mesh.y==0.,md.mesh.y==L),md.mesh.vertexonbed))
+ 	md.diagnostic.spcvx[pos]=0.
+ 	md.diagnostic.spcvy[pos]=0.
+ 	if   (L==5000.):
+Index: ../trunk-jpl/test/NightlyRun/test1106.py
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/test1106.py	(revision 14211)
++++ ../trunk-jpl/test/NightlyRun/test1106.py	(revision 14212)
+@@ -7,6 +7,7 @@
+ from EnumDefinitions import *
+ from solve import *
+ from MatlabFuncs import *
++from PythonFuncs import *
+ 
+ """
+ This test is a test from the ISMP-HOM Intercomparison project.
+@@ -24,7 +25,7 @@
+ 	md.extrude(10,1.)
+ 
+ 	#Add spc on the borders
+-	pos=numpy.nonzero(numpy.logical_or(numpy.logical_or(md.mesh.x==0.,md.mesh.x==numpy.max(md.mesh.x)),numpy.logical_or(md.mesh.y==0.,md.mesh.y==numpy.max(md.mesh.y))))
++	pos=numpy.nonzero(logical_or_n(md.mesh.x==0.,md.mesh.x==numpy.max(md.mesh.x),md.mesh.y==0.,md.mesh.y==numpy.max(md.mesh.y)))
+ 	md.diagnostic.spcvx[pos]=0.
+ 	md.diagnostic.spcvy[pos]=0.
+ 	if   (L==5000.):
+Index: ../trunk-jpl/test/NightlyRun/test1101.py
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/test1101.py	(revision 14211)
++++ ../trunk-jpl/test/NightlyRun/test1101.py	(revision 14212)
+@@ -8,6 +8,7 @@
+ from EnumDefinitions import *
+ from solve import *
+ from MatlabFuncs import *
++from PythonFuncs import *
+ 
+ """
+ This test is a test from the ISMP-HOM Intercomparison project.
+@@ -45,8 +46,8 @@
+ 	posx=numpy.nonzero(md.mesh.x==0.)[0]
+ 	posx2=numpy.nonzero(md.mesh.x==numpy.max(md.mesh.x))[0]
+ 
+-	posy=numpy.nonzero(numpy.logical_and(numpy.logical_and(md.mesh.y==0.,md.mesh.x!=0.),md.mesh.x!=numpy.max(md.mesh.x)))[0]    #Don't take the same nodes two times
+-	posy2=numpy.nonzero(numpy.logical_and(numpy.logical_and(md.mesh.y==numpy.max(md.mesh.y),md.mesh.x!=0.),md.mesh.x!=numpy.max(md.mesh.x)))[0]
++	posy=numpy.nonzero(logical_and_n(md.mesh.y==0.,md.mesh.x!=0.,md.mesh.x!=numpy.max(md.mesh.x)))[0]    #Don't take the same nodes two times
++	posy2=numpy.nonzero(logical_and_n(md.mesh.y==numpy.max(md.mesh.y),md.mesh.x!=0.,md.mesh.x!=numpy.max(md.mesh.x)))[0]
+ 
+ 	md.diagnostic.vertex_pairing=numpy.vstack((numpy.hstack((posx.reshape(-1,1)+1,posx2.reshape(-1,1)+1)),numpy.hstack((posy.reshape(-1,1)+1,posy2.reshape(-1,1)+1))))
+ 
Index: /issm/oecreview/Archive/14064-14311/ISSM-14212-14213.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14212-14213.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14212-14213.diff	(revision 14312)
@@ -0,0 +1,251 @@
+Index: ../trunk-jpl/scripts/DownloadExternalPackage.py
+===================================================================
+--- ../trunk-jpl/scripts/DownloadExternalPackage.py	(revision 14212)
++++ ../trunk-jpl/scripts/DownloadExternalPackage.py	(revision 14213)
+@@ -5,14 +5,14 @@
+ # and specified local file.
+ #
+ 
++# imports {{{
+ import os,sys,re
+ import urllib
+ from HTMLParser import HTMLParser
+ from urllib import FancyURLopener
++# }}}
++class MyHTMLParser(HTMLParser): #{{{
+ 
+-# Start class myHTMLParser
+-class MyHTMLParser(HTMLParser):
+-
+     def __init__(self, pattern):
+         HTMLParser.__init__(self)
+         self.matcher = re.compile(pattern) 
+@@ -22,114 +22,118 @@
+         for i in attrs:
+             if "href" == i[0] and str(self.matcher.match(i[1])) != "None":
+                 self.targets.append(i[1])
+-# End class myHTMLParser
++#}}}
++def main(argv=None): # {{{
++    # Separates the URL into a directory and the file or pattern based on the
++    # last appearance of '/'.
++	if len(sys.argv) > 1:
++	    pivot = sys.argv[1].rfind("/")
++	    url = (sys.argv[1])[:pivot]
++	    pivot += 1
++	    find = (sys.argv[1])[pivot:]
++	else:
++	    print "******************************************************************************************************************************"
++	    print "* Invalid input!                                                                                                             *"
++	    print "*                                                                                                                            *"
++	    print "* Try: 'DownloadExternalPackage.py url [localFile]'                                                                          *"
++	    print "*                                                                                                                            *"
++	    print "* Where 'URL' is the URL with an explicit package name or the URL followed by the truncated package name. And 'localFile' is *"
++	    print "* the file name (including extension) that you would like to save as.                                                        *"
++	    print "*                                                                                                                            *"
++	    print "* Examples:                                                                                                                  *" 
++	    print "*                                                                                                                            *"
++	    print "* DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-2.3.2-p3.tar.gz' 'petsc-2.3.2-p3.tar.gz' *"
++	    print "*                                                                                                                            *"
++	    print "*     This is the old style and the safest way to download a package.                                                        *"
++	    print "*                                                                                                                            *"
++	    print "* DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/libtool' 'libtool.tar.gz'                      *"
++	    print "*                                                                                                                            *"
++	    print "*     This is the new style. For packages like 'Libtool', which we never expect to be using multiple versions, this will     *"
++	    print "*     download the most recent version and save it as the generic 'libtool.tar.gz'.                                          *"
++	    print "*                                                                                                                            *"
++	    print "* DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/gsl-1.' 'gsl-1.15.tar.gz'                      *"
++	    print "*                                                                                                                            *"
++	    print "*     This is the new style. This is a demonstration of how this script can be used to disambiguate a package name if there  *"
++	    print "*     are more than once package matching 'gsl-'.                                                                            *"
++	    print "*                                                                                                                            *"
++	    print "* DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/libtool'                                       *"
++	    print "*                                                                                                                            *"
++	    print "*     This is the new style. This will download a package with 'libtool' as a prefix and save it as its canonical name.      *"
++	    print "*                                                                                                                            *"
++	    print "*                                                                                                                            *"
++	    print "******************************************************************************************************************************"
++	
++	if len(sys.argv) > 2:
++	    localFile=sys.argv[2]
++	    print "Downloaded file will be saved as: " + localFile
++	else:
++	    localFile = None
++	    print "Downloaded file will saved with the same file name."
++	
++	
++    print "Looking for: " + find
++	
++	# As an extra precaution, if no extension is given for a particular package
++	# such as '.../libtool', then ensure that files found are of appropriate
++	# file extensions. 
++	#
++	# WARNING: The external packages directory includes executable binaries with
++	# '.exe' extensions. As such, '.exe' is an acceptable suffix, but this is 
++	# inherently dangerous since this script can be used to download from any
++	# valid website. Furthermore, if an individual attempts a "man-in-the-middle"  
++	# attack, then the user would be capable of downloading executables from 
++	# an untrusted source.
++	pattern = find + "[\w.-]*(\.tar\.gz|tar\.gz2|tgz|zip|exe)?"
++	parser = MyHTMLParser(pattern)
++	
++	# Creates a 'FancyURL' which allows the script to fail gracefully by catching
++	# HTTP error codes 30X and several 40X(where 'X' is a natural number).
++	urlObject = FancyURLopener()
++	obj = urlObject.open(url)
++	parser.feed(obj.read())
++	
++	# If a file pattern was used to describe the file that should be downloaded,
++	# then there is the potential for multiple file matches. Currently, the script
++	# will detect this ambiguity and print out all the matches, while informing 
++	# the user that he must refine his search.
++	#
++	# TODO: Prompt the user to select from a list his/her preferred target.
++	if len(parser.targets) > 1:
++	    print "Could not resolve your download due to the number of hits."
++	    print "Refine your search."
++	    for i in parser.targets:
++	        print i
++	
++	elif len(parser.targets) == 1:
++	    print "Found: " + parser.targets[0]
++	    url += "/" + parser.targets[0]
++	
++	    if localFile is None:
++	        if os.path.exists(parser.targets[0]): 
++	            print "File " + parser.targets[0] + " already exists and will not be downloaded..."
++	        else:
++	            urllib.urlretrieve(url, parser.targets[0])
++	            print "File saved as: " + parser.targets[0]
++	    else:
++	        if os.path.exists(localFile): 
++	            print "File "+ localFile +" already exists and will not be downloaded..."
++	        else:
++	            if parser.targets[0] == localFile:
++	                print "File found and destination match."
++	            elif parser.matcher.match(localFile) != "None":
++	                print "File found matches destination pattern."
++	            else:
++	                print "WARNING: the file found \'" + parser.targets[0] + "\' does not match \'" + localFile + "\'"
++	                print "Ensure the downloaded version is suitable."
++	
++	            urllib.urlretrieve(url, localFile)
++	            print "File saved as: " + localFile
++	
++	else:
++	    print "No matches found!"
++	
++	obj.close()
++# End 'main' function. }}}
+ 
+-# Separates the URL into a directory and the file or pattern based on the
+-# last appearance of '/'.
+-if len(sys.argv) > 1:
+-    pivot = sys.argv[1].rfind("/")
+-    url = (sys.argv[1])[:pivot]
+-    pivot += 1
+-    find = (sys.argv[1])[pivot:]
+-else:
+-    print "******************************************************************************************************************************"
+-    print "* Invalid input!                                                                                                             *"
+-    print "*                                                                                                                            *"
+-    print "* Try: 'DownloadExternalPackage.py url [localFile]'                                                                          *"
+-    print "*                                                                                                                            *"
+-    print "* Where 'URL' is the URL with an explicit package name or the URL followed by the truncated package name. And 'localFile' is *"
+-    print "* the file name (including extension) that you would like to save as.                                                        *"
+-    print "*                                                                                                                            *"
+-    print "* Examples:                                                                                                                  *" 
+-    print "*                                                                                                                            *"
+-    print "* DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-2.3.2-p3.tar.gz' 'petsc-2.3.2-p3.tar.gz' *"
+-    print "*                                                                                                                            *"
+-    print "*     This is the old style and the safest way to download a package.                                                        *"
+-    print "*                                                                                                                            *"
+-    print "* DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/libtool' 'libtool.tar.gz'                      *"
+-    print "*                                                                                                                            *"
+-    print "*     This is the new style. For packages like 'Libtool', which we never expect to be using multiple versions, this will     *"
+-    print "*     download the most recent version and save it as the generic 'libtool.tar.gz'.                                          *"
+-    print "*                                                                                                                            *"
+-    print "* DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/gsl-1.' 'gsl-1.15.tar.gz'                      *"
+-    print "*                                                                                                                            *"
+-    print "*     This is the new style. This is a demonstration of how this script can be used to disambiguate a package name if there  *"
+-    print "*     are more than once package matching 'gsl-'.                                                                            *"
+-    print "*                                                                                                                            *"
+-    print "* DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/libtool'                                       *"
+-    print "*                                                                                                                            *"
+-    print "*     This is the new style. This will download a package with 'libtool' as a prefix and save it as its canonical name.      *"
+-    print "*                                                                                                                            *"
+-    print "*                                                                                                                            *"
+-    print "******************************************************************************************************************************"
+-
+-if len(sys.argv) > 2:
+-    localFile=sys.argv[2]
+-    print "Downloaded file will saved as: " + localFile
+-else:
+-    localFile = None
+-    print "Downloaded file will saved with the same file name."
+-
+-
+-print "Looking for " + find
+-
+-# As an extra precaution, if no extension is given for a particular package
+-# such as '.../libtool', then ensure that files found are of appropriate
+-# file extensions. 
+-#
+-# WARNING: The external packages directory includes executable binaries with
+-# '.exe' extensions. As such, '.exe' is an acceptable suffix, but this is 
+-# inherently dangerous since this script can be used to download from any
+-# valid website. Furthermore, if an individual attempts a "man-in-the-middle"  
+-# attack, then the user would be capable of downloading executables from 
+-# an untrusted source.
+-pattern = find + "[\w.-]*(\.tar\.gz|tar\.gz2|tgz|zip|exe)?"
+-parser = MyHTMLParser(pattern)
+-
+-# Creates a 'FancyURL' which allows the script to fail gracefully by catching
+-# HTTP error codes 30X and several 40X(where 'X' is a natural number).
+-urlObject = FancyURLopener()
+-obj = urlObject.open(url)
+-parser.feed(obj.read())
+-
+-# If a file pattern was used to describe the file that should be downloaded,
+-# then there is the potential for multiple file matches. Currently, the script
+-# will detect this ambiguity and print out all the matches, while informing 
+-# the user that he must refine his search.
+-#
+-# TODO: Prompt the user to select from a list his/her preferred target.
+-if len(parser.targets) > 1:
+-    print "Could not resolve your download due to the number of hits."
+-    print "Refine your search."
+-    for i in parser.targets:
+-        print i
+-
+-elif len(parser.targets) == 1:
+-    print "Found: " + parser.targets[0]
+-    url += "/" + parser.targets[0]
+-
+-    if localFile is None:
+-        if os.path.exists(parser.targets[0]): 
+-            print "File " + parser.targets[0] + " already exists and will not be downloaded..."
+-        else:
+-            urllib.urlretrieve(url, parser.targets[0])
+-            print "File saved as: " + parser.targets[0]
+-    else:
+-        if os.path.exists(localFile): 
+-            print "File "+ localFile +" already exists and will not be downloaded..."
+-        else:
+-            if parser.targets[0] == localFile:
+-                print "File found and destination match."
+-            elif parser.matcher.match(localFile) != "None":
+-                print "File found matches destination pattern."
+-            else:
+-                print "WARNING: the file found \'" + parser.targets[0] + "\' does not match \'" + localFile + "\'"
+-                print "Ensure the downloaded version is suitable."
+-
+-            urllib.urlretrieve(url, localFile)
+-            print "File saved as: " + localFile
+-
+-else:
+-    print "No matches found!"
+-
+-obj.close()
++if __name__ == "__main__":
++    main()
Index: /issm/oecreview/Archive/14064-14311/ISSM-14213-14214.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14213-14214.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14213-14214.diff	(revision 14312)
@@ -0,0 +1,13 @@
+Index: ../trunk-jpl/scripts/DownloadExternalPackage.py
+===================================================================
+--- ../trunk-jpl/scripts/DownloadExternalPackage.py	(revision 14213)
++++ ../trunk-jpl/scripts/DownloadExternalPackage.py	(revision 14214)
+@@ -71,7 +71,7 @@
+ 	    print "Downloaded file will saved with the same file name."
+ 	
+ 	
+-    print "Looking for: " + find
++	print "Looking for: " + find
+ 	
+ 	# As an extra precaution, if no extension is given for a particular package
+ 	# such as '.../libtool', then ensure that files found are of appropriate
Index: /issm/oecreview/Archive/14064-14311/ISSM-14214-14215.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14214-14215.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14214-14215.diff	(revision 14312)
@@ -0,0 +1,32 @@
+Index: ../trunk-jpl/src/m/classes/settings.py
+===================================================================
+--- ../trunk-jpl/src/m/classes/settings.py	(revision 14214)
++++ ../trunk-jpl/src/m/classes/settings.py	(revision 14215)
+@@ -76,6 +76,9 @@
+ 		WriteData(fid,'object',self,'fieldname','lowmem','format','Boolean')
+ 		WriteData(fid,'object',self,'fieldname','results_as_patches','format','Boolean')
+ 		WriteData(fid,'object',self,'fieldname','output_frequency','format','Integer')
+-		WriteData(fid,'object',self,'fieldname','waitonlock','format','Boolean')
++		if self.waitonlock>0:
++			WriteData(fid,'enum',SettingsWaitonlockEnum(),'data',True,'format','Boolean');
++		else:
++			WriteData(fid,'enum',SettingsWaitonlockEnum(),'data',False,'format','Boolean');
+ 	# }}}
+ 
+Index: ../trunk-jpl/src/m/classes/settings.m
+===================================================================
+--- ../trunk-jpl/src/m/classes/settings.m	(revision 14214)
++++ ../trunk-jpl/src/m/classes/settings.m	(revision 14215)
+@@ -64,7 +64,11 @@
+ 			WriteData(fid,'object',obj,'fieldname','lowmem','format','Boolean');
+ 			WriteData(fid,'object',obj,'fieldname','results_as_patches','format','Boolean');
+ 			WriteData(fid,'object',obj,'fieldname','output_frequency','format','Integer');
+-			WriteData(fid,'object',obj,'fieldname','waitonlock','format','Boolean');
++			if obj.waitonlock>0,
++				WriteData(fid,'enum',SettingsWaitonlockEnum(),'data',true,'format','Boolean');
++			else
++				WriteData(fid,'enum',SettingsWaitonlockEnum(),'data',false,'format','Boolean');
++			end
+ 		end % }}}
+ 	end
+ end
Index: /issm/oecreview/Archive/14064-14311/ISSM-14215-14216.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14215-14216.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14215-14216.diff	(revision 14312)
@@ -0,0 +1,19 @@
+Index: ../trunk-jpl/m4/issm_options.m4
+===================================================================
+--- ../trunk-jpl/m4/issm_options.m4	(revision 14215)
++++ ../trunk-jpl/m4/issm_options.m4	(revision 14216)
+@@ -162,14 +162,6 @@
+ 		HAVE_TRIANGLE=no
+ 	fi
+ 	AC_MSG_RESULT($HAVE_TRIANGLE)
+-
+-	AC_MSG_CHECKING(for triangle and parallel status)
+-	if test $HAVE_TRIANGLE = no; then
+-		if test "$SERIAL_VALUE" = "yes" ; then
+-			AC_MSG_ERROR([--with-triangle-dir  missing. Triangle is needed to run ISSM serially!])
+-		fi
+-	fi
+-	AC_MSG_RESULT(ok)
+ 	dnl }}}
+ 	dnl dakota{{{
+ 	AC_ARG_WITH([dakota-dir],
Index: /issm/oecreview/Archive/14064-14311/ISSM-14216-14217.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14216-14217.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14216-14217.diff	(revision 14312)
@@ -0,0 +1,43 @@
+Index: ../trunk-jpl/src/wrappers/MeshProfileIntersection/MeshProfileIntersection.cpp
+===================================================================
+--- ../trunk-jpl/src/wrappers/MeshProfileIntersection/MeshProfileIntersection.cpp	(revision 14216)
++++ ../trunk-jpl/src/wrappers/MeshProfileIntersection/MeshProfileIntersection.cpp	(revision 14217)
+@@ -44,14 +44,14 @@
+ 	int     dummy;
+ 	
+ 	//contours
+-	DataSet *domain = NULL;
+-	Contour<double>** contours=NULL;
+-	int       numcontours;
+-	Contour<double>*  contouri=NULL;
++	DataSet          *domain      = NULL;
++	Contour<double> **contours=NULL;
++	int               numcontours;
++	Contour<double>  *contouri=NULL;
+ 
+ 	/* output: */
+-	double* segments=NULL;
+-	int     numsegs;
++	int* segments=NULL;
++	int  numsegs;
+ 
+ 	/*Boot module: */
+ 	MODULEBOOT();
+@@ -81,17 +81,6 @@
+ 	for(i=0;i<numcontours;i++)
+ 		*(contours+i)=(Contour<double>*)domain->GetObjectByOffset(i);
+ 
+-	/* Debugging of contours :{{{1*/
+-	/*for(i=0;i<numcontours;i++){
+-		_printLine_("\nContour echo: contour number  " << i+1 << " / " << numcontours);
+-		contouri=*(contours+i);
+-		_printLine_("   Number of vertices " << contouri->nods);
+-		for (j=0;j<contouri->nods;j++){
+-			_printLine_("   " << *(contouri->x+j) << "f " << *(contouri->y+j) << "f");
+-		}
+-	}*/
+-	/*}}}*/
+-
+ 	/*Run interpolation routine: */
+ 	MeshProfileIntersectionx(&segments,&numsegs,index,x,y,nel,nods,contours,numcontours);
+ 
Index: /issm/oecreview/Archive/14064-14311/ISSM-14217-14218.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14217-14218.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14217-14218.diff	(revision 14312)
@@ -0,0 +1,705 @@
+Index: ../trunk-jpl/src/c/modules/MeshProfileIntersectionx/SegmentIntersect.cpp
+===================================================================
+--- ../trunk-jpl/src/c/modules/MeshProfileIntersectionx/SegmentIntersect.cpp	(revision 14217)
++++ ../trunk-jpl/src/c/modules/MeshProfileIntersectionx/SegmentIntersect.cpp	(revision 14218)
+@@ -1,105 +0,0 @@
+-/*! \file  SegmentIntersect.cpp
+-*/
+-
+-#include "./MeshProfileIntersectionx.h"
+-
+-int SegmentIntersect(double* palpha, double* pbeta, double* x1, double* y1, double* x2, double* y2){
+-
+-	/*See ISSM_DIR/src/m/utils/Geometry/SegIntersect.m for matlab routine from which we take this routine: */
+-
+-	/*output: */
+-	double alpha=-1;
+-	double beta=-1;
+-
+-	double xA,xB,xC,xD,yA,yB,yC,yD;
+-	double O2A[2],O2B[2],O1C[2],O1D[2];
+-	double n1[2],n2[2];
+-	double test1, test2, test3, test4;
+-	double det;
+-	double O2O1[2];
+-	double pO1A,pO1B,pO1C,pO1D;
+-
+-	xA=x1[0]; yA=y1[0];
+-	xB=x1[1]; yB=y1[1];
+-	xC=x2[0]; yC=y2[0];
+-	xD=x2[1]; yD=y2[1];
+-
+-	O2A[0]=xA -(xD/2+xC/2); O2A[1]=yA -(yD/2+yC/2);
+-	O2B[0]=xB -(xD/2+xC/2); O2B[1]=yB -(yD/2+yC/2);
+-	O1C[0]=xC -(xA/2+xB/2); O1C[1]=yC -(yA/2+yB/2);
+-	O1D[0]=xD -(xA/2+xB/2); O1D[1]=yD -(yA/2+yB/2);
+-
+-	n1[0]=yA-yB; n1[1]=xB-xA;  //normal vector to segA
+-	n2[0]=yC-yD; n2[1]=xD-xC;  //normal vector to segB
+-
+-	test1=n2[0]*O2A[0]+n2[1]*O2A[1];
+-	test2=n2[0]*O2B[0]+n2[1]*O2B[1];
+-
+-	if (test1*test2>0){
+-		return SeparateEnum;
+-	}
+-
+-	test3=n1[0]*O1C[0]+n1[1]*O1C[1];
+-	test4=n1[0]*O1D[0]+n1[1]*O1D[1];
+-
+-	if (test3*test4>0){
+-		return SeparateEnum;
+-	}
+-
+-	/*If colinear: */
+-	det=n1[0]*n2[1]-n2[0]*n1[1];
+-
+-	if(test1*test2==0 && test3*test4==0 && det==0){
+-
+-		//projection on the axis O1O2
+-		O2O1[0]=(xA/2+xB/2)-(xD/2+xC/2);
+-		O2O1[1]=(yA/2+yB/2)-(yD/2+yC/2);
+-
+-		pO1A=O2O1[0]*(O2A[0]-O2O1[0])+O2O1[1]*(O2A[1]-O2O1[1]);
+-		pO1B=O2O1[0]*(O2B[0]-O2O1[0])+O2O1[1]*(O2B[1]-O2O1[1]);
+-		pO1C=O2O1[0]*O1C[0]+O2O1[1]*O1C[1];
+-		pO1D=O2O1[0]*O1D[0]+O2O1[1]*O1D[1];
+-
+-		//test if one point is included in the other segment (->intersects=true)
+-		if ((pO1C-pO1A)*(pO1D-pO1A)<0){
+-			alpha=0; beta=0;
+-			*palpha=alpha;*pbeta=beta;
+-			return ColinearEnum;
+-		}
+-		if ((pO1C-pO1B)*(pO1D-pO1B)<0){
+-			alpha=0; beta=0;
+-			*palpha=alpha;*pbeta=beta;
+-			return ColinearEnum;
+-		}
+-		if ((pO1A-pO1C)*(pO1B-pO1C)<0){
+-			alpha=0; beta=0;
+-			*palpha=alpha;*pbeta=beta;
+-			return ColinearEnum;
+-		}
+-		if ((pO1A-pO1D)*(pO1B-pO1D)<0){
+-			alpha=0; beta=0;
+-			*palpha=alpha;*pbeta=beta;
+-			return ColinearEnum;
+-		}
+-
+-		//test if the 2 segments have the same middle (->intersects=true)
+-		if (O2O1==0){
+-			alpha=0; beta=0;
+-			*palpha=alpha;*pbeta=beta;
+-			return ColinearEnum;
+-		}
+-
+-		//if we are here, both segments are colinear, but do not interset:
+-		alpha=-1; beta=-1;
+-		*palpha=alpha;*pbeta=beta;
+-		return SeparateEnum;
+-	}
+-
+-	/*if we are here, both segments intersect. Determine where in the segment coordinate 
+-	 * system: */
+-	beta=-1;
+-	alpha=-(xA*yB-xC*yB+yC*xB-yC*xA+xC*yA-yA*xB)/(-xD*yB+xD*yA+xC*yB-xC*yA-yD*xA+yD*xB+yC*xA-yC*xB); //from intersect.m in formal calculus
+-
+-	*palpha=alpha;*pbeta=beta;
+-	return IntersectEnum;
+-}
+Index: ../trunk-jpl/src/c/modules/MeshProfileIntersectionx/ElementSegmentsIntersection.cpp
+===================================================================
+--- ../trunk-jpl/src/c/modules/MeshProfileIntersectionx/ElementSegmentsIntersection.cpp	(revision 14217)
++++ ../trunk-jpl/src/c/modules/MeshProfileIntersectionx/ElementSegmentsIntersection.cpp	(revision 14218)
+@@ -1,23 +0,0 @@
+-/*! \file  ElementSegmentsIntersection.cpp
+- */
+-
+-#include "./MeshProfileIntersectionx.h"
+-
+-void ElementSegmentsIntersection(DataSet* segments_dataset,int el, double* xnodes,double* ynodes,double* xc,double* yc,int numnodes){
+-
+-	int i;
+-	double xsegment[2];
+-	double ysegment[2];
+-
+-	/*Loop through contour: */
+-	for(i=0;i<numnodes-1;i++){
+-
+-		xsegment[0]=xc[i];
+-		xsegment[1]=xc[i+1];
+-		ysegment[0]=yc[i];
+-		ysegment[1]=yc[i+1];
+-
+-		ElementSegment(segments_dataset,el, xnodes,ynodes,xsegment,ysegment);
+-
+-	}
+-}
+Index: ../trunk-jpl/src/c/modules/MeshProfileIntersectionx/NodeInElement.cpp
+===================================================================
+--- ../trunk-jpl/src/c/modules/MeshProfileIntersectionx/NodeInElement.cpp	(revision 14217)
++++ ../trunk-jpl/src/c/modules/MeshProfileIntersectionx/NodeInElement.cpp	(revision 14218)
+@@ -1,32 +0,0 @@
+-/*! \file  NodeInElement.cpp
+-*/
+-
+-#include "./MeshProfileIntersectionx.h"
+-
+-bool NodeInElement(double* xnodes, double* ynodes, double x, double y){
+-
+-	double x1,y1;
+-	double x2,y2;
+-	double x3,y3;
+-	double lambda1,lambda2,lambda3;
+-	double det;
+-
+-	x1=xnodes[0];
+-	x2=xnodes[1];
+-	x3=xnodes[2];
+-	y1=ynodes[0];
+-	y2=ynodes[1];
+-	y3=ynodes[2];
+-
+-	/*compute determinant: */
+-	det=x1*y2-x1*y3-x3*y2-x2*y1+x2*y3+x3*y1;
+-
+-	/*area coordinates: */
+-	lambda1=((y2-y3)*(x-x3)+(x3-x2)*(y-y3))/det;
+-	lambda2=((y3-y1)*(x-x3)+(x1-x3)*(y-y3))/det;
+-	lambda3=1-lambda1-lambda2;
+-
+-	if( ((lambda1<=1) && (lambda1>=0)) && ((lambda2<=1) && (lambda2>=0)) && ((lambda3<=1) && (lambda3>=0))  )return true;
+-	else return false;
+-
+-}
+Index: ../trunk-jpl/src/c/modules/MeshProfileIntersectionx/MeshSegmentsIntersection.cpp
+===================================================================
+--- ../trunk-jpl/src/c/modules/MeshProfileIntersectionx/MeshSegmentsIntersection.cpp	(revision 14217)
++++ ../trunk-jpl/src/c/modules/MeshProfileIntersectionx/MeshSegmentsIntersection.cpp	(revision 14218)
+@@ -1,52 +0,0 @@
+-/*! \file  MeshSegmentsIntersectionx.c
+- */
+-
+-#include "./MeshProfileIntersectionx.h"
+-
+-void MeshSegmentsIntersection(double** psegments, int* pnumsegs,int* index, double* x, double* y, int nel, int nods, double* xc, double* yc, int numnodes){
+-
+-	int      i,j;
+-
+-	/*output: */
+-	double*  segments=NULL;
+-	Segment<double>* segment=NULL;
+-	int     numsegs;
+-
+-	/*intermediary: */
+-	DataSet* segments_dataset=NULL;
+-	double   xnodes[3];
+-	double   ynodes[3];
+-
+-	/*We don't know how many segments  we are going to get, so have a dynamic container: */
+-	segments_dataset=new DataSet();
+-
+-	/*Go through elements, and call ElementSegmentsIntersection routine: */
+-	for(i=0;i<nel;i++){
+-		for(j=0;j<3;j++){
+-			xnodes[j]=x[*(index+3*i+j)];
+-			ynodes[j]=y[*(index+3*i+j)];
+-		}
+-		ElementSegmentsIntersection(segments_dataset,i,xnodes,ynodes,xc,yc,numnodes);
+-	}
+-
+-	/*Using the segments_dataset dataset, create segments: */
+-	numsegs=segments_dataset->Size();
+-	segments=xNew<double>(5*numsegs);
+-	for(i=0;i<numsegs;i++){
+-		Segment<double>* segment=(Segment<double>*)segments_dataset->GetObjectByOffset(i);
+-
+-		/*x1,y1,x2,y2 then element_id: */
+-		*(segments+5*i+0)=segment->x1;
+-		*(segments+5*i+1)=segment->y1;
+-		*(segments+5*i+2)=segment->x2;
+-		*(segments+5*i+3)=segment->y2;
+-		*(segments+5*i+4)=(double)segment->eid;
+-	}
+-
+-	/*Free ressources:*/
+-	delete segments_dataset;
+-
+-	/*Assign output pointers:*/
+-	*psegments=segments;
+-	*pnumsegs=numsegs;
+-}
+Index: ../trunk-jpl/src/c/modules/MeshProfileIntersectionx/intersect.m
+===================================================================
+--- ../trunk-jpl/src/c/modules/MeshProfileIntersectionx/intersect.m	(revision 14217)
++++ ../trunk-jpl/src/c/modules/MeshProfileIntersectionx/intersect.m	(revision 14218)
+@@ -1,12 +0,0 @@
+-syms xA yA xB yB xC yC xD yD alpha beta x y
+-
+-A=[xA;yA];
+-B=[xB;yB];
+-C=[xC;yC];
+-D=[xD;yD];
+-
+-
+-Eq=C+alpha*(D-C)-A+beta*(B-A); 
+-
+-%from Eq, we specify the system to solve: 
+-S=solve( xC+alpha*(xD-xC)-xA+beta*(xB-xA), yC+alpha*(yD-yC)-yA+beta*(yB-yA),alpha,beta);
+Index: ../trunk-jpl/src/c/modules/MeshProfileIntersectionx/ElementSegment.cpp
+===================================================================
+--- ../trunk-jpl/src/c/modules/MeshProfileIntersectionx/ElementSegment.cpp	(revision 14217)
++++ ../trunk-jpl/src/c/modules/MeshProfileIntersectionx/ElementSegment.cpp	(revision 14218)
+@@ -1,90 +0,0 @@
+-/*! \file  ElementSegment.cpp
+- */
+-
+-#include "./MeshProfileIntersectionx.h"
+-
+-void ElementSegment(DataSet* segments_dataset,int el,double* xnodes,double* ynodes,double* xsegment,double* ysegment){
+-
+-	/*We have a tria element (xnodes,ynodes) and a segment (xsegment,ysegment). Find whether they intersect. 
+-	 * If they do, create a Segment object with the intersection, and add to segments_dataset dataset: */
+-
+-	double alpha1,alpha2;
+-	double beta1,beta2;
+-	double gamma1,gamma2;
+-
+-	int    edge1,edge2,edge3;
+-
+-	double xel[2],yel[2];
+-	double coord1,coord2;
+-	double xfinal[2],yfinal[2];
+-
+-	/*edge 1: */
+-	xel[0]=xnodes[0];  yel[0]=ynodes[0]; xel[1]=xnodes[1];  yel[1]=ynodes[1];
+-	edge1=SegmentIntersect(&alpha1,&alpha2, xel,yel,xsegment,ysegment); //alpha1: segment coordinate of intersection. alpha2: same thing for second interesection if it exists (colinear edges)
+-
+-	/*edge 2: */
+-	xel[0]=xnodes[1];  yel[0]=ynodes[1]; xel[1]=xnodes[2];  yel[1]=ynodes[2];
+-	edge2=SegmentIntersect(&beta1,&beta2, xel,yel,xsegment,ysegment);
+-
+-	/*edge 3: */
+-	xel[0]=xnodes[2];  yel[0]=ynodes[2]; xel[1]=xnodes[0];  yel[1]=ynodes[0];
+-	edge3=SegmentIntersect(&gamma1,&gamma2, xel,yel,xsegment,ysegment);
+-
+-	/*edge can be either IntersectEnum (one iand only one intersection between the edge and the segment), ColinearEnum (edge and segment are collinear) and SeparateEnum (no intersection): */
+-
+-	if(    (edge1==IntersectEnum) && (edge2==IntersectEnum) && (edge3==IntersectEnum)   ){
+-		/*This case is impossible: */
+-		_error_("error: a line cannot go through 3 different vertices!");
+-	}
+-	else if(    ((edge1==IntersectEnum) && (edge2==IntersectEnum)) || ((edge2==IntersectEnum) && (edge3==IntersectEnum)) || ((edge3==IntersectEnum) && (edge1==IntersectEnum))   ){
+-
+-		/*segment interscts 2 opposite edges of our triangle, at 2 segment coordinates, pick up the lowest (coord1) and highest (coord2): */
+-		if((edge1==IntersectEnum) && (edge2==IntersectEnum)) {coord1=min(alpha1,beta1); coord2=max(alpha1,beta1);}
+-		if((edge2==IntersectEnum) && (edge3==IntersectEnum)) {coord1=min(beta1,gamma1); coord2=max(beta1,gamma1);}
+-		if((edge3==IntersectEnum) && (edge1==IntersectEnum)) {coord1=min(gamma1,alpha1); coord2=max(gamma1,alpha1);}
+-
+-		/*check this segment did not intersect at a vertex of the tria: */
+-		if(coord1!=coord2){
+-
+-			xfinal[0]=xsegment[0]+coord1*(xsegment[1]-xsegment[0]);
+-			xfinal[1]=xsegment[0]+coord2*(xsegment[1]-xsegment[0]);
+-			yfinal[0]=ysegment[0]+coord1*(ysegment[1]-ysegment[0]);
+-			yfinal[1]=ysegment[0]+coord2*(ysegment[1]-ysegment[0]);
+-
+-			segments_dataset->AddObject(new  Segment<double>(el+1,xfinal[0],yfinal[0],xfinal[1],yfinal[1]));
+-		}
+-		else{
+-			/*the segment intersected at the vertex, do not bother with this "0" length segment!:*/
+-		}
+-	}
+-	else if(  (edge1==IntersectEnum) || (edge2==IntersectEnum) || (edge3==IntersectEnum)   ){
+-
+-		/*segment intersect only 1 edge. Figure out where the first point in the segment is, inside or outside the element, 
+-		 * this will decide the coordinate: */
+-		if (NodeInElement(xnodes,ynodes,xsegment[0],ysegment[0])){
+-			coord1=0;
+-			if(edge1==IntersectEnum){coord2=alpha1;}
+-			if(edge2==IntersectEnum){coord2=beta1;}
+-			if(edge3==IntersectEnum){coord2=gamma1;}
+-		}
+-		else{
+-			if(edge1==IntersectEnum){coord1=alpha1;}
+-			if(edge2==IntersectEnum){coord1=beta1;}
+-			if(edge3==IntersectEnum){coord1=gamma1;}
+-			coord2=1.0;
+-		}
+-
+-		xfinal[0]=xsegment[0]+coord1*(xsegment[1]-xsegment[0]);
+-		xfinal[1]=xsegment[0]+coord2*(xsegment[1]-xsegment[0]);
+-		yfinal[0]=ysegment[0]+coord1*(ysegment[1]-ysegment[0]);
+-		yfinal[1]=ysegment[0]+coord2*(ysegment[1]-ysegment[0]);
+-
+-		segments_dataset->AddObject(new  Segment<double>(el+1,xfinal[0],yfinal[0],xfinal[1],yfinal[1]));
+-	}
+-	else{
+-		/*No interesections, but the segment might be entirely inside this triangle!: */
+-		if ( (NodeInElement(xnodes,ynodes,xsegment[0],ysegment[0])) && (NodeInElement(xnodes,ynodes,xsegment[1],ysegment[1])) ){
+-			segments_dataset->AddObject(new  Segment<double>(el+1,xsegment[0],ysegment[0],xsegment[1],ysegment[1]));
+-		}
+-	}
+-}
+Index: ../trunk-jpl/src/c/modules/MeshProfileIntersectionx/MeshProfileIntersectionx.h
+===================================================================
+--- ../trunk-jpl/src/c/modules/MeshProfileIntersectionx/MeshProfileIntersectionx.h	(revision 14217)
++++ ../trunk-jpl/src/c/modules/MeshProfileIntersectionx/MeshProfileIntersectionx.h	(revision 14218)
+@@ -9,8 +9,8 @@
+ #include "../../classes/objects/objects.h"
+ 
+ /* local prototypes: */
+-void MeshProfileIntersectionx( double** psegments, int* pnumseg, int* index, double* x, double* y, int nel, int nods,  Contour<IssmPDouble>** contours,int numcontours);
+-void MeshSegmentsIntersection(double** psegments, int* pnumsegs,int* index, double* x, double* y, int nel, int nods, double* xc, double* yc, int numnodes);
++void MeshProfileIntersectionx(int** psegments, int* pnumseg, int* index, double* x, double* y, int nel, int nods,  Contour<IssmPDouble>** contours,int numcontours);
++void MeshSegmentsIntersection(int** psegments, int* pnumsegs,int* index, double* x, double* y, int nel, int nods, double* xc, double* yc, int numnodes);
+ void ElementSegmentsIntersection(DataSet* segments_dataset,int el, double* xnodes,double* ynodes,double* xc,double* yc,int numnodes);
+ void ElementSegment(DataSet* segments_dataset,int el,double* xnodes,double* ynodes,double* xsegment,double* ysegment);
+ int  SegmentIntersect(double* palpha, double* pbeta, double* x1, double* y1, double* x2, double* y2);
+Index: ../trunk-jpl/src/c/modules/MeshProfileIntersectionx/MeshProfileIntersectionx.cpp
+===================================================================
+--- ../trunk-jpl/src/c/modules/MeshProfileIntersectionx/MeshProfileIntersectionx.cpp	(revision 14217)
++++ ../trunk-jpl/src/c/modules/MeshProfileIntersectionx/MeshProfileIntersectionx.cpp	(revision 14218)
+@@ -3,7 +3,7 @@
+ 
+ #include "./MeshProfileIntersectionx.h"
+ 
+-void MeshProfileIntersectionx( double** psegments, int* pnumsegs, int* index, double* x, double* y, int nel, int nods,  Contour<IssmPDouble>** contours,int numcontours){
++void MeshProfileIntersectionx(int** psegments, int* pnumsegs, int* index, double* x, double* y, int nel, int nods,  Contour<IssmPDouble>** contours,int numcontours){/*{{{*/
+ 
+ 	int i,j,k;
+ 
+@@ -14,18 +14,18 @@
+ 	double*  yc=NULL;
+ 
+ 	/*output: */
+-	double* segments=NULL;
+-	int     numsegs;
++	int* segments=NULL;
++	int  numsegs;
+ 
+ 	/*intermediary: */
+-	double** allsegments=NULL;
+-	double* segmentsi=NULL;
+-	int*    allnumsegs=NULL;
+-	int     numsegsi;
+-	int     count;
++	int** allsegments=NULL;
++	int*  segmentsi=NULL;
++	int*  allnumsegs=NULL;
++	int   numsegsi;
++	int   count;
+ 
+ 	/*Allocate: */
+-	allsegments=xNew<double*>(numcontours);
++	allsegments=xNew<int*>(numcontours);
+ 	allnumsegs=xNew<int>(numcontours);
+ 
+ 	/*Loop through all contours: */
+@@ -50,7 +50,7 @@
+ 	for(i=0;i<numcontours;i++)numsegs+=allnumsegs[i];
+ 
+ 	/*Out of all segments, create one common array of segments: */
+-	segments=xNew<double>(5*numsegs);
++	segments=xNew<int>(5*numsegs);
+ 	count=0;
+ 	for(i=0;i<numcontours;i++){
+ 
+@@ -68,4 +68,279 @@
+ 	/*Assign output pointers:*/
+ 	*psegments=segments;
+ 	*pnumsegs=numsegs;
+-}
++}/*}}}*/
++void MeshSegmentsIntersection(double** psegments, int* pnumsegs,int* index, double* x, double* y, int nel, int nods, double* xc, double* yc, int numnodes){/*{{{*/
++
++	int      i,j;
++
++	/*output: */
++	double*  segments=NULL;
++	Segment<double>* segment=NULL;
++	int     numsegs;
++
++	/*intermediary: */
++	DataSet* segments_dataset=NULL;
++	double   xnodes[3];
++	double   ynodes[3];
++
++	/*We don't know how many segments  we are going to get, so have a dynamic container: */
++	segments_dataset=new DataSet();
++
++	/*Go through elements, and call ElementSegmentsIntersection routine: */
++	for(i=0;i<nel;i++){
++		for(j=0;j<3;j++){
++			xnodes[j]=x[*(index+3*i+j)];
++			ynodes[j]=y[*(index+3*i+j)];
++		}
++		ElementSegmentsIntersection(segments_dataset,i,xnodes,ynodes,xc,yc,numnodes);
++	}
++
++	/*Using the segments_dataset dataset, create segments: */
++	numsegs=segments_dataset->Size();
++	segments=xNew<double>(5*numsegs);
++	for(i=0;i<numsegs;i++){
++		Segment<double>* segment=(Segment<double>*)segments_dataset->GetObjectByOffset(i);
++
++		/*x1,y1,x2,y2 then element_id: */
++		*(segments+5*i+0)=segment->x1;
++		*(segments+5*i+1)=segment->y1;
++		*(segments+5*i+2)=segment->x2;
++		*(segments+5*i+3)=segment->y2;
++		*(segments+5*i+4)=(double)segment->eid;
++	}
++
++	/*Free ressources:*/
++	delete segments_dataset;
++
++	/*Assign output pointers:*/
++	*psegments=segments;
++	*pnumsegs=numsegs;
++}/*}}}*/
++
++/*Utilities*/
++void ElementSegmentsIntersection(DataSet* segments_dataset,int el, double* xnodes,double* ynodes,double* xc,double* yc,int numnodes){/*{{{*/
++
++	double xsegment[2];
++	double ysegment[2];
++
++	/*Loop through contour: */
++	for(int i=0;i<numnodes-1;i++){
++		xsegment[0]=xc[i];
++		xsegment[1]=xc[i+1];
++		ysegment[0]=yc[i];
++		ysegment[1]=yc[i+1];
++		ElementSegment(segments_dataset,el, xnodes,ynodes,xsegment,ysegment);
++	}
++}/*}}}*/
++void ElementSegment(DataSet* segments_dataset,int el,double* xnodes,double* ynodes,double* xsegment,double* ysegment){/*{{{*/
++
++	/*We have a tria element (xnodes,ynodes) and a segment (xsegment,ysegment). Find whether they intersect. 
++	 * If they do, create a Segment object with the intersection, and add to segments_dataset dataset: */
++
++	double alpha1,alpha2;
++	double beta1,beta2;
++	double gamma1,gamma2;
++
++	int    edge1,edge2,edge3;
++
++	double xel[2],yel[2];
++	double coord1,coord2;
++	double xfinal[2],yfinal[2];
++
++	/*edge 1: */
++	xel[0]=xnodes[0];  yel[0]=ynodes[0]; xel[1]=xnodes[1];  yel[1]=ynodes[1];
++	edge1=SegmentIntersect(&alpha1,&alpha2, xel,yel,xsegment,ysegment); //alpha1: segment coordinate of intersection. alpha2: same thing for second interesection if it exists (colinear edges)
++
++	/*edge 2: */
++	xel[0]=xnodes[1];  yel[0]=ynodes[1]; xel[1]=xnodes[2];  yel[1]=ynodes[2];
++	edge2=SegmentIntersect(&beta1,&beta2, xel,yel,xsegment,ysegment);
++
++	/*edge 3: */
++	xel[0]=xnodes[2];  yel[0]=ynodes[2]; xel[1]=xnodes[0];  yel[1]=ynodes[0];
++	edge3=SegmentIntersect(&gamma1,&gamma2, xel,yel,xsegment,ysegment);
++
++	/*edge can be either IntersectEnum (one iand only one intersection between the edge and the segment), ColinearEnum (edge and segment are collinear) and SeparateEnum (no intersection): */
++
++	if(    (edge1==IntersectEnum) && (edge2==IntersectEnum) && (edge3==IntersectEnum)   ){
++		/*This case is impossible: */
++		_error_("error: a line cannot go through 3 different vertices!");
++	}
++	else if(    ((edge1==IntersectEnum) && (edge2==IntersectEnum)) || ((edge2==IntersectEnum) && (edge3==IntersectEnum)) || ((edge3==IntersectEnum) && (edge1==IntersectEnum))   ){
++
++		/*segment interscts 2 opposite edges of our triangle, at 2 segment coordinates, pick up the lowest (coord1) and highest (coord2): */
++		if((edge1==IntersectEnum) && (edge2==IntersectEnum)) {coord1=min(alpha1,beta1); coord2=max(alpha1,beta1);}
++		if((edge2==IntersectEnum) && (edge3==IntersectEnum)) {coord1=min(beta1,gamma1); coord2=max(beta1,gamma1);}
++		if((edge3==IntersectEnum) && (edge1==IntersectEnum)) {coord1=min(gamma1,alpha1); coord2=max(gamma1,alpha1);}
++
++		/*check this segment did not intersect at a vertex of the tria: */
++		if(coord1!=coord2){
++
++			xfinal[0]=xsegment[0]+coord1*(xsegment[1]-xsegment[0]);
++			xfinal[1]=xsegment[0]+coord2*(xsegment[1]-xsegment[0]);
++			yfinal[0]=ysegment[0]+coord1*(ysegment[1]-ysegment[0]);
++			yfinal[1]=ysegment[0]+coord2*(ysegment[1]-ysegment[0]);
++
++			segments_dataset->AddObject(new  Segment<double>(el+1,xfinal[0],yfinal[0],xfinal[1],yfinal[1]));
++		}
++		else{
++			/*the segment intersected at the vertex, do not bother with this "0" length segment!:*/
++		}
++	}
++	else if(  (edge1==IntersectEnum) || (edge2==IntersectEnum) || (edge3==IntersectEnum)   ){
++
++		/*segment intersect only 1 edge. Figure out where the first point in the segment is, inside or outside the element, 
++		 * this will decide the coordinate: */
++		if (NodeInElement(xnodes,ynodes,xsegment[0],ysegment[0])){
++			coord1=0;
++			if(edge1==IntersectEnum){coord2=alpha1;}
++			if(edge2==IntersectEnum){coord2=beta1;}
++			if(edge3==IntersectEnum){coord2=gamma1;}
++		}
++		else{
++			if(edge1==IntersectEnum){coord1=alpha1;}
++			if(edge2==IntersectEnum){coord1=beta1;}
++			if(edge3==IntersectEnum){coord1=gamma1;}
++			coord2=1.0;
++		}
++
++		xfinal[0]=xsegment[0]+coord1*(xsegment[1]-xsegment[0]);
++		xfinal[1]=xsegment[0]+coord2*(xsegment[1]-xsegment[0]);
++		yfinal[0]=ysegment[0]+coord1*(ysegment[1]-ysegment[0]);
++		yfinal[1]=ysegment[0]+coord2*(ysegment[1]-ysegment[0]);
++
++		segments_dataset->AddObject(new  Segment<double>(el+1,xfinal[0],yfinal[0],xfinal[1],yfinal[1]));
++	}
++	else{
++		/*No interesections, but the segment might be entirely inside this triangle!: */
++		if ( (NodeInElement(xnodes,ynodes,xsegment[0],ysegment[0])) && (NodeInElement(xnodes,ynodes,xsegment[1],ysegment[1])) ){
++			segments_dataset->AddObject(new  Segment<double>(el+1,xsegment[0],ysegment[0],xsegment[1],ysegment[1]));
++		}
++	}
++}/*}}}*/
++bool NodeInElement(double* xnodes, double* ynodes, double x, double y){/*{{{*/
++
++	double x1,y1;
++	double x2,y2;
++	double x3,y3;
++	double lambda1,lambda2,lambda3;
++	double det;
++
++	x1=xnodes[0];
++	x2=xnodes[1];
++	x3=xnodes[2];
++	y1=ynodes[0];
++	y2=ynodes[1];
++	y3=ynodes[2];
++
++	/*compute determinant: */
++	det=x1*y2-x1*y3-x3*y2-x2*y1+x2*y3+x3*y1;
++
++	/*area coordinates: */
++	lambda1=((y2-y3)*(x-x3)+(x3-x2)*(y-y3))/det;
++	lambda2=((y3-y1)*(x-x3)+(x1-x3)*(y-y3))/det;
++	lambda3=1-lambda1-lambda2;
++
++	if( ((lambda1<=1) && (lambda1>=0)) && ((lambda2<=1) && (lambda2>=0)) && ((lambda3<=1) && (lambda3>=0))  )return true;
++	else return false;
++
++}/*}}}*/
++int SegmentIntersect(double* palpha, double* pbeta, double* x1, double* y1, double* x2, double* y2){/*{{{*/
++
++	/*See ISSM_DIR/src/m/utils/Geometry/SegIntersect.m for matlab routine from which we take this routine: */
++
++	/*output: */
++	double alpha=-1;
++	double beta=-1;
++
++	double xA,xB,xC,xD,yA,yB,yC,yD;
++	double O2A[2],O2B[2],O1C[2],O1D[2];
++	double n1[2],n2[2];
++	double test1, test2, test3, test4;
++	double det;
++	double O2O1[2];
++	double pO1A,pO1B,pO1C,pO1D;
++
++	xA=x1[0]; yA=y1[0];
++	xB=x1[1]; yB=y1[1];
++	xC=x2[0]; yC=y2[0];
++	xD=x2[1]; yD=y2[1];
++
++	O2A[0]=xA -(xD/2+xC/2); O2A[1]=yA -(yD/2+yC/2);
++	O2B[0]=xB -(xD/2+xC/2); O2B[1]=yB -(yD/2+yC/2);
++	O1C[0]=xC -(xA/2+xB/2); O1C[1]=yC -(yA/2+yB/2);
++	O1D[0]=xD -(xA/2+xB/2); O1D[1]=yD -(yA/2+yB/2);
++
++	n1[0]=yA-yB; n1[1]=xB-xA;  //normal vector to segA
++	n2[0]=yC-yD; n2[1]=xD-xC;  //normal vector to segB
++
++	test1=n2[0]*O2A[0]+n2[1]*O2A[1];
++	test2=n2[0]*O2B[0]+n2[1]*O2B[1];
++
++	if (test1*test2>0){
++		return SeparateEnum;
++	}
++
++	test3=n1[0]*O1C[0]+n1[1]*O1C[1];
++	test4=n1[0]*O1D[0]+n1[1]*O1D[1];
++
++	if (test3*test4>0){
++		return SeparateEnum;
++	}
++
++	/*If colinear: */
++	det=n1[0]*n2[1]-n2[0]*n1[1];
++
++	if(test1*test2==0 && test3*test4==0 && det==0){
++
++		//projection on the axis O1O2
++		O2O1[0]=(xA/2+xB/2)-(xD/2+xC/2);
++		O2O1[1]=(yA/2+yB/2)-(yD/2+yC/2);
++
++		pO1A=O2O1[0]*(O2A[0]-O2O1[0])+O2O1[1]*(O2A[1]-O2O1[1]);
++		pO1B=O2O1[0]*(O2B[0]-O2O1[0])+O2O1[1]*(O2B[1]-O2O1[1]);
++		pO1C=O2O1[0]*O1C[0]+O2O1[1]*O1C[1];
++		pO1D=O2O1[0]*O1D[0]+O2O1[1]*O1D[1];
++
++		//test if one point is included in the other segment (->intersects=true)
++		if ((pO1C-pO1A)*(pO1D-pO1A)<0){
++			alpha=0; beta=0;
++			*palpha=alpha;*pbeta=beta;
++			return ColinearEnum;
++		}
++		if ((pO1C-pO1B)*(pO1D-pO1B)<0){
++			alpha=0; beta=0;
++			*palpha=alpha;*pbeta=beta;
++			return ColinearEnum;
++		}
++		if ((pO1A-pO1C)*(pO1B-pO1C)<0){
++			alpha=0; beta=0;
++			*palpha=alpha;*pbeta=beta;
++			return ColinearEnum;
++		}
++		if ((pO1A-pO1D)*(pO1B-pO1D)<0){
++			alpha=0; beta=0;
++			*palpha=alpha;*pbeta=beta;
++			return ColinearEnum;
++		}
++
++		//test if the 2 segments have the same middle (->intersects=true)
++		if (O2O1==0){
++			alpha=0; beta=0;
++			*palpha=alpha;*pbeta=beta;
++			return ColinearEnum;
++		}
++
++		//if we are here, both segments are colinear, but do not interset:
++		alpha=-1; beta=-1;
++		*palpha=alpha;*pbeta=beta;
++		return SeparateEnum;
++	}
++
++	/*if we are here, both segments intersect. Determine where in the segment coordinate 
++	 * system: */
++	beta=-1;
++	alpha=-(xA*yB-xC*yB+yC*xB-yC*xA+xC*yA-yA*xB)/(-xD*yB+xD*yA+xC*yB-xC*yA-yD*xA+yD*xB+yC*xA-yC*xB); //from intersect.m in formal calculus
++
++	*palpha=alpha;*pbeta=beta;
++	return IntersectEnum;
++}/*}}}*/
+Index: ../trunk-jpl/src/c/Makefile.am
+===================================================================
+--- ../trunk-jpl/src/c/Makefile.am	(revision 14217)
++++ ../trunk-jpl/src/c/Makefile.am	(revision 14218)
+@@ -780,11 +780,6 @@
+ 			./modules/AverageFilterx/AverageFilterx.h\
+ 			./modules/MeshProfileIntersectionx/MeshProfileIntersectionx.cpp\
+ 			./modules/MeshProfileIntersectionx/MeshProfileIntersectionx.h\
+-			./modules/MeshProfileIntersectionx/MeshSegmentsIntersection.cpp\
+-			./modules/MeshProfileIntersectionx/ElementSegmentsIntersection.cpp\
+-			./modules/MeshProfileIntersectionx/ElementSegment.cpp\
+-			./modules/MeshProfileIntersectionx/SegmentIntersect.cpp\
+-			./modules/MeshProfileIntersectionx/NodeInElement.cpp\
+ 			./modules/ContourToMeshx/ContourToMeshx.cpp\
+ 			./modules/ContourToMeshx/ContourToMeshxt.cpp\
+ 			./modules/ContourToMeshx/ContourToMeshx.h\
Index: /issm/oecreview/Archive/14064-14311/ISSM-14218-14219.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14218-14219.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14218-14219.diff	(revision 14312)
@@ -0,0 +1,81 @@
+Index: ../trunk-jpl/src/c/modules/MeshProfileIntersectionx/MeshProfileIntersectionx.h
+===================================================================
+--- ../trunk-jpl/src/c/modules/MeshProfileIntersectionx/MeshProfileIntersectionx.h	(revision 14218)
++++ ../trunk-jpl/src/c/modules/MeshProfileIntersectionx/MeshProfileIntersectionx.h	(revision 14219)
+@@ -9,8 +9,8 @@
+ #include "../../classes/objects/objects.h"
+ 
+ /* local prototypes: */
+-void MeshProfileIntersectionx(int** psegments, int* pnumseg, int* index, double* x, double* y, int nel, int nods,  Contour<IssmPDouble>** contours,int numcontours);
+-void MeshSegmentsIntersection(int** psegments, int* pnumsegs,int* index, double* x, double* y, int nel, int nods, double* xc, double* yc, int numnodes);
++void MeshProfileIntersectionx(double** psegments, int* pnumseg, int* index, double* x, double* y, int nel, int nods,  Contour<IssmPDouble>** contours,int numcontours);
++void MeshSegmentsIntersection(double** psegments, int* pnumsegs,int* index, double* x, double* y, int nel, int nods, double* xc, double* yc, int numnodes);
+ void ElementSegmentsIntersection(DataSet* segments_dataset,int el, double* xnodes,double* ynodes,double* xc,double* yc,int numnodes);
+ void ElementSegment(DataSet* segments_dataset,int el,double* xnodes,double* ynodes,double* xsegment,double* ysegment);
+ int  SegmentIntersect(double* palpha, double* pbeta, double* x1, double* y1, double* x2, double* y2);
+Index: ../trunk-jpl/src/c/modules/MeshProfileIntersectionx/MeshProfileIntersectionx.cpp
+===================================================================
+--- ../trunk-jpl/src/c/modules/MeshProfileIntersectionx/MeshProfileIntersectionx.cpp	(revision 14218)
++++ ../trunk-jpl/src/c/modules/MeshProfileIntersectionx/MeshProfileIntersectionx.cpp	(revision 14219)
+@@ -3,7 +3,7 @@
+ 
+ #include "./MeshProfileIntersectionx.h"
+ 
+-void MeshProfileIntersectionx(int** psegments, int* pnumsegs, int* index, double* x, double* y, int nel, int nods,  Contour<IssmPDouble>** contours,int numcontours){/*{{{*/
++void MeshProfileIntersectionx(double** psegments, int* pnumsegs, int* index, double* x, double* y, int nel, int nods,  Contour<IssmPDouble>** contours,int numcontours){/*{{{*/
+ 
+ 	int i,j,k;
+ 
+@@ -14,18 +14,18 @@
+ 	double*  yc=NULL;
+ 
+ 	/*output: */
+-	int* segments=NULL;
+-	int  numsegs;
++	double* segments=NULL;
++	int     numsegs;
+ 
+ 	/*intermediary: */
+-	int** allsegments=NULL;
+-	int*  segmentsi=NULL;
+-	int*  allnumsegs=NULL;
+-	int   numsegsi;
+-	int   count;
++	double** allsegments=NULL;
++	double*  segmentsi=NULL;
++	int*     allnumsegs=NULL;
++	int      numsegsi;
++	int      count;
+ 
+ 	/*Allocate: */
+-	allsegments=xNew<int*>(numcontours);
++	allsegments=xNew<double*>(numcontours);
+ 	allnumsegs=xNew<int>(numcontours);
+ 
+ 	/*Loop through all contours: */
+@@ -50,7 +50,7 @@
+ 	for(i=0;i<numcontours;i++)numsegs+=allnumsegs[i];
+ 
+ 	/*Out of all segments, create one common array of segments: */
+-	segments=xNew<int>(5*numsegs);
++	segments=xNew<double>(5*numsegs);
+ 	count=0;
+ 	for(i=0;i<numcontours;i++){
+ 
+@@ -102,11 +102,11 @@
+ 		Segment<double>* segment=(Segment<double>*)segments_dataset->GetObjectByOffset(i);
+ 
+ 		/*x1,y1,x2,y2 then element_id: */
+-		*(segments+5*i+0)=segment->x1;
+-		*(segments+5*i+1)=segment->y1;
+-		*(segments+5*i+2)=segment->x2;
+-		*(segments+5*i+3)=segment->y2;
+-		*(segments+5*i+4)=(double)segment->eid;
++		segments[5*i+0]=segment->x1;
++		segments[5*i+1]=segment->y1;
++		segments[5*i+2]=segment->x2;
++		segments[5*i+3]=segment->y2;
++		segments[5*i+4]=(double)segment->eid;
+ 	}
+ 
+ 	/*Free ressources:*/
Index: /issm/oecreview/Archive/14064-14311/ISSM-14219-14220.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14219-14220.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14219-14220.diff	(revision 14312)
@@ -0,0 +1,15 @@
+Index: ../trunk-jpl/src/wrappers/MeshProfileIntersection/MeshProfileIntersection.cpp
+===================================================================
+--- ../trunk-jpl/src/wrappers/MeshProfileIntersection/MeshProfileIntersection.cpp	(revision 14219)
++++ ../trunk-jpl/src/wrappers/MeshProfileIntersection/MeshProfileIntersection.cpp	(revision 14220)
+@@ -50,8 +50,8 @@
+ 	Contour<double>  *contouri=NULL;
+ 
+ 	/* output: */
+-	int* segments=NULL;
+-	int  numsegs;
++	double* segments=NULL;
++	int     numsegs;
+ 
+ 	/*Boot module: */
+ 	MODULEBOOT();
Index: /issm/oecreview/Archive/14064-14311/ISSM-14220-14221.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14220-14221.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14220-14221.diff	(revision 14312)
@@ -0,0 +1,341 @@
+Index: ../trunk-jpl/src/wrappers/python/io/pythonio.h
+===================================================================
+--- ../trunk-jpl/src/wrappers/python/io/pythonio.h	(revision 14220)
++++ ../trunk-jpl/src/wrappers/python/io/pythonio.h	(revision 14221)
+@@ -24,10 +24,13 @@
+ void WriteData(PyObject* py_tuple,int index);
+ void WriteData(PyObject* py_tuple,int index, SeqMat<double>* matrix);
+ void WriteData(PyObject* py_tuple,int index, SeqVec<double>* vector);
++void WriteData(PyObject* py_tuple,int index, SeqMat<int>* matrix);
++void WriteData(PyObject* py_tuple,int index, SeqVec<int>* vector);
+ void WriteData(PyObject* py_tuple,int index, BamgGeom* bamggeom);
+ void WriteData(PyObject* py_tuple,int index, BamgMesh* bamgmesh);
+ void WriteData(PyObject* py_tuple,int index, RiftStruct* riftstruct);
+ 
++void FetchData(int** pvector,int* pM,PyObject* py_ref);
+ void FetchData(double** pvector,int* pM,PyObject* py_ref);
+ void FetchData(double** pmatrix,int* pM,int *pN,PyObject* py_array);
+ void FetchData(int** pmatrix,int* pM,int *pN,PyObject* py_matrix);
+@@ -46,5 +49,6 @@
+ /*Utils*/
+ PyObject* PyArrayFromCopiedData(int dims[2],double* data);
+ PyObject* PyArrayFromCopiedData(int dimi,int dimj,double* data);
++PyObject* PyArrayFromCopiedData(int dimi,int dimj,int* data);
+ 
+ #endif	/* _IO_H_ */
+Index: ../trunk-jpl/src/wrappers/python/io/FetchPythonData.cpp
+===================================================================
+--- ../trunk-jpl/src/wrappers/python/io/FetchPythonData.cpp	(revision 14220)
++++ ../trunk-jpl/src/wrappers/python/io/FetchPythonData.cpp	(revision 14221)
+@@ -303,7 +303,67 @@
+ 	if(pvector)*pvector=vector;
+ }
+ /*}}}*/
++/*FUNCTION FetchData(int** pvector,int* pM, PyObject* py_vector){{{*/
++void FetchData(int** pvector,int* pM,PyObject* py_vector){
+ 
++	/*output: */
++	int* vector=NULL;
++	int M;
++	int ndim;
++	npy_intp*  dims=NULL;
++
++	/*intermediary:*/
++	long*   lvector=NULL;
++	bool*   bvector=NULL;
++	double* dvector=NULL;
++	int i;
++
++	/*retrieve dimensions: */
++	ndim=PyArray_NDIM((const PyArrayObject*)py_vector);
++	if(ndim!=1)_error_("expecting an Mx1 vector in input!");
++	dims=PyArray_DIMS((PyArrayObject*)py_vector);
++	M=dims[0]; 
++
++	if (M) {
++		if      (PyArray_TYPE((PyArrayObject*)py_vector) == NPY_DOUBLE) {
++			/*retrieve internal value: */
++			dvector=(double*)PyArray_DATA((PyArrayObject*)py_vector);
++
++			/*transform into int vector: */
++			vector=xNew<int>(M);
++			for(i=0;i<M;i++)vector[i]=(int)lvector[i];
++		}
++
++		else if (PyArray_TYPE((PyArrayObject*)py_vector) == NPY_INT64) {
++			/*retrieve internal value: */
++			lvector=(long*)PyArray_DATA((PyArrayObject*)py_vector);
++
++			/*transform into int vector: */
++			vector=xNew<int>(M);
++			for(i=0;i<M;i++)vector[i]=(int)lvector[i];
++		}
++
++		else if (PyArray_TYPE((PyArrayObject*)py_vector) == NPY_BOOL) {
++			/*retrieve internal value: */
++			bvector=(bool*)PyArray_DATA((PyArrayObject*)py_vector);
++
++			/*transform into int vector: */
++			vector=xNew<int>(M);
++			for(i=0;i<M;i++)vector[i]=(int)bvector[i];
++		}
++
++		else
++		 _error_("unrecognized vector type in input!");
++	}
++	else
++	 vector=NULL;
++
++	/*output: */
++	if(pM)*pM=M;
++	if(pvector)*pvector=vector;
++}
++/*}}}*/
++
+ /*ISSM objects*/
+ /*FUNCTION FetchData(BamgGeom** pbamggeom,PyObject* py_dict){{{*/
+ void FetchData(BamgGeom** pbamggeom,PyObject* py_dict){
+Index: ../trunk-jpl/src/wrappers/python/io/WritePythonData.cpp
+===================================================================
+--- ../trunk-jpl/src/wrappers/python/io/WritePythonData.cpp	(revision 14220)
++++ ../trunk-jpl/src/wrappers/python/io/WritePythonData.cpp	(revision 14221)
+@@ -161,6 +161,55 @@
+ 	PyTuple_SetItem(py_tuple, index, array);
+ }
+ /*}}}*/
++/*FUNCTION WriteData(PyObject* py_tuple,int index,SeqMat<int>* matrix){{{*/
++void WriteData(PyObject* py_tuple,int index,SeqMat<int>* matrix){
++
++	//FIXME: convert to double for now
++	
++	int M,N;
++	int* buffer=NULL;
++	npy_intp dims[2]={0,0};
++	PyObject* array=NULL;
++
++	matrix->GetSize(&M,&N);
++	buffer=matrix->ToSerial();
++
++	/*convert to double*/
++	double* bufferdouble=xNew<IssmDouble>(M*N);
++	for(int i=0;i<M*N;i++) bufferdouble[i]=(double)buffer[i];
++	xDelete<int>(buffer);
++
++	dims[0]=(npy_intp)M;
++	dims[1]=(npy_intp)N;
++	array=PyArray_SimpleNewFromData(2,dims,NPY_DOUBLE,bufferdouble);
++
++	PyTuple_SetItem(py_tuple, index, array);
++
++}/*}}}*/
++/*FUNCTION WriteData(PyObject* py_tuple,int index,SeqVec<int>* vector){{{*/
++void WriteData(PyObject* py_tuple,int index,SeqVec<int>* vector){
++
++	//FIXME: convert to double for now
++
++	int M;
++	int* buffer=NULL;
++	npy_intp dim=10;
++	PyObject* array=NULL;
++
++	vector->GetSize(&M);
++	buffer=vector->ToMPISerial();
++
++	/*convert to double*/
++	IssmDouble* bufferdouble=xNew<IssmDouble>(M);
++	for(int i=0;i<M;i++) bufferdouble[i]=(double)buffer[i];
++	xDelete<int>(buffer);
++
++	dim=(npy_intp)M;
++	array=PyArray_SimpleNewFromData(1,&dim,NPY_DOUBLE,bufferdouble);
++
++	PyTuple_SetItem(py_tuple, index, array);
++}
++/*}}}*/
+ /*FUNCTION WriteData(PyObject* py_tuple,int index,RiftStruct* riftstruct){{{*/
+ void WriteData(PyObject* py_tuple,int index,RiftStruct* riftstruct){
+ 
+@@ -224,3 +273,22 @@
+ 	return PyArray_SimpleNewFromData(2,pydims,NPY_DOUBLE,pydata);
+ }
+ /*}}}*/
++/*FUNCTION PyArrayFromCopiedData(int dimi,int dimj,int* data){{{*/
++PyObject* PyArrayFromCopiedData(int dimi,int dimj,int* data){
++
++	//FIXME: convert to double for now
++
++	double* pydata;
++	npy_intp pydims[2]={0,0};
++
++	/*  note that PyArray_SimpleNewFromData does not copy the data, so that when the original
++		 object (e.g. bamggeom,bamgmesh) is deleted, the data is gone.  */
++
++	pydims[0]=(npy_intp)dimi;
++	pydims[1]=(npy_intp)dimj;
++	pydata=xNew<IssmDouble>(dimi*dimj);
++	//memcpy(pydata,data,dimi*dimj*sizeof(int));
++	for(int i=0;i<dimi*dimj;i++) pydata[i]=(double)data[i];
++	return PyArray_SimpleNewFromData(2,pydims,NPY_DOUBLE,pydata);
++}
++/*}}}*/
+Index: ../trunk-jpl/src/wrappers/TriMeshProcessRifts/TriMeshProcessRifts.cpp
+===================================================================
+--- ../trunk-jpl/src/wrappers/TriMeshProcessRifts/TriMeshProcessRifts.cpp	(revision 14220)
++++ ../trunk-jpl/src/wrappers/TriMeshProcessRifts/TriMeshProcessRifts.cpp	(revision 14221)
+@@ -17,11 +17,11 @@
+ 
+ 	/* input: */
+ 	int     nel,nods;
+-	double *index          = NULL;
++	int    *index          = NULL;
+ 	double *x              = NULL;
+ 	double *y              = NULL;
+-	double *segments       = NULL;
+-	double *segmentmarkers = NULL;
++	int    *segments       = NULL;
++	int    *segmentmarkers = NULL;
+ 	int     num_seg;
+ 
+ 	/*Boot module*/
+Index: ../trunk-jpl/src/wrappers/matlab/io/WriteMatlabData.cpp
+===================================================================
+--- ../trunk-jpl/src/wrappers/matlab/io/WriteMatlabData.cpp	(revision 14220)
++++ ../trunk-jpl/src/wrappers/matlab/io/WriteMatlabData.cpp	(revision 14221)
+@@ -289,6 +289,75 @@
+ 	*pdataref=dataref;
+ }
+ /*}}}*/
++/*FUNCTION WriteData(mxArray** pdataref,SeqMat<int>* matrix){{{*/
++void WriteData(mxArray** pdataref,SeqMat<int>* matrix){
++
++	int      i,j;
++	int      rows,cols;
++	mxArray *dataref     = NULL;
++	int     *matrix_ptr  = NULL;
++	double  *tmatrix_ptr = NULL;
++
++	if(matrix){
++
++		matrix_ptr=matrix->ToSerial();
++		matrix->GetSize(&rows,&cols);
++
++		/*Now transpose the matrix and allocate with Matlab's memory manager: */
++		tmatrix_ptr=(double*)mxMalloc(rows*cols*sizeof(double));
++		for(i=0;i<rows;i++){
++			for(j=0;j<cols;j++){
++				tmatrix_ptr[j*rows+i]=(double)matrix_ptr[i*cols+j];
++			}
++		}
++
++		/*create matlab matrix: */
++		dataref=mxCreateDoubleMatrix(0,0,mxREAL);
++		mxSetM(dataref,rows); 
++		mxSetN(dataref,cols);
++		mxSetPr(dataref,tmatrix_ptr);
++
++		/*Free ressources:*/
++		xDelete<int>(matrix_ptr);
++	}
++	else{
++		dataref = mxCreateDoubleMatrix(0,0,mxREAL);
++	}
++
++	*pdataref=dataref;
++}
++/*}}}*/
++/*FUNCTION WriteData(mxArray** pdataref,SeqVec<int>* vector){{{*/
++void WriteData(mxArray** pdataref,SeqVec<int>* vector){
++
++	mxArray* dataref=NULL;
++	int*     vector_ptr=NULL;
++	double*  vector_matlab=NULL;
++	int      rows;
++
++	if(vector){
++		/*call toolkit routine: */
++		vector_ptr=vector->ToMPISerial();
++		vector->GetSize(&rows);
++
++		/*now create the matlab vector with Matlab's memory manager */
++		vector_matlab=(double*)mxMalloc(rows*sizeof(double));
++		for(int i=0;i<rows;i++) vector_matlab[i]=(double)vector_ptr[i];
++
++		dataref = mxCreateDoubleMatrix(0,0,mxREAL);                         
++		mxSetM(dataref,rows);
++		mxSetN(dataref,1);                                                                                          
++		mxSetPr(dataref,vector_matlab);           
++	}
++	else{
++		dataref = mxCreateDoubleMatrix(0,0,mxREAL);
++	}
++
++	/*Clean-up and return*/
++	xDelete<int>(vector_ptr);
++	*pdataref=dataref;
++}
++/*}}}*/
+ /*FUNCTION WriteData(mxArray** pdataref,RiftStruct* riftstruct){{{*/
+ void WriteData(mxArray** pdataref,RiftStruct* riftstruct){
+ 
+@@ -362,6 +431,18 @@
+ 	mxSetField(dataref,i,fieldname,field);
+ }
+ /*}}}*/
++/*FUNCTION SetStructureFieldi(mxArray* dataref,int i,const char* fieldname,int M,int N,int* fieldpointer){{{*/
++void SetStructureFieldi(mxArray* dataref,int i,const char* fieldname,int M,int N,int* fieldpointer){
++
++	mxArray* field = NULL;
++
++	/*Convert field*/
++	WriteData(&field,fieldpointer,M,N);
++
++	/*Assign to structure*/
++	mxSetField(dataref,i,fieldname,field);
++}
++/*}}}*/
+ /*FUNCTION SetStructureFieldi(mxArray* dataref,int i,const char* fieldname,int field){{{*/
+ void SetStructureFieldi(mxArray* dataref,int i,const char* fieldname,int fieldin){
+ 
+Index: ../trunk-jpl/src/wrappers/matlab/io/matlabio.h
+===================================================================
+--- ../trunk-jpl/src/wrappers/matlab/io/matlabio.h	(revision 14220)
++++ ../trunk-jpl/src/wrappers/matlab/io/matlabio.h	(revision 14221)
+@@ -16,9 +16,11 @@
+ #include "../../c/Container/Container.h"
+ #include "../../c/include/include.h"
+ 
++void WriteData(mxArray** pdataref,SeqMat<int>* matrix);
+ void WriteData(mxArray** pdataref,SeqMat<double>* matrix);
+ void WriteData(mxArray** pdataref,double* matrix, int M,int N);
+ void WriteData(mxArray** pdataref,int*    matrix, int M,int N);
++void WriteData(mxArray** pdataref,SeqVec<int>* vector);
+ void WriteData(mxArray** pdataref,SeqVec<double>* vector);
+ void WriteData(mxArray** pdataref,double* vector, int M);
+ void WriteData(mxArray** pdataref,int integer);
+@@ -63,6 +65,7 @@
+ mxArray* mxGetAssignedField(const mxArray* pmxa_array,int number, const char* field);
+ void SetStructureField(mxArray* dataref,const char* fieldname,int fieldrows,int fieldcols,double* fieldpointer);
+ void SetStructureFieldi(mxArray* dataref,int i,const char* fieldname,int fieldrows,int fieldcols,double* fieldpointer);
++void SetStructureFieldi(mxArray* dataref,int i,const char* fieldname,int fieldrows,int fieldcols,int*    fieldpointer);
+ void SetStructureFieldi(mxArray* dataref,int i,const char* fieldname,int field);
+ void SetStructureFieldi(mxArray* dataref,int i,const char* fieldname,double field);
+ int CheckNumMatlabArguments(int nlhs,int NLHS, int nrhs,int NRHS, const char* THISFUNCTION, void (*function)( void ));
+Index: ../trunk-jpl/src/wrappers/TriMesh/TriMesh.cpp
+===================================================================
+--- ../trunk-jpl/src/wrappers/TriMesh/TriMesh.cpp	(revision 14220)
++++ ../trunk-jpl/src/wrappers/TriMesh/TriMesh.cpp	(revision 14221)
+@@ -21,11 +21,11 @@
+ 	DataSet *rifts  = NULL;
+ 
+ 	/* output: */
+-	SeqMat<double> *index             = NULL;
++	SeqMat<int>    *index             = NULL;
+ 	SeqVec<double> *x                 = NULL;
+ 	SeqVec<double> *y                 = NULL;
+-	SeqMat<double> *segments          = NULL;
+-	SeqVec<double> *segmentmarkerlist = NULL;
++	SeqMat<int>    *segments          = NULL;
++	SeqVec<int>    *segmentmarkerlist = NULL;
+ 
+ 	/*Boot module: */
+ 	MODULEBOOT();
Index: /issm/oecreview/Archive/14064-14311/ISSM-14221-14222.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14221-14222.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14221-14222.diff	(revision 14312)
@@ -0,0 +1,1130 @@
+Index: ../trunk-jpl/src/c/shared/TriMesh/trimesh.h
+===================================================================
+--- ../trunk-jpl/src/c/shared/TriMesh/trimesh.h	(revision 14221)
++++ ../trunk-jpl/src/c/shared/TriMesh/trimesh.h	(revision 14222)
+@@ -9,26 +9,26 @@
+ #include <math.h>
+ 
+ //#define REAL double //took  it out because it may conflict with stdlib.h defines. put back if necessary
+-int AssociateSegmentToElement(double** psegments,int nseg, double* index,int nel);
+-int OrderSegments(double** psegments,int nseg, double* index,int nel);
++int AssociateSegmentToElement(int** psegments,int nseg,int* index,int nel);
++int OrderSegments(int** psegments,int nseg, int* index,int nel);
+ int GridInsideHole(double* px0,double* py0,int n,double* x,double* y);
+-int FindElement(double A,double B,double* index,int nel);
+-int SplitMeshForRifts(int* pnel,double** pindex,int* pnods,double** px,double** py,int* pnsegs,double** psegments,double** psegmentmarkerlist);
++int FindElement(int A,int B,int* index,int nel);
++int SplitMeshForRifts(int* pnel,int** pindex,int* pnods,double** px,double** py,int* pnsegs,int** psegments,int** psegmentmarkerlist);
+ int IsGridOnRift(int* riftsegments, int nriftsegs, int node);
+ int GridElementsList(int** pGridElements, int* pNumGridElements,int node,double * index,int nel);
+-int IsNeighbor(int el1,int el2,double* index);
++int IsNeighbor(int el1,int el2,int* index);
+ int IsOnRift(int el,int nriftsegs,int* riftsegments);
+-void RiftSegmentsFromSegments(int* pnriftsegs, int** priftsegments, int nel, double* index, int nsegs,double* segments);
+-int DetermineGridElementListOnOneSideOfRift(int* pNumGridElementListOnOneSideOfRift, int** pGridElementListOnOneSideOfRift, int segmentnumber, int nriftsegs, int* riftsegments, int node,double* index,int nel);
+-int UpdateSegments(double** psegments,double** psegmentmarkerlist, int* pnsegs, double* index, double* x,double* y,int* riftsegments,int nriftsegs,int nods,int nel);
+-int FindElement(double A,double B,double* index,int nel);
+-int RemoveRifts(double** pindex,double** px,double** py,int* pnods,double** psegments,int* pnumsegs,int numrifts1,int* rifts1numsegs,double** rifts1segments,double** rifts1pairs,int nel);
+-int IsRiftPresent(int* priftflag,int* pnumrifts, double* segmentmarkerlist,int nsegs);
+-int SplitRiftSegments(double** psegments,double** psegmentmarkerlist, int* pnumsegs, int* pnumrifts,int** priftsnumsegs,double*** priftssegments,int numrifts,int nods,int nels);
+-int OrderRifts(double** priftstips, double** riftssegments,double** riftspairs,int numrifts,int* riftsnumsegments,double* x,double* y,int nods,int nels);
+-int PenaltyPairs(double*** priftspenaltypairs,int** priftsnumpenaltypairs,int numrifts,double**  riftssegments,
+-		int* riftsnumsegments,double** riftspairs,double* riftstips,double* x,double* y);
+-int RemoveCornersFromRifts(double** pindex,int* pnel,double** px,double** py,int* pnods, double* segments,double* segmentmarkers,int num_seg);
+-int PairRiftElements(int** priftsnumpairs, double*** priftspairs,int numrifts,int* riftsnumsegments, double** riftssegments,double* x,double* y);
++void RiftSegmentsFromSegments(int* pnriftsegs, int** priftsegments, int nel,int* index, int nsegs,int* segments);
++int DetermineGridElementListOnOneSideOfRift(int* pNumGridElementListOnOneSideOfRift, int** pGridElementListOnOneSideOfRift,int segmentnumber, int nriftsegs,int* riftsegments, int node,int* index,int nel);
++int UpdateSegments(int** psegments,int** psegmentmarkerlist, int* pnsegs,int* index, double* x,double* y,int* riftsegments,int nriftsegs,int nods,int nel);
++int FindElement(double A,double B,int* index,int nel);
++int RemoveRifts(int** pindex,double** px,double** py,int* pnods,int** psegments,int* pnumsegs,int numrifts1,int* rifts1numsegs,int** rifts1segments,double** rifts1pairs,int nel);
++int IsRiftPresent(int* priftflag,int* pnumrifts,int* segmentmarkerlist,int nsegs);
++int SplitRiftSegments(int** psegments,int** psegmentmarkerlist, int* pnumsegs, int* pnumrifts,int** priftsnumsegs,int*** priftssegments,int numrifts,int nods,int nels);
++int OrderRifts(int** priftstips,int** riftssegments,int** riftspairs,int numrifts,int* riftsnumsegments,double* x,double* y,int nods,int nels);
++int PenaltyPairs(double*** priftspenaltypairs,int** priftsnumpenaltypairs,int numrifts,int**  riftssegments,
++		int* riftsnumsegments,int** riftspairs,int* riftstips,double* x,double* y);
++int RemoveCornersFromRifts(int** pindex,int* pnel,double** px,double** py,int* pnods,int* segments,int* segmentmarkers,int num_seg);
++int PairRiftElements(int** priftsnumpairs,int*** priftspairs,int numrifts,int* riftsnumsegments,int** riftssegments,double* x,double* y);
+ 
+ #endif  /* _SHARED_TRIMESH_H */
+Index: ../trunk-jpl/src/c/shared/TriMesh/OrderSegments.cpp
+===================================================================
+--- ../trunk-jpl/src/c/shared/TriMesh/OrderSegments.cpp	(revision 14221)
++++ ../trunk-jpl/src/c/shared/TriMesh/OrderSegments.cpp	(revision 14222)
+@@ -4,27 +4,21 @@
+  */
+ #include "./trimesh.h"
+ 
+-int OrderSegments(double** psegments,int nseg, double* index,int nel){
++int OrderSegments(int** psegments,int nseg,int* index,int nel){
+ 
+-	/*Error management: */
+-	int i;
+-	int noerr=1;
++	/*vertex indices: */
++	int A,B;
+ 
+-	/*Input: */
+-	double* segments=NULL;
+-
+-	/*vertex indices: */
+-	double A,B;
+-	/*element indices: */
++	/*element index*/
+ 	int el;
+ 
+ 	/*Recover segments: */
+-	segments=*psegments;
++	int* segments=*psegments;
+ 
+-	for (i=0;i<nseg;i++){
++	for(int i=0;i<nseg;i++){
+ 		A=segments[3*i+0];
+ 		B=segments[3*i+1];
+-		el=(int)segments[3*i+2]-1; //after AssociateSegmentToElement, el was a matlab index, we need the c index now.
++		el=segments[3*i+2]-1; //after AssociateSegmentToElement, el was a matlab index, we need the c index now.
+ 
+ 		if (index[3*el+0]==A){
+ 			if (index[3*el+2]==B){
+@@ -48,5 +42,5 @@
+ 
+ 	/*Assign output pointers: */
+ 	*psegments=segments;
+-	return noerr;
++	return 1;
+ }
+Index: ../trunk-jpl/src/c/shared/TriMesh/SplitMeshForRifts.cpp
+===================================================================
+--- ../trunk-jpl/src/c/shared/TriMesh/SplitMeshForRifts.cpp	(revision 14221)
++++ ../trunk-jpl/src/c/shared/TriMesh/SplitMeshForRifts.cpp	(revision 14222)
+@@ -5,46 +5,31 @@
+ #include "../Alloc/xNewDelete.h"
+ #include "../Alloc/alloc.h"
+ 
+-int SplitMeshForRifts(int* pnel,double** pindex,int* pnods,double** px,double** py,int* pnsegs,double** psegments,double** psegmentmarkerlist){
++int SplitMeshForRifts(int* pnel,int** pindex,int* pnods,double** px,double** py,int* pnsegs,int** psegments,int** psegmentmarkerlist){
+ 
+ 	/*Some notes on dimensions: 
+ 	index  of size nelx3
+ 	x and y of size nodsx1
+ 	segments of size nsegsx3*/
+ 
+-	/*Error management: */
+-	int noerr=1;
+-
+ 	int i,j,k,l;
+ 	int node;
+ 	int el;
+-
+ 	int  nriftsegs;
+ 	int* riftsegments=NULL; 
+ 	int* flags=NULL;
+-
+ 	int  NumGridElementListOnOneSideOfRift;
+ 	int* GridElementListOnOneSideOfRift=NULL;
+ 
+-	/*Input: */
+-	int     nel;
+-	double* index=NULL;
+-	int     nods;
+-	double* x=NULL;
+-	double* y=NULL;
+-	double* segments=NULL;
+-	double*    segmentmarkerlist=NULL;
+-	int     nsegs;
+-
+ 	/*Recover input: */
+-	nel=*pnel;
+-	index=*pindex;
+-	nods=*pnods;
+-	x=*px;
+-	y=*py;
+-	nsegs=*pnsegs;
+-	segments=*psegments;
+-	segmentmarkerlist=*psegmentmarkerlist;
++	int     nel               = *pnel;
++	int    *index             = *pindex;
++	int     nods              = *pnods;
++	double *x                 = *px;
++	double *y                 = *py;
++	int     nsegs             = *pnsegs;
++	int    *segments          = *psegments;
++	int    *segmentmarkerlist = *psegmentmarkerlist;
+ 
+ 	/*Establish list of segments that belong to a rift: */
+ 	/*riftsegments of size nriftsegsx4 (4 for first element on segment,second element,first node and second snode)*/
+@@ -89,7 +74,7 @@
+ 				for (k=0;k<NumGridElementListOnOneSideOfRift;k++){
+ 					el=GridElementListOnOneSideOfRift[k];
+ 					for (l=0;l<3;l++){
+-						if (*(index+3*el+l)==node)*(index+3*el+l)=nods; //again, matlab indexing.
++						if (index[3*el+l]==node) index[3*el+l]=nods; //again, matlab indexing.
+ 					}
+ 				}
+ 			}// if(IsGridOnRift(riftsegments,nriftsegs,node))
+@@ -108,5 +93,5 @@
+ 	*pnsegs=nsegs;
+ 	*psegments=segments;
+ 	*psegmentmarkerlist=segmentmarkerlist;
+-	return noerr;
++	return 1;
+ }
+Index: ../trunk-jpl/src/c/shared/TriMesh/AssociateSegmentToElement.cpp
+===================================================================
+--- ../trunk-jpl/src/c/shared/TriMesh/AssociateSegmentToElement.cpp	(revision 14221)
++++ ../trunk-jpl/src/c/shared/TriMesh/AssociateSegmentToElement.cpp	(revision 14222)
+@@ -4,28 +4,21 @@
+ 
+ #include "./trimesh.h"
+ 
+-int AssociateSegmentToElement(double** psegments,int nseg, double* index,int nel){
++int AssociateSegmentToElement(int** psegments,int nseg,int* index,int nel){
+ 
+-	/*Error management: */
+-	int i;
+-	int noerr=1;
+-
+-	/*Input: */
+-	double* segments=NULL;
+-
+ 	/*node indices: */
+-	double A,B;
++	int A,B;
+ 
+ 	/*Recover segments: */
+-	segments=*psegments;
++	int* segments=*psegments;
+ 
+-	for (i=0;i<nseg;i++){
+-		A=*(segments+3*i+0);
+-		B=*(segments+3*i+1);
+-		*(segments+3*i+2)=FindElement(A,B,index,nel)+1; //matlab indexing.
++	for(int i=0;i<nseg;i++){
++		A=segments[3*i+0];
++		B=segments[3*i+1];
++		segments[3*i+2]=FindElement(A,B,index,nel)+1; //matlab indexing.
+ 	}
+ 
+ 	/*Assign output pointers: */
+ 	*psegments=segments;
+-	return noerr;
++	return 1;
+ }
+Index: ../trunk-jpl/src/c/shared/TriMesh/TriMeshUtils.cpp
+===================================================================
+--- ../trunk-jpl/src/c/shared/TriMesh/TriMeshUtils.cpp	(revision 14221)
++++ ../trunk-jpl/src/c/shared/TriMesh/TriMeshUtils.cpp	(revision 14222)
+@@ -35,7 +35,7 @@
+ 	}
+ }/*}}}*/
+ /*FUNCTION GridElementsList{{{*/
+-int GridElementsList(int** pGridElements, int* pNumGridElements,int node,double * index,int nel){
++int GridElementsList(int** pGridElements, int* pNumGridElements,int node,int* index,int nel){
+ 
+ 	/*From a node, recover all the elements that are connected to it: */
+ 	int i,j;
+@@ -57,7 +57,7 @@
+ 
+ 	for (i=0;i<nel;i++){
+ 		for (j=0;j<3;j++){
+-			if ((int)*(index+3*i+j)==node){
++			if (index[3*i+j]==node){
+ 				if (NumGridElements<=(current_size-1)){
+ 					GridElements[NumGridElements]=i;
+ 					NumGridElements++;
+@@ -89,13 +89,13 @@
+ 	return noerr;
+ }/*}}}*/
+ /*FUNCTION IsNeighbor{{{*/
+-int IsNeighbor(int el1,int el2,double* index){
++int IsNeighbor(int el1,int el2,int* index){
+ 	/*From a triangulation held in index, figure out if elements 1 and 2 have two nodes in common: */
+ 	int i,j;
+ 	int count=0;
+ 	for (i=0;i<3;i++){
+ 		for (j=0;j<3;j++){
+-			if (*(index+3*el1+i)==*(index+3*el2+j))count++;
++			if (index[3*el1+i]==index[3*el2+j])count++;
+ 		}
+ 	}
+ 	if (count==2){
+@@ -117,7 +117,7 @@
+ 	return 0;
+ }/*}}}*/
+ /*FUNCTION RiftSegmentsFromSegments{{{*/
+-void RiftSegmentsFromSegments(int* pnriftsegs, int** priftsegments, int nel, double* index, int nsegs,double* segments){
++void RiftSegmentsFromSegments(int* pnriftsegs, int** priftsegments, int nel,int* index,int nsegs,int* segments){
+ 
+ 	int i,counter;
+ 	int el,el2;
+@@ -125,7 +125,7 @@
+ 	int  nriftsegs;
+ 	int* riftsegments=NULL;
+ 	int* riftsegments_uncompressed=NULL; 
+-	double element_nodes[3];
++	int  element_nodes[3];
+ 
+ 	/*Allocate segmentflags: */
+ 	riftsegments_uncompressed=xNewZeroInit<int>(nsegs*5);
+@@ -142,25 +142,25 @@
+ 		element_nodes[1]=*(index+3*el+1);
+ 		element_nodes[2]=*(index+3*el+2);
+ 
+-		*(index+3*el+0)=-1;
+-		*(index+3*el+1)=-1;
+-		*(index+3*el+2)=-1;
++		index[3*el+0]=-1;
++		index[3*el+1]=-1;
++		index[3*el+2]=-1;
+ 
+ 		el2=FindElement(*(segments+3*i+0),*(segments+3*i+1),index,nel); 
+ 
+ 		/*Restore index: */
+-		*(index+3*el+0)=element_nodes[0];
+-		*(index+3*el+1)=element_nodes[1];
+-		*(index+3*el+2)=element_nodes[2];
++		index[3*el+0]=element_nodes[0];
++		index[3*el+1]=element_nodes[1];
++		index[3*el+2]=element_nodes[2];
+ 
+ 		if (el2!=-1){
+ 			/*el and el2 are on a segment rift, facing one another, plug them into riftsegments_uncompressed: */
+-		    *(riftsegments_uncompressed+5*i+0)=1;
+-		    *(riftsegments_uncompressed+5*i+1)=el;
+-		    *(riftsegments_uncompressed+5*i+2)=el2;
+-		    *(riftsegments_uncompressed+5*i+3)=(int)*(segments+3*i+0);
+-		    *(riftsegments_uncompressed+5*i+4)=(int)*(segments+3*i+1);
+-			nriftsegs++;
++		    riftsegments_uncompressed[5*i+0]=1;
++		    riftsegments_uncompressed[5*i+1]=el;
++		    riftsegments_uncompressed[5*i+2]=el2;
++		    riftsegments_uncompressed[5*i+3]=segments[3*i+0];
++			 riftsegments_uncompressed[5*i+4]=segments[3*i+1];
++			 nriftsegs++;
+ 		}
+ 	}
+ 
+@@ -168,15 +168,14 @@
+ 	riftsegments=xNew<int>(nriftsegs*4);
+ 	counter=0;
+ 	for (i=0;i<nsegs;i++){
+-		if (*(riftsegments_uncompressed+5*i+0)){
+-			*(riftsegments+counter*4+0)=*(riftsegments_uncompressed+5*i+1);
+-			*(riftsegments+counter*4+1)=*(riftsegments_uncompressed+5*i+2);
+-			*(riftsegments+counter*4+2)=*(riftsegments_uncompressed+5*i+3);
+-			*(riftsegments+counter*4+3)=*(riftsegments_uncompressed+5*i+4);
++		if (riftsegments_uncompressed[5*i+0]){
++			riftsegments[counter*4+0]=riftsegments_uncompressed[5*i+1];
++			riftsegments[counter*4+1]=riftsegments_uncompressed[5*i+2];
++			riftsegments[counter*4+2]=riftsegments_uncompressed[5*i+3];
++			riftsegments[counter*4+3]=riftsegments_uncompressed[5*i+4];
+ 			counter++;
+ 		}
+ 	}
+-
+ 	xDelete<int>(riftsegments_uncompressed);
+ 
+ 	/*Assign output pointers: */
+@@ -184,7 +183,7 @@
+ 	*pnriftsegs=nriftsegs;
+ }/*}}}*/
+ /*FUNCTION DetermineGridElementListOnOneSideOfRift{{{*/
+-int DetermineGridElementListOnOneSideOfRift(int* pNumGridElementListOnOneSideOfRift, int** pGridElementListOnOneSideOfRift, int segmentnumber, int nriftsegs, int* riftsegments, int node,double* index,int nel){
++int DetermineGridElementListOnOneSideOfRift(int* pNumGridElementListOnOneSideOfRift, int** pGridElementListOnOneSideOfRift, int segmentnumber, int nriftsegs, int* riftsegments, int node,int* index,int nel){
+ 
+ 	int noerr=1;
+ 	int k,l,counter;
+@@ -248,15 +247,15 @@
+ 	return noerr;
+ }/*}}}*/
+ /*FUNCTION UpdateSegments{{{*/
+-int UpdateSegments(double** psegments,double** psegmentmarkerlist, int* pnsegs, double* index, double* x,double* y,int* riftsegments,int nriftsegs,int nods,int nel){
++int UpdateSegments(int** psegments,int** psegmentmarkerlist, int* pnsegs,int* index, double* x,double* y,int* riftsegments,int nriftsegs,int nods,int nel){
+ 
+ 	int noerr=1;
+ 	int i,j,k;
+ 	int el1,el2;
+ 
+-	double *segments          = NULL;
+-	double *segmentmarkerlist = NULL;
+-	int     nsegs;
++	int *segments          = NULL;
++	int *segmentmarkerlist = NULL;
++	int  nsegs;
+ 
+ 	/*Recover input: */
+ 	segments          = *psegments;
+@@ -264,8 +263,8 @@
+ 	nsegs             = *pnsegs;
+ 
+ 	/*Reallocate segments: */
+-	segments         =xReNew<double>(segments,         nsegs*3,(nsegs+nriftsegs)*3);
+-	segmentmarkerlist=xReNew<double>(segmentmarkerlist,nsegs,(nsegs+nriftsegs));
++	segments         =xReNew<int>(segments,         nsegs*3,(nsegs+nriftsegs)*3);
++	segmentmarkerlist=xReNew<int>(segmentmarkerlist,nsegs,(nsegs+nriftsegs));
+ 
+ 	/*First, update the existing segments to the new nodes :*/
+ 	for (i=0;i<nriftsegs;i++){
+@@ -277,13 +276,13 @@
+ 				 *Because riftsegments does not represent a list of rift segments anymore (it got heavily modified in SplitElementsForRifts, 
+ 				 *we can only rely on the position (x,y) of the rift nodes to create a segment:*/
+ 				for (k=0;k<3;k++){
+-					if ((x[(int)*(index+el1*3+k)-1]==x[(int)*(segments+3*j+0)-1]) && (y[(int)*(index+el1*3+k)-1]==y[(int)*(segments+3*j+0)-1])){
++					if ((x[*(index+el1*3+k)-1]==x[*(segments+3*j+0)-1]) && (y[*(index+el1*3+k)-1]==y[*(segments+3*j+0)-1])){
+ 						*(segments+3*j+0)=*(index+el1*3+k); _assert_(segments[3*j+0]<nods+1);
+ 						break;
+ 					}
+ 				}
+ 				for (k=0;k<3;k++){
+-					if ((x[(int)*(index+el1*3+k)-1]==x[(int)*(segments+3*j+1)-1])  && (y[(int)*(index+el1*3+k)-1]==y[(int)*(segments+3*j+1)-1])){
++					if ((x[*(index+el1*3+k)-1]==x[*(segments+3*j+1)-1])  && (y[*(index+el1*3+k)-1]==y[*(segments+3*j+1)-1])){
+ 						*(segments+3*j+1)=*(index+el1*3+k); _assert_(segments[3*j+1]<nods+1);
+ 						break;
+ 					}
+@@ -292,13 +291,13 @@
+ 				*(segments+3*(nsegs+i)+2)=el2+1;
+ 				*(segmentmarkerlist+(nsegs+i))=*(segmentmarkerlist+j);
+ 				for (k=0;k<3;k++){
+-					if ((x[(int)*(index+el2*3+k)-1]==x[(int)*(segments+3*j+0)-1]) && (y[(int)*(index+el2*3+k)-1]==y[(int)*(segments+3*j+0)-1])){
++					if ((x[*(index+el2*3+k)-1]==x[*(segments+3*j+0)-1]) && (y[*(index+el2*3+k)-1]==y[*(segments+3*j+0)-1])){
+ 						*(segments+3*(nsegs+i)+0)=*(index+el2*3+k); _assert_(segments[3*(nsegs+i)+0]<nods+1);
+ 						break;
+ 					}
+ 				}
+ 				for (k=0;k<3;k++){
+-					if ((x[(int)*(index+el2*3+k)-1]==x[(int)*(segments+3*j+1)-1]) && (y[(int)*(index+el2*3+k)-1]==y[(int)*(segments+3*j+1)-1])){
++					if ((x[*(index+el2*3+k)-1]==x[*(segments+3*j+1)-1]) && (y[*(index+el2*3+k)-1]==y[*(segments+3*j+1)-1])){
+ 						*(segments+3*(nsegs+i)+1)=*(index+el2*3+k); _assert_(segments[3*(nsegs+i)+1]<nods+1);
+ 						break;
+ 					}
+@@ -308,13 +307,13 @@
+ 				/*segment j is the same as rift segment i.*/
+ 				/*Let's update segments[j][:] using  element el2 and the corresponding rift segment: */
+ 				for (k=0;k<3;k++){
+-					if ((x[(int)*(index+el2*3+k)-1]==x[(int)*(segments+3*j+0)-1]) && (y[(int)*(index+el2*3+k)-1]==y[(int)*(segments+3*j+0)-1])){
++					if ((x[*(index+el2*3+k)-1]==x[*(segments+3*j+0)-1]) && (y[*(index+el2*3+k)-1]==y[*(segments+3*j+0)-1])){
+ 						*(segments+3*j+0)=*(index+el2*3+k); _assert_(segments[3*j+0]<nods+1);
+ 						break;
+ 					}
+ 				}
+ 				for (k=0;k<3;k++){
+-					if ((x[(int)*(index+el2*3+k)-1]==x[(int)*(segments+3*j+1)-1]) && (y[(int)*(index+el2*3+k)-1]==y[(int)*(segments+3*j+1)-1])){
++					if ((x[*(index+el2*3+k)-1]==x[*(segments+3*j+1)-1]) && (y[*(index+el2*3+k)-1]==y[*(segments+3*j+1)-1])){
+ 						*(segments+3*j+1)=*(index+el2*3+k);_assert_(segments[3*j+1]<nods+1);
+ 						break;
+ 					}
+@@ -323,13 +322,13 @@
+ 				*(segments+3*(nsegs+i)+2)=el1+1;
+ 				*(segmentmarkerlist+(nsegs+i))=*(segmentmarkerlist+j);
+ 				for (k=0;k<3;k++){
+-					if ((x[(int)*(index+el1*3+k)-1]==x[(int)*(segments+3*j+0)-1]) && (y[(int)*(index+el1*3+k)-1]==y[(int)*(segments+3*j+0)-1])){
++					if ((x[*(index+el1*3+k)-1]==x[*(segments+3*j+0)-1]) && (y[*(index+el1*3+k)-1]==y[*(segments+3*j+0)-1])){
+ 						*(segments+3*(nsegs+i)+0)=*(index+el1*3+k);_assert_(segments[3*(nsegs+i)+0]<nods+1);
+ 						break;
+ 					}
+ 				}
+ 				for (k=0;k<3;k++){
+-					if ((x[(int)*(index+el1*3+k)-1]==x[(int)*(segments+3*j+1)-1]) && (y[(int)*(index+el1*3+k)-1]==y[(int)*(segments+3*j+1)-1])){
++					if ((x[*(index+el1*3+k)-1]==x[*(segments+3*j+1)-1]) && (y[*(index+el1*3+k)-1]==y[*(segments+3*j+1)-1])){
+ 						*(segments+3*(nsegs+i)+1)=*(index+el1*3+k);_assert_(segments[3*(nsegs+i)+1]<nods+1);
+ 						break;
+ 					}
+@@ -347,12 +346,11 @@
+ 	return noerr;
+ }/*}}}*/
+ /*FUNCTION FindElement{{{*/
+-int FindElement(double A,double B,double* index,int nel){
++int FindElement(int A,int B,int* index,int nel){
+ 
+-	int n;
+ 	int el=-1;
+-	for (n=0;n<nel;n++){
+-		if (((*(index+3*n+0)==A)  || (*(index+3*n+1)==A) || (*(index+3*n+2)==A) ) && ((*(index+3*n+0)==B)  || (*(index+3*n+1)==B) || (*(index+3*n+2)==B))){
++	for (int n=0;n<nel;n++){
++		if(((index[3*n+0]==A) || (index[3*n+1]==A) || (index[3*n+2]==A)) && ((index[3*n+0]==B) || (index[3*n+1]==B) || (index[3*n+2]==B))){
+ 			el=n;
+ 			break;
+ 		}
+@@ -360,7 +358,7 @@
+ 	return el;
+ }/*}}}*/
+ /*FUNCTION SplitRiftSegments{{{*/
+-int SplitRiftSegments(double** psegments,double** psegmentmarkerlist, int* pnumsegs, int* pnumrifts,int** priftsnumsegs,double*** priftssegments,int numrifts,int nods,int nel){
++int SplitRiftSegments(int** psegments,int** psegmentmarkerlist, int* pnumsegs, int* pnumrifts,int** priftsnumsegs,int*** priftssegments,int numrifts,int nods,int nel){
+ 
+ 	/*Using segment markers, wring out the rift segments from the segments. Rift markers are 
+ 	 *of the form 2+i where i=0 to number of rifts */
+@@ -369,24 +367,24 @@
+ 	int i,j,counter;
+ 
+ 	/*input: */
+-	double *segments          = NULL;
+-	double *segmentmarkerlist = NULL;
++	int *segments          = NULL;
++	int *segmentmarkerlist = NULL;
+ 	int numsegs;
+ 
+ 	/*output: */
+-	int      new_numsegs;
+-	int     *riftsnumsegs       = NULL;
+-	double **riftssegments      = NULL;
+-	double  *new_segments       = NULL;
+-	double  *new_segmentmarkers = NULL;
++	int   new_numsegs;
++	int  *riftsnumsegs       = NULL;
++	int **riftssegments      = NULL;
++	int  *new_segments       = NULL;
++	int  *new_segmentmarkers = NULL;
+ 
+ 	/*intermediary: */
+-	double* riftsegment=NULL;
++	int* riftsegment=NULL;
+ 
+ 	/*Recover input arguments: */
+-	segments=*psegments;
+-	numsegs=*pnumsegs;
+-	segmentmarkerlist=*psegmentmarkerlist;
++	segments          = *psegments;
++	numsegs           = *pnumsegs;
++	segmentmarkerlist = *psegmentmarkerlist;
+ 
+ 	/*First, figure out  how many segments will be left in 'segments': */
+ 	counter=0;
+@@ -395,8 +393,8 @@
+ 	}
+ 	/*Allocate new segments: */
+ 	new_numsegs=counter;
+-	new_segments=xNew<double>(new_numsegs*3);
+-	new_segmentmarkers=xNew<double>(new_numsegs);
++	new_segments=xNew<int>(new_numsegs*3);
++	new_segmentmarkers=xNew<int>(new_numsegs);
+ 
+ 	/*Copy new segments info : */
+ 	counter=0;
+@@ -412,7 +410,7 @@
+ 
+ 	/*Now deal with rift segments: */
+ 	riftsnumsegs=xNew<int>(numrifts);
+-	riftssegments=xNew<double*>(numrifts);
++	riftssegments=xNew<int*>(numrifts);
+ 	for (i=0;i<numrifts;i++){
+ 		/*Figure out how many segments for rift i: */
+ 		counter=0;
+@@ -420,7 +418,7 @@
+ 			if (segmentmarkerlist[j]==2+i)counter++;
+ 		}
+ 		riftsnumsegs[i]=counter;
+-		riftsegment=xNew<double>(counter*3);
++		riftsegment=xNew<int>(counter*3);
+ 		/*Copy new segments info :*/
+ 		counter=0;
+ 		for (j=0;j<numsegs;j++){
+@@ -435,7 +433,7 @@
+ 	}
+ 
+ 	/*Free ressources: */
+-	xDelete<double>(segments);
++	xDelete<int>(segments);
+ 
+ 	/*Assign output pointers: */
+ 	*psegments=new_segments;
+@@ -447,40 +445,40 @@
+ 	return noerr;
+ }/*}}}*/
+ /*FUNCTION PairRiftElements{{{*/
+-int PairRiftElements(int** priftsnumpairs, double*** priftspairs,int numrifts,int* riftsnumsegments, double** riftssegments,double* x,double* y){
++int PairRiftElements(int** priftsnumpairs,int*** priftspairs,int numrifts,int* riftsnumsegments,int** riftssegments,double* x,double* y){
+ 
+ 	int noerr=1;
+ 	int i,j,k;
+ 
+ 	/*output: */
+-	int     *riftsnumpairs = NULL;
+-	double **riftspairs    = NULL;
++	int  *riftsnumpairs = NULL;
++	int **riftspairs    = NULL;
+ 
+ 	/*intermediary :*/
+-	int     numsegs;
+-	double* segments=NULL;
+-	double* pairs=NULL;
+-	int     node1,node2,node3,node4;
++	int  numsegs;
++	int* segments=NULL;
++	int* pairs=NULL;
++	int  node1,node2,node3,node4;
+ 
+ 	riftsnumpairs=xNew<int>(numrifts);
+-	riftspairs=xNew<double*>(numrifts);
++	riftspairs=xNew<int*>(numrifts);
+ 	for (i=0;i<numrifts;i++){
+ 		segments=riftssegments[i];
+-		numsegs=riftsnumsegments[i];
++		numsegs =riftsnumsegments[i];
+ 		riftsnumpairs[i]=numsegs;
+-		pairs=xNew<double>(2*numsegs);
++		pairs=xNew<int>(2*numsegs);
+ 		for (j=0;j<numsegs;j++){
+-			*(pairs+2*j+0)=*(segments+3*j+2); //retrieve element to which this segment belongs.
+-			node1=(int)*(segments+3*j+0)-1; node2=(int)*(segments+3*j+1)-1;
++			pairs[2*j+0]=segments[3*j+2]; //retrieve element to which this segment belongs.
++			node1=segments[3*j+0]-1; node2=segments[3*j+1]-1;
+ 			/*Find element facing on other side of rift: */
+ 			for (k=0;k<numsegs;k++){
+ 				if (k==j)continue;
+-				node3=(int)*(segments+3*k+0)-1; node4=(int)*(segments+3*k+1)-1;
++				node3=segments[3*k+0]-1; node4=segments[3*k+1]-1;
+ 				/*We are trying to find 2 elements, where position of node3 == position of node1, and position of node4 == position of node2*/
+ 				if (   (x[node3]==x[node1]) && (y[node3]==y[node1]) && (x[node4]==x[node2]) && (y[node4]==y[node2])
+ 				    || (x[node3]==x[node2]) && (y[node3]==y[node2]) && (x[node4]==x[node1]) && (y[node4]==y[node1])  ){
+ 					/*We found the corresponding element: */
+-					*(pairs+2*j+1)=*(segments+3*k+2);
++					pairs[2*j+1]=segments[3*k+2];
+ 					break;
+ 				}
+ 			}
+@@ -494,24 +492,16 @@
+ 	return noerr;
+ }/*}}}*/
+ /*FUNCTION RemoveRifts{{{*/
+-int RemoveRifts(double** pindex,double** px,double** py,int* pnods,double** psegments,int* pnumsegs,int numrifts1,int* rifts1numsegs,double** rifts1segments,double** rifts1pairs,int nel){
++int RemoveRifts(int** pindex,double** px,double** py,int* pnods,int** psegments,int* pnumsegs,int numrifts1,int* rifts1numsegs,int** rifts1segments,int** rifts1pairs,int nel){
+ 
+ 	int noerr=1;
+ 	int i,j,k,counter,counter1,counter2;
+ 
+-	/*input: */
+-	double* index=NULL;
+-	double* x=NULL;
+-	double* y=NULL;
+-	int     nods;
+-	double* segments=NULL;
+-	int     numsegs;
+-
+ 	/*intermediary: */
+-	double *riftsegments = NULL;
+-	double *riftpairs    = NULL;
++	int    *riftsegments = NULL;
++	int    *riftpairs    = NULL;
+ 	int     node1,node2,node3,node4,temp_node;
+-	double  el2;
++	int     el2;
+ 	int     newnods; //temporary # node counter.
+ 	double  xmin,ymin;
+ 	double *xreal        = NULL;
+@@ -522,12 +512,12 @@
+ 	int     redundant;
+ 
+ 	/*Recover input: */
+-	index=*pindex;
+-	x=*px;
+-	y=*py;
+-	nods=*pnods;;
+-	segments=*psegments;
+-	numsegs=*pnumsegs;
++	int    *index    = *pindex;
++	double *x        = *px;
++	double *y        = *py;
++	int     nods     = *pnods;     ;
++	int    *segments = *psegments;
++	int     numsegs  = *pnumsegs;
+ 
+ 	/*initialize newnods : */
+ 	newnods=nods;
+@@ -557,15 +547,15 @@
+ 		riftsegments=rifts1segments[i];
+ 		riftpairs=rifts1pairs[i];
+ 		for (j=0;j<rifts1numsegs[i];j++){
+-			el2=*(riftpairs+2*j+1);
++			el2=riftpairs[2*j+1];
+ 			node1=(int)*(riftsegments+3*j+0);
+ 			node2=(int)*(riftsegments+3*j+1);
+ 			/*Summary, el1 and el2 are facing one another across the rift. node1 and node2 belong to el1 and 
+ 			 *are located on the rift. Find node3 and node4, nodes belonging to el2 and located on the rift: */
+ 			for (k=0;k<rifts1numsegs[i];k++){
+ 				if (*(riftsegments+3*k+2)==el2){
+-					node3=(int)*(riftsegments+3*k+0);
+-					node4=(int)*(riftsegments+3*k+1);
++					node3=*(riftsegments+3*k+0);
++					node4=*(riftsegments+3*k+1);
+ 					break;
+ 				}
+ 			}
+@@ -676,7 +666,7 @@
+ 	return noerr;
+ }/*}}}*/
+ /*FUNCTION IsRiftPresent{{{*/
+-int IsRiftPresent(int* priftflag,int* pnumrifts, double* segmentmarkerlist,int nsegs){
++int IsRiftPresent(int* priftflag,int* pnumrifts,int* segmentmarkerlist,int nsegs){
+ 
+ 	int i;
+ 	int noerr=1;
+@@ -685,7 +675,7 @@
+ 	int riftflag=0;
+ 	int numrifts=0;
+ 
+-	double maxmark=1; //default marker for regular segments
++	int maxmark=1; //default marker for regular segments
+ 
+ 	/*Any marker >=2 indicates a certain rift: */
+ 	numrifts=0;
+@@ -695,7 +685,7 @@
+ 			maxmark=segmentmarkerlist[i];
+ 		}
+ 	}
+-	if (numrifts)riftflag=1;
++	if(numrifts)riftflag=1;
+ 
+ 	/*Assign output pointers:*/
+ 	*priftflag=riftflag;
+@@ -703,42 +693,42 @@
+ 	return noerr;
+ }/*}}}*/
+ /*FUNCTION OrderRifts{{{*/
+-int OrderRifts(double** priftstips, double** riftssegments,double** riftspairs,int numrifts,int* riftsnumsegments,double* x,double* y,int nods,int nels){
++int OrderRifts(int** priftstips,int** riftssegments,int** riftspairs,int numrifts,int* riftsnumsegments,double* x,double* y,int nods,int nels){
+ 
+ 	int noerr=1;
+ 	int i,j,k,counter;
+ 
+ 	/*intermediary: */
+-	double *riftsegments = NULL;
+-	double *riftpairs    = NULL;
++	int *riftsegments = NULL;
++	int *riftpairs    = NULL;
+ 	int numsegs;
+ 
+ 	/*ordering and copy: */
+-	int    *order             = NULL;
+-	double *riftsegments_copy = NULL;
+-	double *riftpairs_copy    = NULL;
++	int *order             = NULL;
++	int *riftsegments_copy = NULL;
++	int *riftpairs_copy    = NULL;
+ 
+ 	/*node and element manipulation: */
+-	int     node1,node2,node3,node4,temp_node,tip1,tip2,node;
+-	double  el2;
+-	int     already_ordered=0;
++	int node1,node2,node3,node4,temp_node,tip1,tip2,node;
++	int el2;
++	int already_ordered=0;
+ 
+ 	/*output: */
+-	double* riftstips=NULL;
++	int* riftstips=NULL;
+ 
+ 	/*Allocate byproduct of this routine, riftstips: */
+-	riftstips=xNew<double>(numrifts*2);
++	riftstips=xNew<int>(numrifts*2);
+ 
+ 	/*Go through all rifts: */
+ 	for (i=0;i<numrifts;i++){
+-		riftsegments=riftssegments[i];
+-		riftpairs=riftspairs[i];
+-		numsegs=riftsnumsegments[i];
++		riftsegments = riftssegments[i];
++		riftpairs    = riftspairs[i];
++		numsegs      = riftsnumsegments[i];
+ 
+ 		/*Allocate copy of riftsegments and riftpairs, 
+ 		 *as well as ordering vector: */
+-		riftsegments_copy=xNew<double>(numsegs*3);
+-		riftpairs_copy=xNew<double>(numsegs*2);
++		riftsegments_copy=xNew<int>(numsegs*3);
++		riftpairs_copy=xNew<int>(numsegs*2);
+ 		order=xNew<int>(numsegs);
+ 
+ 		/*First find the tips, using the pairs. If a pair of elements has one node in common, this node is a rift tip: */
+@@ -747,14 +737,14 @@
+ 
+ 		for (j=0;j<numsegs;j++){
+ 			el2=*(riftpairs+2*j+1);
+-			node1=(int)*(riftsegments+3*j+0);
+-			node2=(int)*(riftsegments+3*j+1);
++			node1=*(riftsegments+3*j+0);
++			node2=*(riftsegments+3*j+1);
+ 			/*Summary, el1 and el2 are facing one another across the rift. node1 and node2 belong to el1 and 
+ 			 *are located on the rift. Find node3 and node4, nodes belonging to el2 and located on the rift: */
+ 			for (k=0;k<numsegs;k++){
+ 				if (*(riftsegments+3*k+2)==el2){
+-					node3=(int)*(riftsegments+3*k+0);
+-					node4=(int)*(riftsegments+3*k+1);
++					node3=*(riftsegments+3*k+0);
++					node4=*(riftsegments+3*k+1);
+ 					break;
+ 				}
+ 			}
+@@ -795,16 +785,16 @@
+ 		}
+ 
+ 		/*Record tips in riftstips: */
+-		*(riftstips+2*i+0)=(double)tip1;
+-		*(riftstips+2*i+1)=(double)tip2;
++		*(riftstips+2*i+0)=tip1;
++		*(riftstips+2*i+1)=tip2;
+ 
+ 		/*We have the two tips for this rift.  Go from tip1 to tip2, and figure out the order in which segments are sequential. 
+ 		 *Because two elements are connected to tip1, we chose one first, which defines the direction we are rotating along the rift. */
+ 		node=tip1;
+ 		for (counter=0;counter<numsegs;counter++){
+ 			for (j=0;j<numsegs;j++){
+-				node1=(int)*(riftsegments+3*j+0);
+-				node2=(int)*(riftsegments+3*j+1);
++				node1=*(riftsegments+3*j+0);
++				node2=*(riftsegments+3*j+1);
+ 
+ 				if ((node1==node) || (node2==node)){
+ 					/*Ok, this segment is connected to node, plug its index into order, unless we already plugged it before: */
+@@ -848,8 +838,8 @@
+ 		}
+ 
+ 		xDelete<int>(order);
+-		xDelete<double>(riftsegments_copy);
+-		xDelete<double>(riftpairs_copy);
++		xDelete<int>(riftsegments_copy);
++		xDelete<int>(riftpairs_copy);
+ 
+ 	}
+ 
+@@ -858,8 +848,8 @@
+ 	return noerr;
+ }/*}}}*/
+ /*FUNCTION PenaltyPairs{{{*/
+-int PenaltyPairs(double*** priftspenaltypairs,int** priftsnumpenaltypairs,int numrifts,double** riftssegments,
+-		int* riftsnumsegs,double** riftspairs,double* riftstips,double* x,double* y){
++int PenaltyPairs(double*** priftspenaltypairs,int** priftsnumpenaltypairs,int numrifts,int** riftssegments,
++		int* riftsnumsegs,int** riftspairs,int* riftstips,double* x,double* y){
+ 
+ 	int noerr=1;
+ 	int i,j,k,k0;
+@@ -874,8 +864,8 @@
+ 
+ 	/*intermediary: */
+ 	int numsegs;
+-	double* riftsegments=NULL;
+-	double* riftpairs=NULL;
++	int* riftsegments=NULL;
++	int* riftpairs=NULL;
+ 	int counter;
+ 	double normal[2];
+ 	double length;
+@@ -979,7 +969,7 @@
+ 		}
+ 		/*Renormalize normals: */
+ 		for(j=0;j<counter;j++){
+-			double magnitude=sqrt(pow( *(riftpenaltypairs+j*7+4),2) + pow( *(riftpenaltypairs+j*7+5),2) );
++			double magnitude=sqrt(pow( double(riftpenaltypairs[j*7+4]),2) + pow( double(riftpenaltypairs[j*7+5]),2) );
+ 			*(riftpenaltypairs+j*7+4)=*(riftpenaltypairs+j*7+4)/magnitude;
+ 			*(riftpenaltypairs+j*7+5)=*(riftpenaltypairs+j*7+5)/magnitude;
+ 		}
+@@ -992,35 +982,23 @@
+ 	*priftspenaltypairs=riftspenaltypairs;
+ 	*priftsnumpenaltypairs=riftsnumpenaltypairs;
+ 	return noerr;
+-}
++}/*}}}*/
++int RemoveCornersFromRifts(int** pindex,int* pnel,double** px,double** py,int* pnods,int* segments,int* segmentmarkers,int num_seg){/*{{{*/
+ 
+-/******************************************************************************************************************************
+-                                   RemoveCorners
+-******************************************************************************************************************************/
+-
+-int RemoveCornersFromRifts(double** pindex,int* pnel,double** px,double** py,int* pnods, double* segments,double* segmentmarkers,int num_seg){
+-
+ 	int noerr=1;
+ 	int i,j,k;
+-	double node1,node2,node3;
++	int node1,node2,node3;
+ 	int el;
+-
+-	/*input: */
+-	double* index=NULL;
+-	int     nel;
+-	double* x=NULL;
+-	double* y=NULL;
+-	int     nods;
+ 	double  pair[2];
+ 	int     pair_count=0;
+ 	int     triple=0;
+ 
+ 	/*Recover input: */
+-	index=*pindex;
+-	nel=*pnel;
+-	x=*px;
+-	y=*py;
+-	nods=*pnods;
++	int    *index = *pindex;
++	int     nel   = *pnel;
++	double *x     = *px;
++	double *y     = *py;
++	int     nods  = *pnods;
+ 
+ 	for (i=0;i<num_seg;i++){
+ 		node1=*(segments+3*i+0);
+@@ -1082,7 +1060,7 @@
+ 					y=xReNew<double>(y,nods,nods+1);
+ 					x[nods]=(x[(int)node1-1]+x[(int)node2-1]+x[(int)node3-1])/3;
+ 					y[nods]=(y[(int)node1-1]+y[(int)node2-1]+y[(int)node3-1])/3;
+-					index=xReNew<double>(index,nel*3,(nel+2*3));
++					index=xReNew<int>(index,nel*3,(nel+2*3));
+ 					/*First, reassign element el: */
+ 					*(index+3*el+0)=node1;
+ 					*(index+3*el+1)=node2;
+@@ -1097,7 +1075,7 @@
+ 					*(index+3*(nel+1)+2)=nods+1;
+ 					/*we need  to change the segment elements corresponding to el: */
+ 					for (k=0;k<num_seg;k++){
+-						if (*(segments+3*k+2)==(double)(el+1)){
++						if (*(segments+3*k+2)==(el+1)){
+ 							if ( ((*(segments+3*k+0)==node1) && (*(segments+3*k+1)==node2)) || ((*(segments+3*k+0)==node2) && (*(segments+3*k+1)==node1))) *(segments+3*k+2)=(double)(el+1);
+ 							if ( ((*(segments+3*k+0)==node2) && (*(segments+3*k+1)==node3)) || ((*(segments+3*k+0)==node3) && (*(segments+3*k+1)==node2))) *(segments+3*k+2)=(double)(nel+1);
+ 							if ( ((*(segments+3*k+0)==node3) && (*(segments+3*k+1)==node1)) || ((*(segments+3*k+0)==node1) && (*(segments+3*k+1)==node3))) *(segments+3*k+2)=(double)(nel+2);
+@@ -1120,4 +1098,4 @@
+ 	*py=y;
+ 	*pnods=nods;
+ 	return noerr;
+-}
++}/*}}}*/
+Index: ../trunk-jpl/src/c/modules/TriMeshx/TriMeshx.cpp
+===================================================================
+--- ../trunk-jpl/src/c/modules/TriMeshx/TriMeshx.cpp	(revision 14221)
++++ ../trunk-jpl/src/c/modules/TriMeshx/TriMeshx.cpp	(revision 14222)
+@@ -21,7 +21,7 @@
+ #endif
+ /*}}}*/
+ 
+-void TriMeshx(SeqMat<IssmPDouble>** pindex,SeqVec<IssmPDouble>** px,SeqVec<IssmPDouble>** py,SeqMat<IssmPDouble>** psegments,SeqVec<IssmPDouble>** psegmentmarkerlist,DataSet* domain,DataSet* rifts,double area){
++void TriMeshx(SeqMat<int>** pindex,SeqVec<IssmPDouble>** px,SeqVec<IssmPDouble>** py,SeqMat<int>** psegments,SeqVec<int>** psegmentmarkerlist,DataSet* domain,DataSet* rifts,double area){
+ 
+ #if !defined(_HAVE_TRIANGLE_)
+ 	_error_("triangle has not been installed");
+@@ -30,13 +30,13 @@
+ 	int i,j;
+ 
+ 	/*output: */
+-	IssmPDouble         *index             = NULL;
+-	SeqMat<IssmPDouble> *index_matrix      = NULL;
+-	double              *x                 = NULL;
+-	double              *y                 = NULL;
+-	double              *segments          = NULL;
+-	SeqMat<IssmPDouble> *segments_matrix   = NULL;
+-	double              *segmentmarkerlist = NULL;
++	int         *index             = NULL;
++	SeqMat<int> *index_matrix      = NULL;
++	double      *x                 = NULL;
++	double      *y                 = NULL;
++	int         *segments          = NULL;
++	SeqMat<int> *segments_matrix   = NULL;
++	int         *segmentmarkerlist = NULL;
+ 
+ 	/*intermediary: */
+ 	int counter,counter2,backcounter;
+@@ -168,25 +168,25 @@
+ 	/*report(&out, 0, 1, 1, 1, 1, 0);*/
+ 
+ 	/*Allocate index, x and y: */
+-	index=xNew<double>(3*out.numberoftriangles);
++	index=xNew<int>(3*out.numberoftriangles);
+ 	x=xNew<double>(out.numberofpoints);
+ 	y=xNew<double>(out.numberofpoints);
+-	segments=xNew<double>(3*out.numberofsegments);
+-	segmentmarkerlist=xNew<double>(out.numberofsegments);
++	segments=xNew<int>(3*out.numberofsegments);
++	segmentmarkerlist=xNew<int>(out.numberofsegments);
+ 
+ 	for (i = 0; i< out.numberoftriangles; i++) {
+ 		for (j = 0; j < out.numberofcorners; j++) {
+-			index[3*i+j]=(double)out.trianglelist[i*out.numberofcorners+j]+1;
++			index[3*i+j]=(int)out.trianglelist[i*out.numberofcorners+j]+1;
+ 		}
+ 	}
+ 	for (i = 0; i< out.numberofpoints; i++){
+-		x[i]=out.pointlist[i*2+0];
+-		y[i]=out.pointlist[i*2+1];
++		x[i]=(double)out.pointlist[i*2+0];
++		y[i]=(double)out.pointlist[i*2+1];
+ 	}
+ 	for (i = 0; i<out.numberofsegments;i++){
+-		segments[3*i+0]=(double)out.segmentlist[i*2+0]+1;
+-		segments[3*i+1]=(double)out.segmentlist[i*2+1]+1;
+-		segmentmarkerlist[i]=(double)out.segmentmarkerlist[i];
++		segments[3*i+0]=(int)out.segmentlist[i*2+0]+1;
++		segments[3*i+1]=(int)out.segmentlist[i*2+1]+1;
++		segmentmarkerlist[i]=(int)out.segmentmarkerlist[i];
+ 	}
+ 
+ 	/*Associate elements with segments: */
+@@ -196,14 +196,14 @@
+ 	OrderSegments(&segments,out.numberofsegments, index,out.numberoftriangles);
+ 
+ 	/*Output : */
+-	index_matrix=new SeqMat<IssmPDouble>(index,out.numberoftriangles,3,1.0);
++	index_matrix=new SeqMat<int>(index,out.numberoftriangles,3,1);
+ 	*pindex=index_matrix;
+ 
+-	segments_matrix=new SeqMat<IssmPDouble>(segments,out.numberofsegments,3,1.0);
++	segments_matrix=new SeqMat<int>(segments,out.numberofsegments,3,1);
+ 	*psegments=segments_matrix;
+ 
+ 	*px=new SeqVec<IssmPDouble>(x,out.numberofpoints);
+ 	*py=new SeqVec<IssmPDouble>(y,out.numberofpoints);
+-	*psegmentmarkerlist=new SeqVec<IssmPDouble>(segmentmarkerlist,out.numberofsegments);
++	*psegmentmarkerlist=new SeqVec<int>(segmentmarkerlist,out.numberofsegments);
+ #endif
+ }
+Index: ../trunk-jpl/src/c/modules/TriMeshx/TriMeshx.h
+===================================================================
+--- ../trunk-jpl/src/c/modules/TriMeshx/TriMeshx.h	(revision 14221)
++++ ../trunk-jpl/src/c/modules/TriMeshx/TriMeshx.h	(revision 14222)
+@@ -10,6 +10,6 @@
+ #include "../../classes/objects/objects.h"
+ 
+ /* local prototypes: */
+-void TriMeshx(SeqMat<IssmPDouble>** pindex,SeqVec<IssmPDouble>** px,SeqVec<IssmPDouble>** py,SeqMat<IssmPDouble>** psegments,SeqVec<IssmPDouble>** psegmentmarkerlist,DataSet* domain,DataSet* rifts,double area);
++void TriMeshx(SeqMat<int>** pindex,SeqVec<IssmPDouble>** px,SeqVec<IssmPDouble>** py,SeqMat<int>** psegments,SeqVec<int>** psegmentmarkerlist,DataSet* domain,DataSet* rifts,double area);
+ 
+ #endif  /* _TRIMESHX_H */
+Index: ../trunk-jpl/src/c/modules/TriMeshProcessRiftsx/TriMeshProcessRiftsx.h
+===================================================================
+--- ../trunk-jpl/src/c/modules/TriMeshProcessRiftsx/TriMeshProcessRiftsx.h	(revision 14221)
++++ ../trunk-jpl/src/c/modules/TriMeshProcessRiftsx/TriMeshProcessRiftsx.h	(revision 14222)
+@@ -7,6 +7,6 @@
+ 
+ class RiftStruct;
+ 
+-void TriMeshProcessRiftsx(double** pindex, int* pnel,double** px,double** py,int* pnods,double** psegments,double** psegmentmarkers,int *pnum_seg,RiftStruct **priftstruct);
++void TriMeshProcessRiftsx(int** pindex,int* pnel,double** px,double** py,int* pnods,int** psegments,int** psegmentmarkers,int *pnum_seg,RiftStruct **priftstruct);
+ 
+ #endif  /* _TRIMESHPROCESSRIFTX_H*/
+Index: ../trunk-jpl/src/c/modules/TriMeshProcessRiftsx/TriMeshProcessRiftsx.cpp
+===================================================================
+--- ../trunk-jpl/src/c/modules/TriMeshProcessRiftsx/TriMeshProcessRiftsx.cpp	(revision 14221)
++++ ../trunk-jpl/src/c/modules/TriMeshProcessRiftsx/TriMeshProcessRiftsx.cpp	(revision 14222)
+@@ -8,26 +8,26 @@
+ #include "../../include/include.h"
+ #include "../../toolkits/toolkits.h"
+ 
+-void TriMeshProcessRiftsx(double** pindex, int* pnel,double** px,double** py,int* pnods,double** psegments,double** psegmentmarkers,int *pnum_seg,RiftStruct **priftstruct){
++void TriMeshProcessRiftsx(int** pindex, int* pnel,double** px,double** py,int* pnods,int** psegments,int** psegmentmarkers,int *pnum_seg,RiftStruct **priftstruct){
+ 
+ 	/*Output*/
+ 	int      numrifts,numrifts0;
+ 	int     *riftsnumsegments     = NULL;
+-	double **riftssegments        = NULL;
++	int    **riftssegments        = NULL;
+ 	int     *riftsnumpairs        = NULL;
+-	double **riftspairs           = NULL;
+-	double  *riftstips            = NULL;
++	int    **riftspairs           = NULL;
++	int     *riftstips            = NULL;
+ 	double **riftspenaltypairs    = NULL;
+ 	int     *riftsnumpenaltypairs = NULL;
+ 
+ 	/*Recover initial mesh*/
+ 	int     nel            = *pnel;
+-	double *index          = *pindex;
++	int    *index          = *pindex;
+ 	double *x              = *px;
+ 	double *y              = *py;
+ 	int     nods           = *pnods;
+-	double *segments       = *psegments;
+-	double *segmentmarkers = *psegmentmarkers;
++	int    *segments       = *psegments;
++	int    *segmentmarkers = *psegmentmarkers;
+ 	int     num_seg        = *pnum_seg;
+ 
+ 	/*Intermediary*/
+Index: ../trunk-jpl/src/c/classes/RiftStruct.cpp
+===================================================================
+--- ../trunk-jpl/src/c/classes/RiftStruct.cpp	(revision 14221)
++++ ../trunk-jpl/src/c/classes/RiftStruct.cpp	(revision 14222)
+@@ -21,7 +21,7 @@
+ 	this->state                = NULL;
+ 
+ }/*}}}*/
+-RiftStruct::RiftStruct(int numrifts_in,int *riftsnumsegments_in,double **riftssegments_in,int *riftsnumpairs_in,double **riftspairs_in,int *riftsnumpenaltypairs_in,double **riftspenaltypairs_in,double* riftstips_in){/*{{{*/
++RiftStruct::RiftStruct(int numrifts_in,int *riftsnumsegments_in,int**riftssegments_in,int *riftsnumpairs_in,int**riftspairs_in,int *riftsnumpenaltypairs_in,double **riftspenaltypairs_in,int * riftstips_in){/*{{{*/
+ 
+ 	int i;
+ 
+@@ -36,10 +36,10 @@
+ 
+ 	/*riftssegments*/
+ 	_assert_(riftssegments_in);
+-	this->riftssegments=xNew<double*>(numrifts_in);
++	this->riftssegments=xNew<int*>(numrifts_in);
+ 	for(i=0;i<numrifts_in;i++){
+-		this->riftssegments[i]=xNew<double>(riftsnumsegments_in[i]*3);
+-		xMemCpy<double>(this->riftssegments[i],riftssegments_in[i],riftsnumsegments_in[i]*3);
++		this->riftssegments[i]=xNew<int>(riftsnumsegments_in[i]*3);
++		xMemCpy<int>(this->riftssegments[i],riftssegments_in[i],riftsnumsegments_in[i]*3);
+ 	}
+ 
+ 	/*riftsnumpairs*/
+@@ -49,10 +49,10 @@
+ 
+ 	/*riftspairs*/
+ 	_assert_(riftspairs_in);
+-	this->riftspairs=xNew<double*>(numrifts_in);
++	this->riftspairs=xNew<int*>(numrifts_in);
+ 	for(i=0;i<numrifts_in;i++){
+-		this->riftspairs[i]=xNew<double>(riftsnumpairs_in[i]*2);
+-		xMemCpy<double>(this->riftspairs[i],riftspairs_in[i],riftsnumpairs_in[i]*2);
++		this->riftspairs[i]=xNew<int>(riftsnumpairs_in[i]*2);
++		xMemCpy<int>(this->riftspairs[i],riftspairs_in[i],riftsnumpairs_in[i]*2);
+ 	}
+ 
+ 	/*riftsnumpenaltypairs*/
+@@ -70,8 +70,8 @@
+ 
+ 	/*riftstips*/
+ 	_assert_(riftstips_in);
+-	this->riftstips=xNew<double>(2*numrifts_in);
+-	xMemCpy<double>(this->riftstips,riftstips_in,2*numrifts_in);
++	this->riftstips=xNew<int>(2*numrifts_in);
++	xMemCpy<int>(this->riftstips,riftstips_in,2*numrifts_in);
+ 
+ 	/*state*/
+ 	this->state=xNew<double*>(numrifts_in);
+@@ -84,12 +84,12 @@
+ RiftStruct::~RiftStruct(void){/*{{{*/
+ 
+ 	xDelete<int>(this->riftsnumsegments);
+-	xDelete<double*>(this->riftssegments);
++	xDelete<int*>(this->riftssegments);
+ 	xDelete<int>(this->riftsnumpairs);
+-	xDelete<double*>(this->riftspairs);
++	xDelete<int*>(this->riftspairs);
+ 	xDelete<int>(this->riftsnumpenaltypairs);
+ 	xDelete<double*>(this->riftspenaltypairs);
+-	xDelete<double>(this->riftstips);
++	xDelete<int>(this->riftstips);
+ 	xDelete<double*>(this->state);
+ 
+ }/*}}}*/
+Index: ../trunk-jpl/src/c/classes/RiftStruct.h
+===================================================================
+--- ../trunk-jpl/src/c/classes/RiftStruct.h	(revision 14221)
++++ ../trunk-jpl/src/c/classes/RiftStruct.h	(revision 14222)
+@@ -9,17 +9,17 @@
+ 
+ 	public:
+ 		int      numrifts;
+-		double **riftssegments;
++		int    **riftssegments;
+ 		int     *riftsnumsegments;
+-		double **riftspairs;
++		int    **riftspairs;
+ 		int     *riftsnumpairs;
+ 		double **riftspenaltypairs;
+ 		int     *riftsnumpenaltypairs;
+-		double  *riftstips;
++		int     *riftstips;
+ 		double **state;
+ 
+ 		RiftStruct();
+-		RiftStruct(int numrifts_in,int *riftsnumsegments_in,double **riftssegments_in,int *riftsnumpairs_in,double **riftspairs_in,int *riftsnumpenaltypairs_in,double **riftspenaltypairs_in,double* riftstips_in);
++		RiftStruct(int numrifts_in,int *riftsnumsegments_in,int **riftssegments_in,int *riftsnumpairs_in,int **riftspairs_in,int *riftsnumpenaltypairs_in,double **riftspenaltypairs_in,int* riftstips_in);
+ 		~RiftStruct();
+ };
+ 
Index: /issm/oecreview/Archive/14064-14311/ISSM-14222-14223.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14222-14223.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14222-14223.diff	(revision 14312)
@@ -0,0 +1,158 @@
+Index: ../trunk-jpl/src/m/plot/colormaps/seacolor.m
+===================================================================
+--- ../trunk-jpl/src/m/plot/colormaps/seacolor.m	(revision 0)
++++ ../trunk-jpl/src/m/plot/colormaps/seacolor.m	(revision 14223)
+@@ -0,0 +1,58 @@
++function y = seacolor(n)
++%SEACOLOR Sea colormap adapted from NGDC ETOPO1
++%
++%	Author: Francois Beauducel <beauducel@ipgp.fr>
++
++J = [ ...
++    0.0392         0    0.4745
++    0.1020         0    0.5373
++    0.1020         0    0.5373
++    0.1490         0    0.5961
++    0.1490         0    0.5961
++    0.1059    0.0118    0.6510
++    0.1059    0.0118    0.6510
++    0.0627    0.0235    0.7059
++    0.0627    0.0235    0.7059
++    0.0196    0.0353    0.7569
++    0.0196    0.0353    0.7569
++         0    0.0549    0.7961
++         0    0.0549    0.7961
++         0    0.0863    0.8235
++         0    0.0863    0.8235
++         0    0.1176    0.8471
++         0    0.1176    0.8471
++         0    0.1529    0.8745
++         0    0.1529    0.8745
++    0.0471    0.2667    0.9059
++    0.0471    0.2667    0.9059
++    0.1020    0.4000    0.9412
++    0.1020    0.4000    0.9412
++    0.0745    0.4588    0.9569
++    0.0745    0.4588    0.9569
++    0.0549    0.5216    0.9765
++    0.0549    0.5216    0.9765
++    0.0824    0.6196    0.9882
++    0.0824    0.6196    0.9882
++    0.1176    0.6980    1.0000
++    0.1176    0.6980    1.0000
++    0.1686    0.7294    1.0000
++    0.1686    0.7294    1.0000
++    0.2157    0.7569    1.0000
++    0.2157    0.7569    1.0000
++    0.2549    0.7843    1.0000
++    0.2549    0.7843    1.0000
++    0.3098    0.8235    1.0000
++    0.3098    0.8235    1.0000
++    0.3686    0.8745    1.0000
++    0.3686    0.8745    1.0000
++    0.5412    0.8902    1.0000
++    0.5412    0.8902    1.0000
++    0.7373    0.9020    1.0000
++];
++
++l = length(J);
++if nargin < 1
++	n = 256;
++end
++y = interp1(1:l,J,linspace(1,l,n),'*linear');
++
+
+Property changes on: ../trunk-jpl/src/m/plot/colormaps/seacolor.m
+___________________________________________________________________
+Added: svn:executable
+## -0,0 +1 ##
++*
+Index: ../trunk-jpl/src/m/plot/colormaps/landcolor.m
+===================================================================
+--- ../trunk-jpl/src/m/plot/colormaps/landcolor.m	(revision 0)
++++ ../trunk-jpl/src/m/plot/colormaps/landcolor.m	(revision 14223)
+@@ -0,0 +1,78 @@
++function y = landcolor(n)
++%LANDCOLOR Land colormap
++%
++%	Author: Francois Beauducel <beauducel@ipgp.fr>
++%	$Revision: 1.0.0 $   $Date: 2012/05/17 11:22:44 $
++
++J = [ ...
++0.095678 0.53427 0.21682 
++0.15785 0.5979 0.23274 
++0.21286 0.64673 0.2514 
++0.26411 0.68789 0.27268 
++0.32959 0.72416 0.31308 
++0.39794 0.75695 0.36038 
++0.46153 0.7871 0.40624 
++0.52108 0.81516 0.45135 
++0.57702 0.84152 0.49547 
++0.62973 0.86645 0.53891 
++0.67946 0.89016 0.58187 
++0.72647 0.91282 0.62427 
++0.77095 0.93455 0.66619 
++0.81306 0.95546 0.70772 
++0.85292 0.97563 0.7489 
++0.89066 0.99514 0.78976 
++0.88379 0.98595 0.77038 
++0.86389 0.96758 0.73236 
++0.84615 0.94972 0.69623 
++0.8303 0.93233 0.66186 
++0.81612 0.91536 0.6291 
++0.80341 0.8988 0.59784 
++0.79201 0.8826 0.56795 
++0.78191 0.86676 0.53946 
++0.7729 0.85123 0.51224 
++0.76479 0.83602 0.48615 
++0.75747 0.8211 0.46111 
++0.75084 0.80645 0.43704 
++0.74506 0.79206 0.41414 
++0.73981 0.77792 0.39211 
++0.73501 0.76401 0.37089 
++0.73068 0.75033 0.35052 
++0.72683 0.73685 0.33106 
++0.72042 0.72074 0.31228 
++0.71032 0.70085 0.29417 
++0.69761 0.67821 0.27694 
++0.68489 0.65558 0.26026 
++0.67235 0.63313 0.24418 
++0.65997 0.61082 0.22889 
++0.64775 0.58874 0.21406 
++0.63568 0.56689 0.19983 
++0.62376 0.54527 0.18622 
++0.61197 0.52391 0.17299 
++0.60033 0.50283 0.16046 
++0.58881 0.48203 0.14832 
++0.57742 0.46151 0.13667 
++0.56616 0.44133 0.12555 
++0.55502 0.4214 0.11472 
++0.54398 0.4019 0.10456 
++0.53306 0.38266 0.094633 
++0.52226 0.36382 0.085242 
++0.51155 0.3453 0.076179 
++0.50095 0.32714 0.067515 
++0.49045 0.30938 0.059259 
++0.48005 0.29193 0.051294 
++0.46973 0.27495 0.043796 
++0.45951 0.25823 0.0365 
++0.44938 0.24206 0.029715 
++0.43934 0.22609 0.023063 
++0.42938 0.21074 0.016949 
++0.41951 0.19556 0.010917 
++0.40971 0.18105 0.0054326 
++0.4 0.16667 0 
++];
++
++l = length(J);
++if nargin < 1
++	n = 256;
++end
++y = interp1(1:l,J,linspace(1,l,n),'*linear');
++
+
+Property changes on: ../trunk-jpl/src/m/plot/colormaps/landcolor.m
+___________________________________________________________________
+Added: svn:executable
+## -0,0 +1 ##
++*
Index: /issm/oecreview/Archive/14064-14311/ISSM-14223-14224.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14223-14224.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14223-14224.diff	(revision 14312)
@@ -0,0 +1,728 @@
+Index: ../trunk-jpl/externalpackages/dem/dem.m
+===================================================================
+--- ../trunk-jpl/externalpackages/dem/dem.m	(revision 0)
++++ ../trunk-jpl/externalpackages/dem/dem.m	(revision 14224)
+@@ -0,0 +1,530 @@
++function [h,I]=dem(x,y,z,varargin)
++%DEM Shaded relief image plot
++%	DEM(X,Y,Z) plots the Digital Elevation Model defined by X and Y 
++%	coordinate vectors and elevation matrix Z, as a lighted image using
++%	specific "landcolor" and "seacolor" colormaps. DEM uses IMAGESC 
++%	function which is much faster than SURFL when dealing with large 
++%	high-resolution DEM.
++%
++%	DEM(X,Y,Z,OPT) specifies options with OPT = [A,C,SCUT,ZMIN,ZMAX,ZCUT],
++%	where sorted optional scalars are:
++%	  A = azimuth light (in degrees relative to North). Default is A = -45
++%	      for a natural northwestern illumination.
++%	  C = controls contrast, as the exponent of the gradient value. Default
++%	      is C = 1 for linear contrast; use C = 0 to remove lighting, 
++%	      C = 0.5 for moderate lighting, C = 2 or more for strong contrast.
++%	  SCUT = controls lighting scale saturation with a median-style filter
++%	      in % of elements. Default is SCUT = 0.2 (0.2% maximum gradient 
++%	      values is ignored). Use SCUT = 0 for full scale gradient.
++%	  ZMIN,ZMAX = fixes min and max elevation values for colormap. Use NaN
++%	      to keep real min and/or max data values.
++%	  ZCUT = median-style filter to cut extremes values (in % of elements).
++%	      Default is ZCUT = 0.5 to ignore the 0.5% of most min/max 
++%	      elevation values. Use ZCUT = 0 for full scale.
++%	Use OPT=[] to keep default values and define following arguments.
++%
++%	DEM(...,CMAP) uses CMAP colormap instead of default (landcolor, if 
++%	exists or jet). Note that defining CMAP disables the default SEACOLOR
++%	colormap attribution for Z<=0 elevations.
++%
++%	DEM(...,NOVALUE) defines the values that will be replaced by NaN. This 
++%	might be mandatory for DEM that use a value like -99999 or -32768 if 
++%	you don't want a flat image...
++%
++%	DEM(...,SEACOLOR) sets the colormap used for zero and negative values.
++%	Default is seacolor (if exists) or single color [0.7,0.9,1] (a light 
++%	cyan) to simulate sea color. Use [] to apply colormap CMAP on the full
++%	elevation scale.
++%
++%	DEM(...,'interp') interpolates linearly NaN values (fills the gaps).
++%
++%	DEM(...,'lake') detects automaticaly flat areas different from sea 
++%	level (non-zero elevations) and draws them as lake surfaces.
++%
++%	DEM(...,'dec') plots classic basemap-style axis, considering 
++%	coordinates as cartesian (decimal).
++%
++%	DEM(...,'dms') plots geographic basemap-style axis in deg/min/sec,
++%	considering coordinates X as longitude and Y as latitude. Axis aspect 
++%	ratio will be adjusted to approximatively preserve distances (this is  
++%	not a real projection!).
++%
++%	DEM(...,'scale') adds a legend to the right of graph, with elevation 
++%	scale (colormap) and a distance scale if 'dms' option is used.
++%
++%	[H,I]=DEM(...) returns graphic handle H and illuminated image as I, an
++%	MxNx3 matrix (if Z is MxN).
++%
++%	Informations:
++%	 - For optimization purpose, DEM will automatically decimate data to
++%	   limit to a total of 1500x1500 pixels images. To avoid it, use option
++%	   DEM(...,'nodecim') or DEM(...,'decim',N) where N is an integer, but 
++%	   be aware that large grids may require computer ressources and induce  
++%	   disk swap or memory errors.
++%	 - Colormaps are Mx3 RGB matrix so it is easy to modify saturation 
++%	   (CMAP.^N), set darker (CMAP/N), lighter ((N - 1 + CMAP)/N), inverse
++%	    it (flipud(CMAP)), etc...
++%	 - To get free worldwide topographic data (SRTM), see READHGT function.
++%
++%	Author: François Beauducel <beauducel@ipgp.fr>
++%	Created: 2007-05-17
++%	Updated: 2013-01-05
++
++%	Copyright (c) 2013, François Beauducel, covered by BSD License.
++%	All rights reserved.
++%
++%	Redistribution and use in source and binary forms, with or without 
++%	modification, are permitted provided that the following conditions are 
++%	met:
++%
++%	   * Redistributions of source code must retain the above copyright 
++%	     notice, this list of conditions and the following disclaimer.
++%	   * Redistributions in binary form must reproduce the above copyright 
++%	     notice, this list of conditions and the following disclaimer in 
++%	     the documentation and/or other materials provided with the distribution
++%	                           
++%	THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
++%	AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
++%	IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
++%	ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 
++%	LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 
++%	CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
++%	SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
++%	INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
++%	CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
++%	ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
++%	POSSIBILITY OF SUCH DAMAGE.
++
++if nargin < 3
++	error('Not enough input arguments.');
++end
++
++% default OPT arguments
++a = -45;
++c = 1;
++scut = 0.2;
++zmin = NaN;
++zmax = NaN;
++zcut = 0.5;
++grey = 0.2*[1,1,1];
++csea = [];
++fs = 10;	% tick label fontsize
++
++dec = 0;
++dms = 0;
++scale = 0;
++inter = 0;
++lake = 0;
++decimflag = 0;
++decim = 0;
++
++novalue_color = [0,0,0];
++
++if ~isnumeric(x) | ~isnumeric(y) | ~isnumeric(z)
++	error('X,Y and Z must be numeric.')
++end
++
++if all(size(x) ~= 1) | all(size(y) ~= 1)
++	error('X and Y must be vectors, not matrix.')
++end
++
++if length(x) ~= size(z,2) | length(y) ~= size(z,1)
++	error('If Z has a size of [M,N], X must have a length of N, and Y a length of M.')
++end
++
++if nargin > 3
++	dec = any(strcmp(varargin,'dec'));
++	dms = any(strcmp(varargin,'dms'));
++	if dms & any(abs(y) > 91)
++		error('With DMS option Y must be in valid latitudes interval (decimal degrees).')
++	end
++	scale = any(strcmp(varargin,'scale'));
++	inter = any(strcmp(varargin,'interp'));
++	lake = any(strcmp(varargin,'lake'));
++	if any(strcmp(varargin,'nodecim'))
++		decim = 1;
++		decimflag = 1;
++	end
++	kdecim = find(strcmp(varargin,'decim'));
++	if ~isempty(kdecim)
++		decimflag = 1;
++		if (kdecim + 1) <= nargin & isnumeric(varargin{kdecim+1})
++			decim = round(varargin{kdecim+1});
++			decimflag = 2;
++		end
++	end
++end
++nargs = decimflag + dec + dms + scale + lake + inter;
++
++if (nargin - nargs) > 3
++	opt = varargin{1};
++	if ~isnumeric(opt)
++		error('OPT = [A,C,S,ZMIN,ZMAX] argument must be numeric.');
++	end
++	if ~isempty(opt)
++		a = opt(1);
++	end
++	if length(opt) > 1
++		c = opt(2);
++		if c < 0
++			error('C argument must be positive.');
++		end
++	end
++	if length(opt) > 2
++		scut = opt(3);
++		if scut < 0 | scut >= 100
++			error('SCUT argument must be a positive percentage.');
++		end
++	end
++	if length(opt) > 4
++		zmin = opt(4);
++		zmax = opt(5);
++	end
++	if length(opt) > 5
++		zcut = opt(6);
++		if zcut < 0 | zcut >= 100
++			error('ZCUT argument must be a positive percentage.');
++		end
++	end
++end
++
++if (nargin - nargs) < 5
++	cmap = [];
++else
++	cmap = varargin{2};
++	if ~isnumeric(cmap) | (~isempty(cmap) & (size(cmap,2) ~= 3 | min(cmap(:)) < 0 | max(cmap(:)) > 1))
++		error('CMAP must be a valid colormap (3-column [R,G,B] matrix with 0.0 to 1.0 values).')
++	end
++end
++
++if (nargin - nargs) < 6
++	novalue = NaN;
++else
++	novalue = varargin{3};
++	if ~isnumeric(novalue) | numel(novalue) > 1
++		error('NOVALUE must be scalar.')
++	end
++end
++
++if (nargin - nargs) < 7
++	if isempty(cmap)
++		if exist('seacolor','file')
++			csea = seacolor(256);
++		else
++			csea = [.7,.9,1];
++		end
++	end
++else
++	csea = varargin{4};
++	if ~isnumeric(csea)
++		error('Unknown option')
++	elseif (~isempty(csea) & (size(csea,2) ~= 3 | min(csea) < 0 | max(csea) > 1))
++		error('SEACOLOR must be a valid [R,G,B] vector with 0.0 to 1.0 values).')
++	end
++end
++
++if isempty(cmap)
++	if exist('landcolor','file')
++		cmap = landcolor.^1.3;
++	else
++		cmap = jet(256);
++	end
++end
++
++
++
++% decimates data to avoid disk swap/out of memory...
++nmax = 1500;
++if decim
++	n = decim;
++else
++	n = ceil(sqrt(numel(z))/nmax);
++end
++if n > 1
++	x = x(1:n:end);
++	y = y(1:n:end);
++	z = z(1:n:end,1:n:end);
++	fprintf('DEM: on the plot data has been decimated by a factor of %d...\n',n);
++end
++
++z = double(z); % necessary for most of the following calculations...
++z(z==novalue) = NaN;
++
++if inter
++	z = fillgap(x,y,z);
++end
++
++if isempty(csea)
++	k = (z~=0 & ~isnan(z));
++else
++	k = ~isnan(z);
++end
++
++if isnan(zmin)
++	zmin = nmedian(z(k),zcut/100);
++end
++if isnan(zmax)
++	zmax = nmedian(z(k),1 - zcut/100);
++end
++dz = zmax - zmin;
++
++if dz > 0
++	% builds the colormap: concatenates seacolor and landcolor around 0
++	if ~isempty(csea) & zmin < 0 & zmax > 0
++		l = size(csea,1);
++		r = size(cmap,1)*abs(zmin)/zmax/l;
++		cmap = cat(1,interp1(1:l,csea,linspace(1,l,round(l*r)),'*linear'),cmap);
++	end
++	
++	% normalisation of Z using CMAP and convertion to RGB
++	I = ind2rgb(uint16((z - zmin)*(length(cmap)/dz)),cmap);
++	
++	if c > 0
++		% computes lighting from elevation gradient
++		[fx,fy] = gradient(z,x,y);
++		%fx = filter([1,0,0,0,-1],1,rf(z'))';
++		%fy = filter([1,0,0,0,-1],1,rf(z));
++		fxy = -fx*sind(a) - fy*cosd(a);
++		clear fx fy	% free some memory...
++		
++		% lake option: zero gradient
++		if lake
++			dx = diff(z,1,2);
++			dy = diff(z,1,1);
++			u1 = ones(size(z,1),1);
++			u2 = ones(1,size(z,2));
++			z(cat(1,u2,dy)==0 & cat(1,dy,u2)==0 & cat(2,dx,u1)==0 & cat(2,u1,dx)==0) = 0;
++			clear dx dy	% free some memory...
++		end
++
++		fxy(isnan(fxy)) = 0;
++
++		% computes maximum absolute gradient (median-style), normalizes, saturates and duplicates in 3-D matrix
++		r = repmat(max(min(fxy/nmedian(abs(fxy),1 - scut/100),1),-1),[1,1,3]);
++	
++		% applies contrast using exponent
++		rp = (1 - abs(r)).^c;
++		I = I.*rp;
++	
++		% lighter for positive gradient
++		k = find(r > 0);
++		I(k) = I(k) + (1 - rp(k));
++				
++	end
++	
++	% set novalues / NaN to black color
++	[i,j] = find(isnan(z));
++	if ~isempty(i)
++		I(sub2ind(size(I),repmat(i,1,3),repmat(j,1,3),repmat(1:3,size(i,1),1))) = repmat(novalue_color,size(i,1),1);
++	end
++	% set the seacolor for 0 values
++	if ~isempty(csea)
++		[i,j] = find(z==0);
++		if ~isempty(i)
++			I(sub2ind(size(I),repmat(i,1,3),repmat(j,1,3),repmat(1:3,size(i,1),1))) = repmat(csea(end,:),size(i,1),1);
++		end
++	end
++
++	hh = imagesc(x,y,I);
++else
++	hh = imagesc(x,y,z);
++	colormap(cmap);
++	text(mean(x),mean(y),'SPLASH!','Color','c','FontWeight','bold','HorizontalAlignment','center')
++end
++
++orient tall
++axis xy, axis equal, axis tight
++
++xlim = [min(x),max(x)];
++ylim = [min(y),max(y)];
++zlim = [min(z(:)),max(z(:))];
++
++% axis basemap style
++if dec | dms
++	axis off
++
++	if dms
++		% approximates X-Y aspect ratio for this latitude (< 20-m precision for 1x1° grid)
++		xyr = cos(mean(y)*pi/180);
++	else
++		xyr = 1;
++	end
++	set(gca,'DataAspectRatio',[1,xyr,1])
++	bwy = 0.008*diff(ylim); % Y border width = 1%
++	bwx = bwy/xyr; % border width (in degree of longitude)
++
++	% transparent borders
++	patch([xlim(1)-bwx,xlim(2)+bwx,xlim(2)+bwx,xlim(1)-bwx],ylim(1) - bwy*[0,0,1,1],'k','FaceColor','none','clipping','off')
++	patch([xlim(1)-bwx,xlim(2)+bwx,xlim(2)+bwx,xlim(1)-bwx],ylim(2) + bwy*[0,0,1,1],'k','FaceColor','none','clipping','off')
++	patch(xlim(1) - bwx*[0,0,1,1],[ylim(1)-bwy,ylim(2)+bwy,ylim(2)+bwy,ylim(1)-bwy],'k','FaceColor','none','clipping','off')
++	patch(xlim(2) + bwx*[0,0,1,1],[ylim(1)-bwy,ylim(2)+bwy,ylim(2)+bwy,ylim(1)-bwy],'k','FaceColor','none','clipping','off')
++
++	dlon = {'E','W'};
++	dlat = {'N','S'};
++
++	if dec
++		ddx = dtick(diff(xlim));
++		ddy = dtick(diff(ylim));
++	else
++		ddx = dtick(diff(xlim),1);
++		ddy = dtick(diff(ylim),1);
++	end
++
++	xtick = (ddx*ceil(xlim(1)/ddx)):ddx:xlim(2);
++	for xt = xtick(1:2:end)
++		dt = ddx - max(0,xt + ddx - xlim(2));
++		patch(repmat(xt + dt*[0,1,1,0]',[1,2]),[ylim(1) - bwy*[0,0,1,1];ylim(2) + bwy*[0,0,1,1]]','k','clipping','off')
++		text(xt,ylim(1) - bwy,deg2dms(xt,dlon,dec),'FontSize',fs,'HorizontalAlignment','center','VerticalAlignment','top');
++	end
++
++	ytick = (ddy*ceil(ylim(1)/ddy)):ddy:ylim(2);
++	for yt = ytick(1:2:end)
++		dt = ddy - max(0,yt + ddy - ylim(2));
++		patch([xlim(1) - bwx*[0,0,1,1];xlim(2) + bwx*[0,0,1,1]]',repmat(yt + dt*[0,1,1,0]',[1,2]),'k','clipping','off')
++		text(xlim(1) - 1.1*bwx,yt,deg2dms(yt,dlat,dec),'FontSize',fs,'HorizontalAlignment','right','VerticalAlignment','middle');
++	end
++end
++
++% scale legend
++if scale
++	%wsc = diff(xlim)*0.01;
++	wsc = bwx;
++	xsc = xlim(2) + wsc*4;
++
++	% elevation scale (colorbar)
++	zscale = linspace(zlim(1),zlim(2),length(cmap));
++	yscale = linspace(0,diff(ylim)/2,length(cmap));
++	ysc = ylim(1);
++	ddz = dtick(dz*max(0.5*xyr*diff(xlim)/yscale(end),1));
++	ztick = (ddz*ceil(zlim(1)/ddz)):ddz:zlim(2);
++	patch(xsc + repmat(wsc*[-1;1;1;-1],[1,length(cmap)]), ...
++		ysc + [repmat(yscale,[2,1]);repmat(yscale + diff(yscale(1:2)),[2,1])], ...
++		repmat(zscale,[4,1]), ...
++		'EdgeColor','flat','LineWidth',.1,'FaceColor','flat','clipping','off')
++	colormap(cmap)
++	caxis([zmin,zmax])
++	patch(xsc + wsc*[-1,1,1,-1],ysc + yscale(end)*[0,0,1,1],'k','FaceColor','none','Clipping','off')
++	text(xsc + 2*wsc + zeros(size(ztick)),ysc + (ztick - zlim(1))*0.5*diff(ylim)/diff(zlim),num2str(ztick'), ...
++		'HorizontalAlignment','left','VerticalAlignment','middle','FontSize',8)
++	
++	% distance scale (in case of DMS only)
++	if dms
++		degkm = 6370*pi/180;
++		dkm = dtick(diff(ylim)*degkm);
++		ysc = ylim(2) - 0.5*dkm/degkm;
++		patch(xsc + wsc*[-1,-1,0,0],ysc + dkm*0.5*[-1,1,1,-1]/degkm,'k','FaceColor',grey,'clipping','off')
++		if dkm > 1
++			skm = sprintf('%g km',dkm);
++		else
++			skm = sprintf('%g m',dkm*1000);
++		end
++		text(xsc,ysc,skm,'rotation',-90,'HorizontalAlignment','center','VerticalAlignment','bottom', ...
++			'Color',grey,'FontWeight','bold')
++	end
++
++end
++
++
++if nargout > 0
++	h = hh;
++end
++
++
++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
++function y = nmedian(x,n)
++%NMEDIAN Generalized median filter
++%	NMEDIAN(X,N) sorts elemets of X and returns N-th value (N normalized).
++%	So:
++%	   N = 0 is minimum value
++%	   N = 0.5 is median value
++%	   N = 1 is maximum value
++
++if nargin < 2
++	n = 0.5;
++end
++y = sort(x(:));
++y = interp1(sort(y),n*(length(y)-1) + 1);
++
++
++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
++function dd = dtick(dlim,deg)
++%DTICK Tick intervals
++
++if nargin < 2
++	deg = 0;
++end
++
++if deg & dlim <= 2/60
++	% less than 2 minutes: base 36
++	m = 10^floor(log10(dlim*36))/36;
++elseif deg & dlim <= 2
++	% less than 2 degrees: base 6
++	m = 10^floor(log10(dlim*6))/6;
++else
++	% more than few degrees or not degrees: decimal rules
++	m = 10^floor(log10(dlim));
++end
++p = ceil(dlim/m);
++if p <= 1
++	dd = .1*m;
++elseif p == 2
++	dd = .2*m;
++elseif p <= 5
++	dd = .5*m;
++else
++	dd = m;
++end
++
++
++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
++function s = deg2dms(x,ll,dec)
++%DEG2DMS Degree/minute/second display
++
++if dec
++	s = sprintf('%7.7g',x);
++else
++	xa = abs(x) + 1/360000;
++	sd = sprintf('%d%c',floor(xa),176);	% ASCII char 176 is the degree sign
++	sm = '';
++	ss = '';
++	if mod(x,1)
++		sm = sprintf('%02d''',floor(mod(60*xa,60)));
++		sa = floor(mod(3600*xa,60));
++		if sa
++			ss = sprintf('%02d"',sa);
++		else
++			if strcmp(sm,'00''')
++				sm = '';
++			end
++		end
++	end
++	s = [sd,sm,ss,ll{1+int8(x<0)}];
++end
++
++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
++function z = fillgap(x,y,z)
++% GRIDDATA is not efficient for large arrays, but has great advantage to be
++% included in Matlab core functions! To optimize interpolation, we
++% reduce the number of relevant data by building a mask of surrounding
++% pixels of novalue areas... playing with linear index!
++
++sz = size(z);
++k = find(isnan(z));
++k(k == 1 | k == numel(z)) = []; % removes first and last index (if exist)
++if ~isempty(k)
++	[xx,yy] = meshgrid(x,y);
++	mask = zeros(sz,'int8');
++	k2 = ind90(sz,k); % k2 is linear index in the row order
++	% sets to 1 every previous and next index, both in column and row order
++	mask([k-1;k+1;ind90(fliplr(sz),[k2-1;k2+1])]) = 1; 
++	mask(k) = 0; % removes the novalue index
++	kb = find(mask); % keeps only border values
++	z(k) = griddata(xx(kb),yy(kb),z(kb),xx(k),yy(k));
++end
++
++
++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
++function k2 = ind90(sz,k)
++
++[i,j] = ind2sub(sz,k);
++k2 = sub2ind(fliplr(sz),j,i); % switched i and j: k2 is linear index in row order
+
+Property changes on: ../trunk-jpl/externalpackages/dem/dem.m
+___________________________________________________________________
+Added: svn:executable
+## -0,0 +1 ##
++*
+Index: ../trunk-jpl/externalpackages/dem/license.txt
+===================================================================
+--- ../trunk-jpl/externalpackages/dem/license.txt	(revision 0)
++++ ../trunk-jpl/externalpackages/dem/license.txt	(revision 14224)
+@@ -0,0 +1,24 @@
++Copyright (c) 2013, FranÃ§ois Beauducel
++All rights reserved.
++
++Redistribution and use in source and binary forms, with or without 
++modification, are permitted provided that the following conditions are 
++met:
++
++    * Redistributions of source code must retain the above copyright 
++      notice, this list of conditions and the following disclaimer.
++    * Redistributions in binary form must reproduce the above copyright 
++      notice, this list of conditions and the following disclaimer in 
++      the documentation and/or other materials provided with the distribution
++      
++THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
++AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
++IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
++ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 
++LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 
++CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
++SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
++INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
++CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
++ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
++POSSIBILITY OF SUCH DAMAGE.
+Index: ../trunk-jpl/externalpackages/dem/seacolor.m
+===================================================================
+--- ../trunk-jpl/externalpackages/dem/seacolor.m	(revision 0)
++++ ../trunk-jpl/externalpackages/dem/seacolor.m	(revision 14224)
+@@ -0,0 +1,58 @@
++function y = seacolor(n)
++%SEACOLOR Sea colormap adapted from NGDC ETOPO1
++%
++%	Author: Francois Beauducel <beauducel@ipgp.fr>
++
++J = [ ...
++    0.0392         0    0.4745
++    0.1020         0    0.5373
++    0.1020         0    0.5373
++    0.1490         0    0.5961
++    0.1490         0    0.5961
++    0.1059    0.0118    0.6510
++    0.1059    0.0118    0.6510
++    0.0627    0.0235    0.7059
++    0.0627    0.0235    0.7059
++    0.0196    0.0353    0.7569
++    0.0196    0.0353    0.7569
++         0    0.0549    0.7961
++         0    0.0549    0.7961
++         0    0.0863    0.8235
++         0    0.0863    0.8235
++         0    0.1176    0.8471
++         0    0.1176    0.8471
++         0    0.1529    0.8745
++         0    0.1529    0.8745
++    0.0471    0.2667    0.9059
++    0.0471    0.2667    0.9059
++    0.1020    0.4000    0.9412
++    0.1020    0.4000    0.9412
++    0.0745    0.4588    0.9569
++    0.0745    0.4588    0.9569
++    0.0549    0.5216    0.9765
++    0.0549    0.5216    0.9765
++    0.0824    0.6196    0.9882
++    0.0824    0.6196    0.9882
++    0.1176    0.6980    1.0000
++    0.1176    0.6980    1.0000
++    0.1686    0.7294    1.0000
++    0.1686    0.7294    1.0000
++    0.2157    0.7569    1.0000
++    0.2157    0.7569    1.0000
++    0.2549    0.7843    1.0000
++    0.2549    0.7843    1.0000
++    0.3098    0.8235    1.0000
++    0.3098    0.8235    1.0000
++    0.3686    0.8745    1.0000
++    0.3686    0.8745    1.0000
++    0.5412    0.8902    1.0000
++    0.5412    0.8902    1.0000
++    0.7373    0.9020    1.0000
++];
++
++l = length(J);
++if nargin < 1
++	n = 256;
++end
++y = interp1(1:l,J,linspace(1,l,n),'*linear');
++
+
+Property changes on: ../trunk-jpl/externalpackages/dem/seacolor.m
+___________________________________________________________________
+Added: svn:executable
+## -0,0 +1 ##
++*
+Index: ../trunk-jpl/externalpackages/dem/landcolor.m
+===================================================================
+--- ../trunk-jpl/externalpackages/dem/landcolor.m	(revision 0)
++++ ../trunk-jpl/externalpackages/dem/landcolor.m	(revision 14224)
+@@ -0,0 +1,78 @@
++function y = landcolor(n)
++%LANDCOLOR Land colormap
++%
++%	Author: Francois Beauducel <beauducel@ipgp.fr>
++%	$Revision: 1.0.0 $   $Date: 2012/05/17 11:22:44 $
++
++J = [ ...
++0.095678 0.53427 0.21682 
++0.15785 0.5979 0.23274 
++0.21286 0.64673 0.2514 
++0.26411 0.68789 0.27268 
++0.32959 0.72416 0.31308 
++0.39794 0.75695 0.36038 
++0.46153 0.7871 0.40624 
++0.52108 0.81516 0.45135 
++0.57702 0.84152 0.49547 
++0.62973 0.86645 0.53891 
++0.67946 0.89016 0.58187 
++0.72647 0.91282 0.62427 
++0.77095 0.93455 0.66619 
++0.81306 0.95546 0.70772 
++0.85292 0.97563 0.7489 
++0.89066 0.99514 0.78976 
++0.88379 0.98595 0.77038 
++0.86389 0.96758 0.73236 
++0.84615 0.94972 0.69623 
++0.8303 0.93233 0.66186 
++0.81612 0.91536 0.6291 
++0.80341 0.8988 0.59784 
++0.79201 0.8826 0.56795 
++0.78191 0.86676 0.53946 
++0.7729 0.85123 0.51224 
++0.76479 0.83602 0.48615 
++0.75747 0.8211 0.46111 
++0.75084 0.80645 0.43704 
++0.74506 0.79206 0.41414 
++0.73981 0.77792 0.39211 
++0.73501 0.76401 0.37089 
++0.73068 0.75033 0.35052 
++0.72683 0.73685 0.33106 
++0.72042 0.72074 0.31228 
++0.71032 0.70085 0.29417 
++0.69761 0.67821 0.27694 
++0.68489 0.65558 0.26026 
++0.67235 0.63313 0.24418 
++0.65997 0.61082 0.22889 
++0.64775 0.58874 0.21406 
++0.63568 0.56689 0.19983 
++0.62376 0.54527 0.18622 
++0.61197 0.52391 0.17299 
++0.60033 0.50283 0.16046 
++0.58881 0.48203 0.14832 
++0.57742 0.46151 0.13667 
++0.56616 0.44133 0.12555 
++0.55502 0.4214 0.11472 
++0.54398 0.4019 0.10456 
++0.53306 0.38266 0.094633 
++0.52226 0.36382 0.085242 
++0.51155 0.3453 0.076179 
++0.50095 0.32714 0.067515 
++0.49045 0.30938 0.059259 
++0.48005 0.29193 0.051294 
++0.46973 0.27495 0.043796 
++0.45951 0.25823 0.0365 
++0.44938 0.24206 0.029715 
++0.43934 0.22609 0.023063 
++0.42938 0.21074 0.016949 
++0.41951 0.19556 0.010917 
++0.40971 0.18105 0.0054326 
++0.4 0.16667 0 
++];
++
++l = length(J);
++if nargin < 1
++	n = 256;
++end
++y = interp1(1:l,J,linspace(1,l,n),'*linear');
++
+
+Property changes on: ../trunk-jpl/externalpackages/dem/landcolor.m
+___________________________________________________________________
+Added: svn:executable
+## -0,0 +1 ##
++*
Index: /issm/oecreview/Archive/14064-14311/ISSM-14224-14225.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14224-14225.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14224-14225.diff	(revision 14312)
@@ -0,0 +1,12 @@
+Index: ../trunk-jpl/startup.m
+===================================================================
+--- ../trunk-jpl/startup.m	(revision 14224)
++++ ../trunk-jpl/startup.m	(revision 14225)
+@@ -36,6 +36,7 @@
+ addpath(recursivepath([ISSM_DIR '/externalpackages/export_fig']));
+ addpath(recursivepath([ISSM_DIR '/externalpackages/googleearthtoolbox']));
+ addpath(recursivepath([ISSM_DIR '/externalpackages/cm_and_cb_utilities']));
++addpath(recursivepath([ISSM_DIR '/externalpackages/dem']));
+ 
+ clear ISSM_DIR;
+ 
Index: /issm/oecreview/Archive/14064-14311/ISSM-14225-14226.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14225-14226.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14225-14226.diff	(revision 14312)
@@ -0,0 +1,47 @@
+Index: ../trunk-jpl/src/c/Container/Observations.cpp
+===================================================================
+--- ../trunk-jpl/src/c/Container/Observations.cpp	(revision 14225)
++++ ../trunk-jpl/src/c/Container/Observations.cpp	(revision 14226)
+@@ -167,6 +167,16 @@
+ 	xDelete<int>(indices);
+ 
+ }/*}}}*/
++/*FUNCTION Observations::Distances{{{*/
++void Observations::Distances(IssmPDouble* distances,IssmPDouble *x,IssmPDouble *y,int n,IssmPDouble radius){
++
++	IssmPDouble xi,yi,obs;
++
++	for(int i=0;i<n;i++){
++		this->ClosestObservation(&xi,&yi,&obs,x[i],y[i],radius);
++		distances[i]=sqrt( (x[i]-xi)*(x[i]-xi) + (y[i]-yi)*(y[i]-yi) );
++	}
++}/*}}}*/
+ /*FUNCTION Observations::ObservationList(IssmPDouble **px,IssmPDouble **py,IssmPDouble **pobs,int* pnobs,IssmPDouble x_interp,IssmPDouble y_interp,IssmPDouble radius,int maxdata){{{*/
+ void Observations::ObservationList(IssmPDouble **px,IssmPDouble **py,IssmPDouble **pobs,int* pnobs,IssmPDouble x_interp,IssmPDouble y_interp,IssmPDouble radius,int maxdata){
+ 
+Index: ../trunk-jpl/src/c/Container/Observations.h
+===================================================================
+--- ../trunk-jpl/src/c/Container/Observations.h	(revision 14225)
++++ ../trunk-jpl/src/c/Container/Observations.h	(revision 14226)
+@@ -26,6 +26,7 @@
+ 
+ 		/*Methods*/
+ 		void ClosestObservation(IssmDouble *px,IssmDouble *py,IssmDouble *pobs,IssmDouble x_interp,IssmDouble y_interp,IssmDouble radius);
++		void Distances(IssmPDouble* distances,IssmPDouble *x,IssmPDouble *y,int n,IssmPDouble radius);
+ 		void InterpolationIDW(IssmDouble *pprediction,IssmDouble x_interp,IssmDouble y_interp,IssmDouble radius,int mindata,int maxdata,IssmDouble power);
+ 		void InterpolationV4(IssmDouble *pprediction,IssmDouble x_interp,IssmDouble y_interp,IssmDouble radius,int mindata,int maxdata);
+ 		void InterpolationKriging(IssmDouble *pprediction,IssmDouble *perror,IssmDouble x_interp,IssmDouble y_interp,IssmDouble radius,int mindata,int maxdata,Variogram* variogram);
+Index: ../trunk-jpl/src/c/modules/Krigingx/Krigingx.cpp
+===================================================================
+--- ../trunk-jpl/src/c/modules/Krigingx/Krigingx.cpp	(revision 14225)
++++ ../trunk-jpl/src/c/modules/Krigingx/Krigingx.cpp	(revision 14226)
+@@ -57,6 +57,9 @@
+ 	else if(strcmp(output,"variomap")==0){
+ 		observations->Variomap(predictions,x_interp,n_interp);
+ 	}
++	else if(strcmp(output,"distance")==0){
++		observations->Distances(predictions,x_interp,y_interp,n_interp,radius);
++	}
+ 	else if(strcmp(output,"delaunay")==0){
+ 		int nobs,nel;
+ 		double *x     = NULL;
Index: /issm/oecreview/Archive/14064-14311/ISSM-14226-14227.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14226-14227.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14226-14227.diff	(revision 14312)
@@ -0,0 +1,13 @@
+Index: ../trunk-jpl/src/m/parameterization/contourenvelope.m
+===================================================================
+--- ../trunk-jpl/src/m/parameterization/contourenvelope.m	(revision 14226)
++++ ../trunk-jpl/src/m/parameterization/contourenvelope.m	(revision 14227)
+@@ -100,7 +100,7 @@
+ 	el1=pos(i);
+ 	els2=mesh.elementconnectivity(el1,find(mesh.elementconnectivity(el1,:)));
+ 	if length(els2)>1,
+-		flag=intersect(mesh.elements(els2(1),:),mesh.elements(els2(2),:));
++		flag=intersect(mesh.elements(els2(1),:),mesh.elements(els2(2),:),md.elements(el1,:));
+ 		nods1=mesh.elements(el1,:);
+ 		nods1(find(nods1==flag))=[];
+ 		segments(count,:)=[nods1 el1];
Index: /issm/oecreview/Archive/14064-14311/ISSM-14227-14228.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14227-14228.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14227-14228.diff	(revision 14312)
@@ -0,0 +1,23 @@
+Index: ../trunk-jpl/src/m/classes/organizer.m
+===================================================================
+--- ../trunk-jpl/src/m/classes/organizer.m	(revision 14227)
++++ ../trunk-jpl/src/m/classes/organizer.m	(revision 14228)
+@@ -12,7 +12,7 @@
+ %   Examples:
+ %      org = organizer('repository','Models/','prefix','AGU2015','steps',0);  %build an empty organizer object with a given repository
+ 
+-classdef organizer
++classdef organizer < handle
+     properties (SetAccess=private) 
+ 		% {{{
+ 		currentstep   =0;
+@@ -141,9 +141,6 @@
+ 				bool=true;
+ 			end
+ 
+-			%assign org back to calling workspace
+-			assignin('caller',inputname(1),org);
+-
+ 		end%}}}
+ 		function savemodel(org,md) % {{{
+ 
Index: /issm/oecreview/Archive/14064-14311/ISSM-14228-14229.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14228-14229.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14228-14229.diff	(revision 14312)
@@ -0,0 +1,13 @@
+Index: ../trunk-jpl/src/m/parameterization/contourenvelope.m
+===================================================================
+--- ../trunk-jpl/src/m/parameterization/contourenvelope.m	(revision 14228)
++++ ../trunk-jpl/src/m/parameterization/contourenvelope.m	(revision 14229)
+@@ -100,7 +100,7 @@
+ 	el1=pos(i);
+ 	els2=mesh.elementconnectivity(el1,find(mesh.elementconnectivity(el1,:)));
+ 	if length(els2)>1,
+-		flag=intersect(mesh.elements(els2(1),:),mesh.elements(els2(2),:),md.elements(el1,:));
++		flag=intersect(intersect(mesh.elements(els2(1),:),mesh.elements(els2(2),:)),mesh.elements(el1,:));
+ 		nods1=mesh.elements(el1,:);
+ 		nods1(find(nods1==flag))=[];
+ 		segments(count,:)=[nods1 el1];
Index: /issm/oecreview/Archive/14064-14311/ISSM-14229-14230.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14229-14230.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14229-14230.diff	(revision 14312)
@@ -0,0 +1,39 @@
+Index: ../trunk-jpl/src/m/classes/model/model.m
+===================================================================
+--- ../trunk-jpl/src/m/classes/model/model.m	(revision 14229)
++++ ../trunk-jpl/src/m/classes/model/model.m	(revision 14230)
+@@ -501,16 +501,27 @@
+ 				md2.results=struct();
+ 				solutionfields=fields(md1.results);
+ 				for i=1:length(solutionfields),
+-					%get subfields
+-					solutionsubfields=fields(md1.results.(solutionfields{i}));
+-					for j=1:length(solutionsubfields),
+-						field=md1.results.(solutionfields{i}).(solutionsubfields{j});
++					if isstruct(md1.results.(solutionfields{i}))
++						%get subfields
++						solutionsubfields=fields(md1.results.(solutionfields{i}));
++						for j=1:length(solutionsubfields),
++							field=md1.results.(solutionfields{i}).(solutionsubfields{j});
++							if length(field)==numberofvertices1,
++								md2.results.(solutionfields{i}).(solutionsubfields{j})=field(pos_node);
++							elseif length(field)==numberofelements1,
++								md2.results.(solutionfields{i}).(solutionsubfields{j})=field(pos_elem);
++							else
++								md2.results.(solutionfields{i}).(solutionsubfields{j})=field;
++							end
++						end
++					else
++						field=md1.results.(solutionfields{i});
+ 						if length(field)==numberofvertices1,
+-							md2.results.(solutionfields{i}).(solutionsubfields{j})=field(pos_node);
++							md2.results.(solutionfields{i})=field(pos_node);
+ 						elseif length(field)==numberofelements1,
+-							md2.results.(solutionfields{i}).(solutionsubfields{j})=field(pos_elem);
++							md2.results.(solutionfields{i})=field(pos_elem);
+ 						else
+-							md2.results.(solutionfields{i}).(solutionsubfields{j})=field;
++							md2.results.(solutionfields{i})=field;
+ 						end
+ 					end
+ 				end
Index: /issm/oecreview/Archive/14064-14311/ISSM-14230-14231.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14230-14231.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14230-14231.diff	(revision 14312)
@@ -0,0 +1,13 @@
+Index: ../trunk-jpl/src/m/parameterization/contourenvelope.py
+===================================================================
+--- ../trunk-jpl/src/m/parameterization/contourenvelope.py	(revision 14230)
++++ ../trunk-jpl/src/m/parameterization/contourenvelope.py	(revision 14231)
+@@ -98,7 +98,7 @@
+ 	for el1 in pos:
+ 		els2=mesh.elementconnectivity[el1,numpy.nonzero(mesh.elementconnectivity[el1,:])[0]]-1
+ 		if numpy.size(els2)>1:
+-			flag=numpy.intersect1d(mesh.elements[els2[0],:],mesh.elements[els2[1],:])
++			flag=numpy.intersect1d(numpy.intersect1d(mesh.elements[els2[0],:],mesh.elements[els2[1],:]),mesh.elements[el1,:])
+ 			nods1=mesh.elements[el1,:]
+ 			nods1=numpy.delete(nods1,numpy.nonzero(nods1==flag))
+ 			segments[count,:]=[nods1[0],nods1[1],el1+1]
Index: /issm/oecreview/Archive/14064-14311/ISSM-14231-14232.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14231-14232.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14231-14232.diff	(revision 14312)
@@ -0,0 +1,113 @@
+Index: ../trunk-jpl/src/wrappers/python/io/WritePythonData.cpp
+===================================================================
+--- ../trunk-jpl/src/wrappers/python/io/WritePythonData.cpp	(revision 14231)
++++ ../trunk-jpl/src/wrappers/python/io/WritePythonData.cpp	(revision 14232)
+@@ -136,8 +136,9 @@
+ 	npy_intp dims[2]={0,0};
+ 	PyObject* array=NULL;
+ 
++	matrix->GetSize(&M,&N);
+ 	buffer=matrix->ToSerial();
+-	matrix->GetSize(&M,&N);
++
+ 	dims[0]=(npy_intp)M;
+ 	dims[1]=(npy_intp)N;
+ 	array=PyArray_SimpleNewFromData(2,dims,NPY_DOUBLE,buffer);
+@@ -153,8 +154,9 @@
+ 	npy_intp dim=10;
+ 	PyObject* array=NULL;
+ 
++	vector->GetSize(&M);
+ 	buffer=vector->ToMPISerial();
+-	vector->GetSize(&M);
++
+ 	dim=(npy_intp)M;
+ 	array=PyArray_SimpleNewFromData(1,&dim,NPY_DOUBLE,buffer);
+ 
+@@ -164,24 +166,22 @@
+ /*FUNCTION WriteData(PyObject* py_tuple,int index,SeqMat<int>* matrix){{{*/
+ void WriteData(PyObject* py_tuple,int index,SeqMat<int>* matrix){
+ 
+-	//FIXME: convert to double for now
+-	
+ 	int M,N;
+-	int* buffer=NULL;
++	int* ibuffer=NULL;
+ 	npy_intp dims[2]={0,0};
+ 	PyObject* array=NULL;
+ 
+ 	matrix->GetSize(&M,&N);
+-	buffer=matrix->ToSerial();
++	ibuffer=matrix->ToSerial();
+ 
+-	/*convert to double*/
+-	double* bufferdouble=xNew<IssmDouble>(M*N);
+-	for(int i=0;i<M*N;i++) bufferdouble[i]=(double)buffer[i];
+-	xDelete<int>(buffer);
++	/*convert to long*/
++	long* lbuffer=xNew<long>(M*N);
++	for(int i=0;i<M*N;i++) lbuffer[i]=(long)ibuffer[i];
++	xDelete<int>(ibuffer);
+ 
+ 	dims[0]=(npy_intp)M;
+ 	dims[1]=(npy_intp)N;
+-	array=PyArray_SimpleNewFromData(2,dims,NPY_DOUBLE,bufferdouble);
++	array=PyArray_SimpleNewFromData(2,dims,NPY_INT64,lbuffer);
+ 
+ 	PyTuple_SetItem(py_tuple, index, array);
+ 
+@@ -189,23 +189,21 @@
+ /*FUNCTION WriteData(PyObject* py_tuple,int index,SeqVec<int>* vector){{{*/
+ void WriteData(PyObject* py_tuple,int index,SeqVec<int>* vector){
+ 
+-	//FIXME: convert to double for now
+-
+ 	int M;
+-	int* buffer=NULL;
++	int* ibuffer=NULL;
+ 	npy_intp dim=10;
+ 	PyObject* array=NULL;
+ 
+ 	vector->GetSize(&M);
+-	buffer=vector->ToMPISerial();
++	ibuffer=vector->ToMPISerial();
+ 
+-	/*convert to double*/
+-	IssmDouble* bufferdouble=xNew<IssmDouble>(M);
+-	for(int i=0;i<M;i++) bufferdouble[i]=(double)buffer[i];
+-	xDelete<int>(buffer);
++	/*convert to long*/
++	long* lbuffer=xNew<long>(M);
++	for(int i=0;i<M;i++) lbuffer[i]=(long)ibuffer[i];
++	xDelete<int>(ibuffer);
+ 
+ 	dim=(npy_intp)M;
+-	array=PyArray_SimpleNewFromData(1,&dim,NPY_DOUBLE,bufferdouble);
++	array=PyArray_SimpleNewFromData(1,&dim,NPY_INT64,lbuffer);
+ 
+ 	PyTuple_SetItem(py_tuple, index, array);
+ }
+@@ -276,9 +274,7 @@
+ /*FUNCTION PyArrayFromCopiedData(int dimi,int dimj,int* data){{{*/
+ PyObject* PyArrayFromCopiedData(int dimi,int dimj,int* data){
+ 
+-	//FIXME: convert to double for now
+-
+-	double* pydata;
++	long* pydata;
+ 	npy_intp pydims[2]={0,0};
+ 
+ 	/*  note that PyArray_SimpleNewFromData does not copy the data, so that when the original
+@@ -286,9 +282,8 @@
+ 
+ 	pydims[0]=(npy_intp)dimi;
+ 	pydims[1]=(npy_intp)dimj;
+-	pydata=xNew<IssmDouble>(dimi*dimj);
+-	//memcpy(pydata,data,dimi*dimj*sizeof(int));
+-	for(int i=0;i<dimi*dimj;i++) pydata[i]=(double)data[i];
+-	return PyArray_SimpleNewFromData(2,pydims,NPY_DOUBLE,pydata);
++	pydata=xNew<long>(dimi*dimj);
++	for(int i=0;i<dimi*dimj;i++) pydata[i]=(long)data[i];
++	return PyArray_SimpleNewFromData(2,pydims,NPY_INT64,pydata);
+ }
+ /*}}}*/
Index: /issm/oecreview/Archive/14064-14311/ISSM-14232-14233.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14232-14233.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14232-14233.diff	(revision 14312)
@@ -0,0 +1,41 @@
+Index: ../trunk-jpl/externalpackages/gsl/install-greenplanet.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/gsl/install-greenplanet.sh	(revision 0)
++++ ../trunk-jpl/externalpackages/gsl/install-greenplanet.sh	(revision 14233)
+@@ -0,0 +1,30 @@
++#!/bin/bash
++set -eu
++
++#Some cleanup
++rm -rf src install gsl-1.15
++mkdir src install
++
++#Download from ISSM server
++$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/gsl-1.15.tar.gz' 'gsl-1.15.tar.gz'
++
++#Untar 
++tar -zxvf  gsl-1.15.tar.gz
++
++#Move gsl into src directory
++mv gsl-1.15/* src
++rm -rf gsl-1.15
++
++#Configure gsl
++cd src
++
++./configure \
++	--prefix="$ISSM_DIR/externalpackages/gsl/install" 
++
++#Compile gsl
++if [ $# -eq 0 ]; then
++	make
++else
++	make -j $1
++fi
++make install 
+
+Property changes on: ../trunk-jpl/externalpackages/gsl/install-greenplanet.sh
+___________________________________________________________________
+Added: svn:executable
+## -0,0 +1 ##
++*
Index: /issm/oecreview/Archive/14064-14311/ISSM-14233-14234.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14233-14234.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14233-14234.diff	(revision 14312)
@@ -0,0 +1,290 @@
+Index: ../trunk-jpl/src/wrappers/python/io/pythonio.h
+===================================================================
+--- ../trunk-jpl/src/wrappers/python/io/pythonio.h	(revision 14233)
++++ ../trunk-jpl/src/wrappers/python/io/pythonio.h	(revision 14234)
+@@ -26,14 +26,18 @@
+ void WriteData(PyObject* py_tuple,int index, SeqVec<double>* vector);
+ void WriteData(PyObject* py_tuple,int index, SeqMat<int>* matrix);
+ void WriteData(PyObject* py_tuple,int index, SeqVec<int>* vector);
++void WriteData(PyObject* py_tuple,int index, SeqMat<bool>* matrix);
++void WriteData(PyObject* py_tuple,int index, SeqVec<bool>* vector);
+ void WriteData(PyObject* py_tuple,int index, BamgGeom* bamggeom);
+ void WriteData(PyObject* py_tuple,int index, BamgMesh* bamgmesh);
+ void WriteData(PyObject* py_tuple,int index, RiftStruct* riftstruct);
+ 
+-void FetchData(int** pvector,int* pM,PyObject* py_ref);
+-void FetchData(double** pvector,int* pM,PyObject* py_ref);
+ void FetchData(double** pmatrix,int* pM,int *pN,PyObject* py_array);
+ void FetchData(int** pmatrix,int* pM,int *pN,PyObject* py_matrix);
++void FetchData(bool** pmatrix,int* pM,int *pN,PyObject* py_matrix);
++void FetchData(double** pvector,int* pM,PyObject* py_ref);
++void FetchData(int** pvector,int* pM,PyObject* py_ref);
++void FetchData(bool** pvector,int* pM,PyObject* py_ref);
+ void FetchData(char** pstring,PyObject* py_unicode);
+ void FetchData(double* pscalar,PyObject* py_float);
+ void FetchData(int* pscalar,PyObject* py_long);
+@@ -50,5 +54,6 @@
+ PyObject* PyArrayFromCopiedData(int dims[2],double* data);
+ PyObject* PyArrayFromCopiedData(int dimi,int dimj,double* data);
+ PyObject* PyArrayFromCopiedData(int dimi,int dimj,int* data);
++PyObject* PyArrayFromCopiedData(int dimi,int dimj,bool* data);
+ 
+ #endif	/* _IO_H_ */
+Index: ../trunk-jpl/src/wrappers/python/io/FetchPythonData.cpp
+===================================================================
+--- ../trunk-jpl/src/wrappers/python/io/FetchPythonData.cpp	(revision 14233)
++++ ../trunk-jpl/src/wrappers/python/io/FetchPythonData.cpp	(revision 14234)
+@@ -147,7 +147,7 @@
+ 			}
+ 
+ 			else
+-				_error_("unrecognized float pyarray type in input!");
++				_error_("unrecognized double pyarray type in input!");
+ 		}
+ 		else
+ 			matrix=NULL;
+@@ -224,7 +224,7 @@
+ 			}
+ 
+ 			else
+-				_error_("unrecognized long pyarray type in input!");
++				_error_("unrecognized int pyarray type in input!");
+ 		}
+ 		else
+ 			matrix=NULL;
+@@ -243,6 +243,83 @@
+ 	if(pmatrix)*pmatrix=matrix;
+ }
+ /*}}}*/
++/*FUNCTION FetchData(bool** pmatrix,int* pM, int* pN, PyObject* py_matrix){{{*/
++void FetchData(bool** pmatrix,int* pM,int *pN,PyObject* py_matrix){
++
++	/*output: */
++	bool* bmatrix=NULL;
++	bool* matrix=NULL;
++	int M,N;
++	int ndim;
++	npy_intp*  dims=NULL;
++
++	/*intermediary:*/
++	double* dmatrix=NULL;
++	long* lmatrix=NULL;
++	int i;
++
++	if     (PyArray_Check((PyArrayObject*)py_matrix)) {
++		/*retrieve dimensions: */
++		ndim=PyArray_NDIM((const PyArrayObject*)py_matrix);
++		if      (ndim==2) {
++			dims=PyArray_DIMS((PyArrayObject*)py_matrix);
++			M=dims[0]; N=dims[1];
++		}
++		else if (ndim==1) {
++			dims=PyArray_DIMS((PyArrayObject*)py_matrix);
++			M=dims[0]; N=1;
++		}
++		else
++			_error_("expecting an MxN matrix or M vector in input!");
++
++		if (M && N) {
++			if      (PyArray_TYPE((PyArrayObject*)py_matrix) == NPY_DOUBLE) {
++				/*retrieve internal value: */
++				dmatrix=(double*)PyArray_DATA((PyArrayObject*)py_matrix);
++
++				/*transform into bool matrix: */
++				matrix=xNew<bool>(M*N);
++				for(i=0;i<M*N;i++)matrix[i]=(bool)dmatrix[i];
++			}
++
++			else if (PyArray_TYPE((PyArrayObject*)py_matrix) == NPY_INT64) {
++				/*retrieve internal value: */
++				lmatrix=(long*)PyArray_DATA((PyArrayObject*)py_matrix);
++
++				/*transform into bool matrix: */
++				matrix=xNew<bool>(M*N);
++				for(i=0;i<M*N;i++)matrix[i]=(bool)lmatrix[i];
++			}
++
++			else if (PyArray_TYPE((PyArrayObject*)py_matrix) == NPY_BOOL) {
++				/*retrieve internal value: */
++				bmatrix=(bool*)PyArray_DATA((PyArrayObject*)py_matrix);
++
++				/*copy matrix: */
++				matrix=xNew<bool>(M*N);
++				memcpy(matrix,bmatrix,(M*N)*sizeof(bool));
++			}
++
++			else
++				_error_("unrecognized bool pyarray type in input!");
++		}
++		else
++			matrix=NULL;
++	}
++
++	else {
++		M=1;
++		N=1;
++		matrix=xNew<bool>(M*N);
++		FetchData(&(matrix[0]),py_matrix);
++	}
++
++	/*output: */
++	if(pM)*pM=M;
++	if(pN)*pN=N;
++	if(pmatrix)*pmatrix=matrix;
++}
++/*}}}*/
+ /*FUNCTION FetchData(double** pvector,int* pM, PyObject* py_vector){{{*/
+ void FetchData(double** pvector,int* pM,PyObject* py_vector){
+ 
+@@ -293,7 +370,7 @@
+ 		}
+ 
+ 		else
+-			_error_("unrecognized vector type in input!");
++			_error_("unrecognized double pyarray type in input!");
+ 	}
+ 	else
+ 		vector=NULL;
+@@ -353,7 +430,7 @@
+ 		}
+ 
+ 		else
+-		 _error_("unrecognized vector type in input!");
++		 _error_("unrecognized int pyarray type in input!");
+ 	}
+ 	else
+ 	 vector=NULL;
+@@ -363,7 +440,67 @@
+ 	if(pvector)*pvector=vector;
+ }
+ /*}}}*/
++/*FUNCTION FetchData(bool** pvector,int* pM, PyObject* py_vector){{{*/
++void FetchData(bool** pvector,int* pM,PyObject* py_vector){
+ 
++	/*output: */
++	bool* bvector=NULL;
++	bool* vector=NULL;
++	int M;
++	int ndim;
++	npy_intp*  dims=NULL;
++
++	/*intermediary:*/
++	double* dvector=NULL;
++	long* lvector=NULL;
++	int i;
++
++	/*retrieve dimensions: */
++	ndim=PyArray_NDIM((const PyArrayObject*)py_vector);
++	if(ndim!=1)_error_("expecting an Mx1 vector in input!");
++	dims=PyArray_DIMS((PyArrayObject*)py_vector);
++	M=dims[0]; 
++
++	if (M) {
++		if      (PyArray_TYPE((PyArrayObject*)py_vector) == NPY_DOUBLE) {
++			/*retrieve internal value: */
++			dvector=(double*)PyArray_DATA((PyArrayObject*)py_vector);
++
++			/*transform into bool vector: */
++			vector=xNew<bool>(M);
++			for(i=0;i<M;i++)vector[i]=(bool)dvector[i];
++		}
++
++		else if (PyArray_TYPE((PyArrayObject*)py_vector) == NPY_INT64) {
++			/*retrieve internal value: */
++			lvector=(long*)PyArray_DATA((PyArrayObject*)py_vector);
++
++			/*transform into bool vector: */
++			vector=xNew<bool>(M);
++			for(i=0;i<M;i++)vector[i]=(bool)lvector[i];
++		}
++
++		else if (PyArray_TYPE((PyArrayObject*)py_vector) == NPY_BOOL) {
++			/*retrieve internal value: */
++			bvector=(bool*)PyArray_DATA((PyArrayObject*)py_vector);
++
++			/*copy vector: */
++			vector=xNew<bool>(M);
++			memcpy(vector,bvector,(M)*sizeof(bool));
++		}
++
++		else
++			_error_("unrecognized bool pyarray type in input!");
++	}
++	else
++		vector=NULL;
++
++	/*output: */
++	if(pM)*pM=M;
++	if(pvector)*pvector=vector;
++}
++/*}}}*/
++
+ /*ISSM objects*/
+ /*FUNCTION FetchData(BamgGeom** pbamggeom,PyObject* py_dict){{{*/
+ void FetchData(BamgGeom** pbamggeom,PyObject* py_dict){
+Index: ../trunk-jpl/src/wrappers/python/io/WritePythonData.cpp
+===================================================================
+--- ../trunk-jpl/src/wrappers/python/io/WritePythonData.cpp	(revision 14233)
++++ ../trunk-jpl/src/wrappers/python/io/WritePythonData.cpp	(revision 14234)
+@@ -208,6 +208,41 @@
+ 	PyTuple_SetItem(py_tuple, index, array);
+ }
+ /*}}}*/
++/*FUNCTION WriteData(PyObject* py_tuple,int index,SeqMat<bool>* matrix){{{*/
++void WriteData(PyObject* py_tuple,int index,SeqMat<bool>* matrix){
++
++	int M,N;
++	bool* buffer=NULL;
++	npy_intp dims[2]={0,0};
++	PyObject* array=NULL;
++
++	matrix->GetSize(&M,&N);
++	buffer=matrix->ToSerial();
++
++	dims[0]=(npy_intp)M;
++	dims[1]=(npy_intp)N;
++	array=PyArray_SimpleNewFromData(2,dims,NPY_BOOL,buffer);
++
++	PyTuple_SetItem(py_tuple, index, array);
++
++}/*}}}*/
++/*FUNCTION WriteData(PyObject* py_tuple,int index,SeqVec<bool>* vector){{{*/
++void WriteData(PyObject* py_tuple,int index,SeqVec<bool>* vector){
++
++	int M;
++	bool* buffer=NULL;
++	npy_intp dim=10;
++	PyObject* array=NULL;
++
++	vector->GetSize(&M);
++	buffer=vector->ToMPISerial();
++
++	dim=(npy_intp)M;
++	array=PyArray_SimpleNewFromData(1,&dim,NPY_BOOL,buffer);
++
++	PyTuple_SetItem(py_tuple, index, array);
++}
++/*}}}*/
+ /*FUNCTION WriteData(PyObject* py_tuple,int index,RiftStruct* riftstruct){{{*/
+ void WriteData(PyObject* py_tuple,int index,RiftStruct* riftstruct){
+ 
+@@ -287,3 +322,19 @@
+ 	return PyArray_SimpleNewFromData(2,pydims,NPY_INT64,pydata);
+ }
+ /*}}}*/
++/*FUNCTION PyArrayFromCopiedData(int dimi,int dimj,bool* data){{{*/
++PyObject* PyArrayFromCopiedData(int dimi,int dimj,bool* data){
++
++	bool* pydata;
++	npy_intp pydims[2]={0,0};
++
++	/*  note that PyArray_SimpleNewFromData does not copy the data, so that when the original
++		 object (e.g. bamggeom,bamgmesh) is deleted, the data is gone.  */
++
++	pydims[0]=(npy_intp)dimi;
++	pydims[1]=(npy_intp)dimj;
++	pydata=xNew<bool>(dimi*dimj);
++	memcpy(pydata,data,dimi*dimj*sizeof(bool));
++	return PyArray_SimpleNewFromData(2,pydims,NPY_BOOL,pydata);
++}
++/*}}}*/
Index: /issm/oecreview/Archive/14064-14311/ISSM-14234-14235.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14234-14235.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14234-14235.diff	(revision 14312)
@@ -0,0 +1,17 @@
+Index: ../trunk-jpl/src/c/shared/TriMesh/TriMeshUtils.cpp
+===================================================================
+--- ../trunk-jpl/src/c/shared/TriMesh/TriMeshUtils.cpp	(revision 14234)
++++ ../trunk-jpl/src/c/shared/TriMesh/TriMeshUtils.cpp	(revision 14235)
+@@ -1076,9 +1076,9 @@
+ 					/*we need  to change the segment elements corresponding to el: */
+ 					for (k=0;k<num_seg;k++){
+ 						if (*(segments+3*k+2)==(el+1)){
+-							if ( ((*(segments+3*k+0)==node1) && (*(segments+3*k+1)==node2)) || ((*(segments+3*k+0)==node2) && (*(segments+3*k+1)==node1))) *(segments+3*k+2)=(double)(el+1);
+-							if ( ((*(segments+3*k+0)==node2) && (*(segments+3*k+1)==node3)) || ((*(segments+3*k+0)==node3) && (*(segments+3*k+1)==node2))) *(segments+3*k+2)=(double)(nel+1);
+-							if ( ((*(segments+3*k+0)==node3) && (*(segments+3*k+1)==node1)) || ((*(segments+3*k+0)==node1) && (*(segments+3*k+1)==node3))) *(segments+3*k+2)=(double)(nel+2);
++							if ( ((*(segments+3*k+0)==node1) && (*(segments+3*k+1)==node2)) || ((*(segments+3*k+0)==node2) && (*(segments+3*k+1)==node1))) *(segments+3*k+2)=el+1;
++							if ( ((*(segments+3*k+0)==node2) && (*(segments+3*k+1)==node3)) || ((*(segments+3*k+0)==node3) && (*(segments+3*k+1)==node2))) *(segments+3*k+2)=nel+1;
++							if ( ((*(segments+3*k+0)==node3) && (*(segments+3*k+1)==node1)) || ((*(segments+3*k+0)==node1) && (*(segments+3*k+1)==node3))) *(segments+3*k+2)=nel+2;
+ 						}
+ 					}
+ 
Index: /issm/oecreview/Archive/14064-14311/ISSM-14235-14236.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14235-14236.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14235-14236.diff	(revision 14312)
@@ -0,0 +1,289 @@
+Index: ../trunk-jpl/src/wrappers/python/io/FetchPythonData.cpp
+===================================================================
+--- ../trunk-jpl/src/wrappers/python/io/FetchPythonData.cpp	(revision 14235)
++++ ../trunk-jpl/src/wrappers/python/io/FetchPythonData.cpp	(revision 14236)
+@@ -335,46 +335,64 @@
+ 	bool* bvector=NULL;
+ 	int i;
+ 
+-	/*retrieve dimensions: */
+-	ndim=PyArray_NDIM((const PyArrayObject*)py_vector);
+-	if(ndim!=1)_error_("expecting an Mx1 vector in input!");
+-	dims=PyArray_DIMS((PyArrayObject*)py_vector);
+-	M=dims[0]; 
++	if     (PyArray_Check((PyArrayObject*)py_vector)) {
++		/*retrieve dimensions: */
++		ndim=PyArray_NDIM((const PyArrayObject*)py_vector);
++		if      (ndim==1) {
++			dims=PyArray_DIMS((PyArrayObject*)py_vector);
++			M=dims[0]; 
++		}
++		else if (ndim==2) {
++			dims=PyArray_DIMS((PyArrayObject*)py_vector);
++			if (dims[1]==1)
++				M=dims[0]; 
++			else
++				_error_("expecting an Mx1 matrix or M vector in input!");
++		}
++		else
++			_error_("expecting an Mx1 matrix or M vector in input!");
+ 
+-	if (M) {
+-		if      (PyArray_TYPE((PyArrayObject*)py_vector) == NPY_DOUBLE) {
+-			/*retrieve internal value: */
+-			dvector=(double*)PyArray_DATA((PyArrayObject*)py_vector);
++		if (M) {
++			if      (PyArray_TYPE((PyArrayObject*)py_vector) == NPY_DOUBLE) {
++				/*retrieve internal value: */
++				dvector=(double*)PyArray_DATA((PyArrayObject*)py_vector);
+ 
+-			/*copy vector: */
+-			vector=xNew<double>(M);
+-			memcpy(vector,dvector,(M)*sizeof(double));
+-		}
++				/*copy vector: */
++				vector=xNew<double>(M);
++				memcpy(vector,dvector,(M)*sizeof(double));
++			}
+ 
+-		else if (PyArray_TYPE((PyArrayObject*)py_vector) == NPY_INT64) {
+-			/*retrieve internal value: */
+-			lvector=(long*)PyArray_DATA((PyArrayObject*)py_vector);
++			else if (PyArray_TYPE((PyArrayObject*)py_vector) == NPY_INT64) {
++				/*retrieve internal value: */
++				lvector=(long*)PyArray_DATA((PyArrayObject*)py_vector);
+ 
+-			/*transform into double vector: */
+-			vector=xNew<double>(M);
+-			for(i=0;i<M;i++)vector[i]=(double)lvector[i];
+-		}
++				/*transform into double vector: */
++				vector=xNew<double>(M);
++				for(i=0;i<M;i++)vector[i]=(double)lvector[i];
++			}
+ 
+-		else if (PyArray_TYPE((PyArrayObject*)py_vector) == NPY_BOOL) {
+-			/*retrieve internal value: */
+-			bvector=(bool*)PyArray_DATA((PyArrayObject*)py_vector);
++			else if (PyArray_TYPE((PyArrayObject*)py_vector) == NPY_BOOL) {
++				/*retrieve internal value: */
++				bvector=(bool*)PyArray_DATA((PyArrayObject*)py_vector);
+ 
+-			/*transform into double vector: */
+-			vector=xNew<double>(M);
+-			for(i=0;i<M;i++)vector[i]=(double)bvector[i];
++				/*transform into double vector: */
++				vector=xNew<double>(M);
++				for(i=0;i<M;i++)vector[i]=(double)bvector[i];
++			}
++
++			else
++				_error_("unrecognized double pyarray type in input!");
+ 		}
+-
+ 		else
+-			_error_("unrecognized double pyarray type in input!");
++			vector=NULL;
+ 	}
+-	else
+-		vector=NULL;
+ 
++	else {
++		M=1;
++		vector=xNew<double>(M);
++		FetchData(&(vector[0]),py_vector);
++	}
++
+ 	/*output: */
+ 	if(pM)*pM=M;
+ 	if(pvector)*pvector=vector;
+@@ -395,46 +413,64 @@
+ 	double* dvector=NULL;
+ 	int i;
+ 
+-	/*retrieve dimensions: */
+-	ndim=PyArray_NDIM((const PyArrayObject*)py_vector);
+-	if(ndim!=1)_error_("expecting an Mx1 vector in input!");
+-	dims=PyArray_DIMS((PyArrayObject*)py_vector);
+-	M=dims[0]; 
++	if     (PyArray_Check((PyArrayObject*)py_vector)) {
++		/*retrieve dimensions: */
++		ndim=PyArray_NDIM((const PyArrayObject*)py_vector);
++		if      (ndim==1) {
++			dims=PyArray_DIMS((PyArrayObject*)py_vector);
++			M=dims[0]; 
++		}
++		else if (ndim==2) {
++			dims=PyArray_DIMS((PyArrayObject*)py_vector);
++			if (dims[1]==1)
++				M=dims[0]; 
++			else
++				_error_("expecting an Mx1 matrix or M vector in input!");
++		}
++		else
++			_error_("expecting an Mx1 matrix or M vector in input!");
+ 
+-	if (M) {
+-		if      (PyArray_TYPE((PyArrayObject*)py_vector) == NPY_DOUBLE) {
+-			/*retrieve internal value: */
+-			dvector=(double*)PyArray_DATA((PyArrayObject*)py_vector);
++		if (M) {
++			if      (PyArray_TYPE((PyArrayObject*)py_vector) == NPY_DOUBLE) {
++				/*retrieve internal value: */
++				dvector=(double*)PyArray_DATA((PyArrayObject*)py_vector);
+ 
+-			/*transform into int vector: */
+-			vector=xNew<int>(M);
+-			for(i=0;i<M;i++)vector[i]=(int)lvector[i];
+-		}
++				/*transform into int vector: */
++				vector=xNew<int>(M);
++				for(i=0;i<M;i++)vector[i]=(int)lvector[i];
++			}
+ 
+-		else if (PyArray_TYPE((PyArrayObject*)py_vector) == NPY_INT64) {
+-			/*retrieve internal value: */
+-			lvector=(long*)PyArray_DATA((PyArrayObject*)py_vector);
++			else if (PyArray_TYPE((PyArrayObject*)py_vector) == NPY_INT64) {
++				/*retrieve internal value: */
++				lvector=(long*)PyArray_DATA((PyArrayObject*)py_vector);
+ 
+-			/*transform into int vector: */
+-			vector=xNew<int>(M);
+-			for(i=0;i<M;i++)vector[i]=(int)lvector[i];
+-		}
++				/*transform into int vector: */
++				vector=xNew<int>(M);
++				for(i=0;i<M;i++)vector[i]=(int)lvector[i];
++			}
+ 
+-		else if (PyArray_TYPE((PyArrayObject*)py_vector) == NPY_BOOL) {
+-			/*retrieve internal value: */
+-			bvector=(bool*)PyArray_DATA((PyArrayObject*)py_vector);
++			else if (PyArray_TYPE((PyArrayObject*)py_vector) == NPY_BOOL) {
++				/*retrieve internal value: */
++				bvector=(bool*)PyArray_DATA((PyArrayObject*)py_vector);
+ 
+-			/*transform into int vector: */
+-			vector=xNew<int>(M);
+-			for(i=0;i<M;i++)vector[i]=(int)bvector[i];
++				/*transform into int vector: */
++				vector=xNew<int>(M);
++				for(i=0;i<M;i++)vector[i]=(int)bvector[i];
++			}
++
++			else
++			 _error_("unrecognized int pyarray type in input!");
+ 		}
+-
+ 		else
+-		 _error_("unrecognized int pyarray type in input!");
++			vector=NULL;
+ 	}
+-	else
+-	 vector=NULL;
+ 
++	else {
++		M=1;
++		vector=xNew<int>(M);
++		FetchData(&(vector[0]),py_vector);
++	}
++
+ 	/*output: */
+ 	if(pM)*pM=M;
+ 	if(pvector)*pvector=vector;
+@@ -455,46 +491,64 @@
+ 	long* lvector=NULL;
+ 	int i;
+ 
+-	/*retrieve dimensions: */
+-	ndim=PyArray_NDIM((const PyArrayObject*)py_vector);
+-	if(ndim!=1)_error_("expecting an Mx1 vector in input!");
+-	dims=PyArray_DIMS((PyArrayObject*)py_vector);
+-	M=dims[0]; 
++	if     (PyArray_Check((PyArrayObject*)py_vector)) {
++		/*retrieve dimensions: */
++		ndim=PyArray_NDIM((const PyArrayObject*)py_vector);
++		if      (ndim==1) {
++			dims=PyArray_DIMS((PyArrayObject*)py_vector);
++			M=dims[0]; 
++		}
++		else if (ndim==2) {
++			dims=PyArray_DIMS((PyArrayObject*)py_vector);
++			if (dims[1]==1)
++				M=dims[0]; 
++			else
++				_error_("expecting an Mx1 matrix or M vector in input!");
++		}
++		else
++			_error_("expecting an Mx1 matrix or M vector in input!");
+ 
+-	if (M) {
+-		if      (PyArray_TYPE((PyArrayObject*)py_vector) == NPY_DOUBLE) {
+-			/*retrieve internal value: */
+-			dvector=(double*)PyArray_DATA((PyArrayObject*)py_vector);
++		if (M) {
++			if      (PyArray_TYPE((PyArrayObject*)py_vector) == NPY_DOUBLE) {
++				/*retrieve internal value: */
++				dvector=(double*)PyArray_DATA((PyArrayObject*)py_vector);
+ 
+-			/*transform into bool vector: */
+-			vector=xNew<bool>(M);
+-			for(i=0;i<M;i++)vector[i]=(bool)dvector[i];
+-		}
++				/*transform into bool vector: */
++				vector=xNew<bool>(M);
++				for(i=0;i<M;i++)vector[i]=(bool)dvector[i];
++			}
+ 
+-		else if (PyArray_TYPE((PyArrayObject*)py_vector) == NPY_INT64) {
+-			/*retrieve internal value: */
+-			lvector=(long*)PyArray_DATA((PyArrayObject*)py_vector);
++			else if (PyArray_TYPE((PyArrayObject*)py_vector) == NPY_INT64) {
++				/*retrieve internal value: */
++				lvector=(long*)PyArray_DATA((PyArrayObject*)py_vector);
+ 
+-			/*transform into bool vector: */
+-			vector=xNew<bool>(M);
+-			for(i=0;i<M;i++)vector[i]=(bool)lvector[i];
+-		}
++				/*transform into bool vector: */
++				vector=xNew<bool>(M);
++				for(i=0;i<M;i++)vector[i]=(bool)lvector[i];
++			}
+ 
+-		else if (PyArray_TYPE((PyArrayObject*)py_vector) == NPY_BOOL) {
+-			/*retrieve internal value: */
+-			bvector=(bool*)PyArray_DATA((PyArrayObject*)py_vector);
++			else if (PyArray_TYPE((PyArrayObject*)py_vector) == NPY_BOOL) {
++				/*retrieve internal value: */
++				bvector=(bool*)PyArray_DATA((PyArrayObject*)py_vector);
+ 
+-			/*copy vector: */
+-			vector=xNew<bool>(M);
+-			memcpy(vector,bvector,(M)*sizeof(bool));
++				/*copy vector: */
++				vector=xNew<bool>(M);
++				memcpy(vector,bvector,(M)*sizeof(bool));
++			}
++
++			else
++				_error_("unrecognized bool pyarray type in input!");
+ 		}
+-
+ 		else
+-			_error_("unrecognized bool pyarray type in input!");
++			vector=NULL;
+ 	}
+-	else
+-		vector=NULL;
+ 
++	else {
++		M=1;
++		vector=xNew<bool>(M);
++		FetchData(&(vector[0]),py_vector);
++	}
++
+ 	/*output: */
+ 	if(pM)*pM=M;
+ 	if(pvector)*pvector=vector;
Index: /issm/oecreview/Archive/14064-14311/ISSM-14236-14237.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14236-14237.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14236-14237.diff	(revision 14312)
@@ -0,0 +1,80 @@
+Index: ../trunk-jpl/src/c/modules/Krigingx/Krigingx.cpp
+===================================================================
+--- ../trunk-jpl/src/c/modules/Krigingx/Krigingx.cpp	(revision 14236)
++++ ../trunk-jpl/src/c/modules/Krigingx/Krigingx.cpp	(revision 14237)
+@@ -58,7 +58,22 @@
+ 		observations->Variomap(predictions,x_interp,n_interp);
+ 	}
+ 	else if(strcmp(output,"distance")==0){
+-		observations->Distances(predictions,x_interp,y_interp,n_interp,radius);
++		/*initialize thread parameters: */
++		gate.n_interp     = n_interp;
++		gate.x_interp     = x_interp;
++		gate.y_interp     = y_interp;
++		gate.radius       = radius;
++		gate.mindata      = mindata;
++		gate.maxdata      = maxdata;
++		gate.variogram    = variogram;
++		gate.observations = observations;
++		gate.predictions  = predictions;
++		gate.error        = error;
++		gate.numdone      = xNewZeroInit<int>(num);
++
++		/*launch the thread manager with Krigingxt as a core: */
++		LaunchThread(Distancest,(void*)&gate,num);
++		xDelete<int>(gate.numdone);
+ 	}
+ 	else if(strcmp(output,"delaunay")==0){
+ 		int nobs,nel;
+@@ -362,7 +377,41 @@
+ 	}
+ 	return NULL;
+ }/*}}}*/
++/*FUNCTION Distancest{{{*/
++void* Distancest(void* vpthread_handle){
+ 
++	/*gate variables :*/
++	KrigingxThreadStruct *gate        = NULL;
++	pthread_handle       *handle      = NULL;
++	int my_thread;
++	int num_threads;
++	int i0,i1;
++
++	/*recover handle and gate: */
++	handle      = (pthread_handle*)vpthread_handle;
++	gate        = (KrigingxThreadStruct*)handle->gate;
++	my_thread   = handle->id;
++	num_threads = handle->num;
++
++	/*recover parameters :*/
++	int           n_interp     = gate->n_interp;
++	double       *x_interp     = gate->x_interp;
++	double       *y_interp     = gate->y_interp;
++	double        radius       = gate->radius;
++	int           mindata      = gate->mindata;
++	int           maxdata      = gate->maxdata;
++	Variogram    *variogram    = gate->variogram;
++	Observations *observations = gate->observations;
++	double       *predictions  = gate->predictions;
++	double       *error        = gate->error;
++	int          *numdone      = gate->numdone;
++
++	/*partition loop across threads: */
++	PartitionRange(&i0,&i1,n_interp,num_threads,my_thread);
++	observations->Distances(&predictions[i0],&x_interp[i0],&y_interp[i0],i1-i0,radius);
++	return NULL;
++}/*}}}*/
++
+ void ProcessVariogram(Variogram **pvariogram,Options* options){/*{{{*/
+ 
+ 	/*Intermediaries*/
+Index: ../trunk-jpl/src/c/modules/Krigingx/Krigingx.h
+===================================================================
+--- ../trunk-jpl/src/c/modules/Krigingx/Krigingx.h	(revision 14236)
++++ ../trunk-jpl/src/c/modules/Krigingx/Krigingx.h	(revision 14237)
+@@ -35,4 +35,5 @@
+ void* NearestNeighbort(void*);
+ void* idwt(void*);
+ void* v4t(void*);
++void* Distancest(void*);
+ #endif /* _KRIGINGX_H */
Index: /issm/oecreview/Archive/14064-14311/ISSM-14237-14238.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14237-14238.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14237-14238.diff	(revision 14312)
@@ -0,0 +1,68 @@
+Index: ../trunk-jpl/src/c/Container/Observations.cpp
+===================================================================
+--- ../trunk-jpl/src/c/Container/Observations.cpp	(revision 14237)
++++ ../trunk-jpl/src/c/Container/Observations.cpp	(revision 14238)
+@@ -128,28 +128,29 @@
+ 	int         *indices      = NULL;
+ 	Observation *observation  = NULL;
+ 
+-	/*If radius is not provided or is 0, return all observations*/
+-	if(radius==0) radius=this->quadtree->root->length;
++	/*First, find closest point in Quadtree (fast but might not be the true closest obs)*/
++	this->quadtree->ClosestObs(&index,x_interp,y_interp);
++	_assert_(index>=0);
++	observation=dynamic_cast<Observation*>(this->GetObjectByOffset(index));
++	hmin2 = (observation->x-x_interp)*(observation->x-x_interp) + (observation->y-y_interp)*(observation->y-y_interp);
+ 
+ 	/*Compute radius square*/
++	if(radius==0) radius=this->quadtree->root->length;
+ 	radius2 = radius*radius;
++	if(hmin2<radius2){
++		radius =sqrt(hmin2);
++		radius2=hmin2;
++	}
+ 
+ 	/*Find all observations that are in radius*/
+ 	this->quadtree->RangeSearch(&indices,&nobs,x_interp,y_interp,radius);
+ 	for (i=0;i<nobs;i++){
+ 		observation=dynamic_cast<Observation*>(this->GetObjectByOffset(indices[i]));
+ 		h2 = (observation->x-x_interp)*(observation->x-x_interp) + (observation->y-y_interp)*(observation->y-y_interp);
+-
+-		if(i==0){
++		if(h2<hmin2){
+ 			hmin2 = h2;
+ 			index = i;
+ 		}
+-		else{
+-			if(h2<hmin2){
+-				hmin2 = h2;
+-				index = i;
+-			}
+-		}
+ 	}  
+ 
+ 	/*Assign output pointer*/
+@@ -174,7 +175,10 @@
+ 
+ 	for(int i=0;i<n;i++){
+ 		this->ClosestObservation(&xi,&yi,&obs,x[i],y[i],radius);
+-		distances[i]=sqrt( (x[i]-xi)*(x[i]-xi) + (y[i]-yi)*(y[i]-yi) );
++		if(xi==UNDEF && yi==UNDEF)
++		 distances[i]=UNDEF;
++		else
++		 distances[i]=sqrt( (x[i]-xi)*(x[i]-xi) + (y[i]-yi)*(y[i]-yi) );
+ 	}
+ }/*}}}*/
+ /*FUNCTION Observations::ObservationList(IssmPDouble **px,IssmPDouble **py,IssmPDouble **pobs,int* pnobs,IssmPDouble x_interp,IssmPDouble y_interp,IssmPDouble radius,int maxdata){{{*/
+Index: ../trunk-jpl/src/c/Container/DataSet.cpp
+===================================================================
+--- ../trunk-jpl/src/c/Container/DataSet.cpp	(revision 14237)
++++ ../trunk-jpl/src/c/Container/DataSet.cpp	(revision 14238)
+@@ -177,6 +177,7 @@
+ 
+ 	/*Check index in debugging mode*/
+ 	_assert_(this!=NULL);
++	_assert_(offset>=0);
+ 	_assert_(offset<this->Size());
+ 
+ 	return objects[offset];
Index: /issm/oecreview/Archive/14064-14311/ISSM-14238-14239.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14238-14239.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14238-14239.diff	(revision 14312)
@@ -0,0 +1,22 @@
+Index: ../trunk-jpl/src/c/Container/Observations.cpp
+===================================================================
+--- ../trunk-jpl/src/c/Container/Observations.cpp	(revision 14238)
++++ ../trunk-jpl/src/c/Container/Observations.cpp	(revision 14239)
+@@ -147,10 +147,16 @@
+ 	for (i=0;i<nobs;i++){
+ 		observation=dynamic_cast<Observation*>(this->GetObjectByOffset(indices[i]));
+ 		h2 = (observation->x-x_interp)*(observation->x-x_interp) + (observation->y-y_interp)*(observation->y-y_interp);
+-		if(h2<hmin2){
++		if(i==0){
+ 			hmin2 = h2;
+ 			index = i;
+ 		}
++		else{
++			if(h2<hmin2){
++				hmin2 = h2;
++				index = i;
++			}
++		}
+ 	}  
+ 
+ 	/*Assign output pointer*/
Index: /issm/oecreview/Archive/14064-14311/ISSM-14239-14240.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14239-14240.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14239-14240.diff	(revision 14312)
@@ -0,0 +1,33 @@
+Index: ../trunk-jpl/src/c/Container/Observations.cpp
+===================================================================
+--- ../trunk-jpl/src/c/Container/Observations.cpp	(revision 14239)
++++ ../trunk-jpl/src/c/Container/Observations.cpp	(revision 14240)
+@@ -124,7 +124,7 @@
+ 
+ 	/*Output and Intermediaries*/
+ 	int          nobs,i,index;
+-	IssmPDouble  h2,hmin2,radius2;
++	IssmPDouble  hmin,h2,hmin2,radius2;
+ 	int         *indices      = NULL;
+ 	Observation *observation  = NULL;
+ 
+@@ -132,15 +132,13 @@
+ 	this->quadtree->ClosestObs(&index,x_interp,y_interp);
+ 	_assert_(index>=0);
+ 	observation=dynamic_cast<Observation*>(this->GetObjectByOffset(index));
+-	hmin2 = (observation->x-x_interp)*(observation->x-x_interp) + (observation->y-y_interp)*(observation->y-y_interp);
++	hmin = sqrt((observation->x-x_interp)*(observation->x-x_interp) + (observation->y-y_interp)*(observation->y-y_interp));
+ 
+ 	/*Compute radius square*/
+-	if(radius==0) radius=this->quadtree->root->length;
++	if(radius==0 || hmin<radius){
++		radius=hmin;
++	}
+ 	radius2 = radius*radius;
+-	if(hmin2<radius2){
+-		radius =sqrt(hmin2);
+-		radius2=hmin2;
+-	}
+ 
+ 	/*Find all observations that are in radius*/
+ 	this->quadtree->RangeSearch(&indices,&nobs,x_interp,y_interp,radius);
Index: /issm/oecreview/Archive/14064-14311/ISSM-14240-14241.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14240-14241.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14240-14241.diff	(revision 14312)
@@ -0,0 +1,29 @@
+Index: ../trunk-jpl/src/c/Container/Observations.cpp
+===================================================================
+--- ../trunk-jpl/src/c/Container/Observations.cpp	(revision 14240)
++++ ../trunk-jpl/src/c/Container/Observations.cpp	(revision 14241)
+@@ -128,16 +128,18 @@
+ 	int         *indices      = NULL;
+ 	Observation *observation  = NULL;
+ 
++	/*If radius is not provided or is 0, return all observations*/
++	if(radius==0) radius=this->quadtree->root->length;
++
+ 	/*First, find closest point in Quadtree (fast but might not be the true closest obs)*/
+ 	this->quadtree->ClosestObs(&index,x_interp,y_interp);
+-	_assert_(index>=0);
+-	observation=dynamic_cast<Observation*>(this->GetObjectByOffset(index));
+-	hmin = sqrt((observation->x-x_interp)*(observation->x-x_interp) + (observation->y-y_interp)*(observation->y-y_interp));
++	if(index>=0){
++		observation=dynamic_cast<Observation*>(this->GetObjectByOffset(index));
++		hmin = sqrt((observation->x-x_interp)*(observation->x-x_interp) + (observation->y-y_interp)*(observation->y-y_interp));
++		if(hmin<radius) radius=hmin;
++	}
+ 
+ 	/*Compute radius square*/
+-	if(radius==0 || hmin<radius){
+-		radius=hmin;
+-	}
+ 	radius2 = radius*radius;
+ 
+ 	/*Find all observations that are in radius*/
Index: /issm/oecreview/Archive/14064-14311/ISSM-14241-14242.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14241-14242.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14241-14242.diff	(revision 14312)
@@ -0,0 +1,208 @@
+Index: ../trunk-jpl/src/m/qmu/dakota_out_parse.m
+===================================================================
+--- ../trunk-jpl/src/m/qmu/dakota_out_parse.m	(revision 14241)
++++ ../trunk-jpl/src/m/qmu/dakota_out_parse.m	(revision 14242)
+@@ -111,10 +111,15 @@
+         [nsamp]=nsamp_read(fidi,fline);
+     elseif strncmp(fline,'Moments for each response function',34)
+         [dresp]=moments_read(fidi,dresp,fline);
++    elseif strncmp(fline,'Moment-based statistics for each response function',50)
++        [dresp]=mbstats_read(fidi,dresp,fline);
+     elseif strncmp(fline,'95% confidence intervals for each response function',51)
+         [dresp]=cis_read(fidi,dresp,fline);
+-    elseif strncmp(fline,'Probabilities for each response function',40)
++    elseif strncmp(fline,'Probabilities for each response function',40) || ...
++           strncmp(fline,'Level mappings for each response function',41)
+         [dresp]=cdfs_read(fidi,dresp,fline);
++    elseif strncmp(fline,'Probability Density Function (PDF) histograms for each response function',72)
++        [dresp]=pdfs_read(fidi,dresp,fline);
+     elseif strncmp(fline,'Simple Correlation Matrix',25)
+         [scm]=corrmat_read(fidi,'Simple Correlation Matrix',fline);
+     elseif strncmp(fline,'Partial Correlation Matrix',26)
+@@ -136,7 +141,6 @@
+     elseif strncmp(fline,'-----',5)
+     else
+         display(['Unexpected line: ' deblank(fline)]);
+-        fline=fgetl(fidi);
+     end
+     fline=fgetl(fidi);
+ %     fseek(fidi,ipos,'bof');
+@@ -315,6 +319,45 @@
+ 
+ end
+ 
++%%  function to find and read the moment-based statistics
++
++function [dresp]=mbstats_read(fidi,dresp,fline)
++
++if ~exist('fline','var') || isempty(fline) || ~ischar(fline)
++    [fline]=findline(fidi,'Moment-based statistics for each response function');
++    if ~ischar(fline)
++        return
++    end
++end
++
++display('Reading moment-based statistics for response functions:');
++
++%  skip column headings of moment-based statistics
++
++    fline=fgetl(fidi);
++
++while 1
++    fline=fgetl(fidi);
++    if isempty(fline)
++        break;
++    end
++    [ntokens,tokens]=fltokens(fline);
++
++%  add new response function and moment-based statistics
++
++    dresp(end+1).descriptor=tokens{1}{ 1};
++    display(sprintf('  %s',dresp(end).descriptor));
++    dresp(end  ).mean      =tokens{1}{ 2};
++    dresp(end  ).stddev    =tokens{1}{ 3};
++    dresp(end  ).skewness  =tokens{1}{ 4};
++    dresp(end  ).kurtosis  =tokens{1}{ 5};
++end
++
++display(sprintf('  Number of Dakota response functions=%d.',...
++    length(dresp)));
++
++end
++
+ %%  function to find and read the confidence intervals
+ 
+ function [dresp]=cis_read(fidi,dresp,fline)
+@@ -336,6 +379,16 @@
+     end
+     [ntokens,tokens]=fltokens(fline);
+ 
++%  check for column headings in Dakota 5.2
++
++    if (ntokens == 4)
++        fline=fgetl(fidi);
++        if isempty(fline)
++            break;
++        end
++        [ntokens,tokens]=fltokens(fline);
++    end
++
+ %  find response function associated with confidence intervals
+ 
+     idresp=0;
+@@ -353,10 +406,17 @@
+ 
+ %  add confidence intervals to response functions
+ 
+-    dresp(i).meanci  (1,1)=tokens{1}{ 5};
+-    dresp(i).meanci  (2,1)=tokens{1}{ 6};
+-    dresp(i).stddevci(1,1)=tokens{1}{12};
+-    dresp(i).stddevci(2,1)=tokens{1}{13};
++    if (ntokens == 14)
++        dresp(i).meanci  (1,1)=tokens{1}{ 5};
++        dresp(i).meanci  (2,1)=tokens{1}{ 6};
++        dresp(i).stddevci(1,1)=tokens{1}{12};
++        dresp(i).stddevci(2,1)=tokens{1}{13};
++    else
++        dresp(i).meanci  (1,1)=tokens{1}{ 2};
++        dresp(i).meanci  (2,1)=tokens{1}{ 3};
++        dresp(i).stddevci(1,1)=tokens{1}{ 4};
++        dresp(i).stddevci(2,1)=tokens{1}{ 5};
++    end
+ end
+ 
+ display(sprintf('  Number of Dakota response functions=%d.',...
+@@ -371,7 +431,10 @@
+ if ~exist('fline','var') || isempty(fline) || ~ischar(fline)
+     [fline]=findline(fidi,'Probabilities for each response function');
+     if ~ischar(fline)
+-        return
++        [fline]=findline(fidi,'Level mappings for each response function');
++        if ~ischar(fline)
++            return
++        end
+     end
+ end
+ 
+@@ -424,7 +487,7 @@
+                     itoken=itoken+1;
+                     dresp(idresp).cdf(icdf,i)=tokens{1}{itoken};
+                 end
+-            end;
++            end
+             fline=fgetl(fidi);
+         end
+     end
+@@ -435,6 +498,72 @@
+ 
+ end
+ 
++%%  function to find and read the pdf's
++
++function [dresp]=pdfs_read(fidi,dresp,fline)
++
++if ~exist('fline','var') || isempty(fline) || ~ischar(fline)
++    [fline]=findline(fidi,'Probability Density Function (PDF) histograms for each response function');
++    if ~ischar(fline)
++        return
++    end
++end
++
++display('Reading PDF''s for response functions:');
++
++while ischar(fline) && ~isempty(fline)
++    fline=fgetl(fidi);
++    if ~ischar(fline)
++        break;
++    end
++
++%  process header line of pdf
++
++    while ischar(fline) && ~isempty(fline)
++        [ntokens,tokens]=fltokens(fline);
++
++%  find response function associated with pdf
++
++        idresp=0;
++        for i=1:length(dresp)
++            if strcmpi(tokens{1}{ 3},dresp(i).descriptor)
++                idresp=i;
++                break;
++            end
++        end
++        if ~idresp
++            idresp=length(dresp)+1;
++            dresp(idresp).descriptor=tokens{1}{ 3};
++            display(sprintf('  %s',dresp(idresp).descriptor));
++        end
++
++%  skip column headings of pdf
++
++        fline=fgetl(fidi);
++        fline=fgetl(fidi);
++
++%  read and add pdf table to response function
++
++        fline=fgetl(fidi);
++        ipdf=0;
++        while ischar(fline) && ~isempty(fline) && ...
++              ~strncmpi(fline,'PDF for', 7)
++            [ntokens,tokens]=fltokens(fline);
++            ipdf=ipdf+1;
++            dresp(idresp).pdf(ipdf,1:3)=NaN;
++            for i=1:3
++                dresp(idresp).pdf(ipdf,i)=tokens{1}{i};
++            end
++            fline=fgetl(fidi);
++        end
++    end
++end
++
++display(sprintf('  Number of Dakota response functions=%d.',...
++    length(dresp)));
++
++end
++
+ %%  function to find and read a correlation matrix
+ 
+ function [cmat]=corrmat_read(fidi,cmstr,fline)
Index: /issm/oecreview/Archive/14064-14311/ISSM-14242-14243.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14242-14243.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14242-14243.diff	(revision 14312)
@@ -0,0 +1,97 @@
+Index: ../trunk-jpl/src/m/plot/plotboxpos.m
+===================================================================
+--- ../trunk-jpl/src/m/plot/plotboxpos.m	(revision 0)
++++ ../trunk-jpl/src/m/plot/plotboxpos.m	(revision 14243)
+@@ -0,0 +1,91 @@
++function pos = plotboxpos(h)
++%PLOTBOXPOS Returns the position of the plotted axis region
++%
++% pos = plotboxpos(h)
++%
++% This function returns the position of the plotted region of an axis,
++% which may differ from the actual axis position, depending on the axis
++% limits, data aspect ratio, and plot box aspect ratio.  The position is
++% returned in the same units as the those used to define the axis itself.
++% This function can only be used for a 2D plot.  
++%
++% Input variables:
++%
++%   h:      axis handle of a 2D axis (if ommitted, current axis is used).
++%
++% Output variables:
++%
++%   pos:    four-element position vector, in same units as h
++
++% Copyright 2010 Kelly Kearney
++
++% Check input
++
++if nargin < 1
++    h = gca;
++end
++
++if ~ishandle(h) || ~strcmp(get(h,'type'), 'axes')
++    error('Input must be an axis handle');
++end
++
++% Get position of axis in pixels
++
++currunit = get(h, 'units');
++set(h, 'units', 'pixels');
++axisPos = get(h, 'Position');
++set(h, 'Units', currunit);
++
++% Calculate box position based axis limits and aspect ratios
++
++darismanual  = strcmpi(get(h, 'DataAspectRatioMode'),    'manual');
++pbarismanual = strcmpi(get(h, 'PlotBoxAspectRatioMode'), 'manual');
++
++if ~darismanual && ~pbarismanual
++    
++    pos = axisPos;
++    
++else
++
++    dx = diff(get(h, 'XLim'));
++    dy = diff(get(h, 'YLim'));
++    dar = get(h, 'DataAspectRatio');
++    pbar = get(h, 'PlotBoxAspectRatio');
++
++    limDarRatio = (dx/dar(1))/(dy/dar(2));
++    pbarRatio = pbar(1)/pbar(2);
++    axisRatio = axisPos(3)/axisPos(4);
++
++    if darismanual
++        if limDarRatio > axisRatio
++            pos(1) = axisPos(1);
++            pos(3) = axisPos(3);
++            pos(4) = axisPos(3)/limDarRatio;
++            pos(2) = (axisPos(4) - pos(4))/2 + axisPos(2);
++        else
++            pos(2) = axisPos(2);
++            pos(4) = axisPos(4);
++            pos(3) = axisPos(4) * limDarRatio;
++            pos(1) = (axisPos(3) - pos(3))/2 + axisPos(1);
++        end
++    elseif pbarismanual
++        if pbarRatio > axisRatio
++            pos(1) = axisPos(1);
++            pos(3) = axisPos(3);
++            pos(4) = axisPos(3)/pbarRatio;
++            pos(2) = (axisPos(4) - pos(4))/2 + axisPos(2);
++        else
++            pos(2) = axisPos(2);
++            pos(4) = axisPos(4);
++            pos(3) = axisPos(4) * pbarRatio;
++            pos(1) = (axisPos(3) - pos(3))/2 + axisPos(1);
++        end
++    end
++end
++
++% Convert plot box position to the units used by the axis
++
++temp = axes('Units', 'Pixels', 'Position', pos, 'Visible', 'off', 'parent', get(h, 'parent'));
++set(temp, 'Units', currunit);
++pos = get(temp, 'position');
++delete(temp);
+\ No newline at end of file
Index: /issm/oecreview/Archive/14064-14311/ISSM-14243-14244.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14243-14244.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14243-14244.diff	(revision 14312)
@@ -0,0 +1,13 @@
+Index: ../trunk-jpl/src/m/plot/kmlgroundoverlay.m
+===================================================================
+--- ../trunk-jpl/src/m/plot/kmlgroundoverlay.m	(revision 14243)
++++ ../trunk-jpl/src/m/plot/kmlgroundoverlay.m	(revision 14244)
+@@ -33,7 +33,7 @@
+ north=max(md.mesh.lat);
+ 
+ %print image at high resolution
+-export_fig([kmlroot '/' kmlimagename],'-transparent');
++export_fig([kmlroot '/' kmlimagename],'-transparent','-zbuffer'); %zbuffer to avoid "Bad data returned by HARDCOPY. Not calling IMWRITE"
+ %printmodel([kmlroot '/' kmlimagename],kmlimagetype,'trim','on','resolution',kmlresolution,'margin','off','frame','off');
+ 
+ %now write kml file
Index: /issm/oecreview/Archive/14064-14311/ISSM-14244-14245.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14244-14245.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14244-14245.diff	(revision 14312)
@@ -0,0 +1,13 @@
+Index: ../trunk-jpl/src/m/plot/plot_mesh.py
+===================================================================
+--- ../trunk-jpl/src/m/plot/plot_mesh.py	(revision 14244)
++++ ../trunk-jpl/src/m/plot/plot_mesh.py	(revision 14245)
+@@ -20,7 +20,7 @@
+ 	x,y,z,elements,is2d,isplanet=processmesh(md,[],options)
+ 
+ 	if is2d:
+-		p.subplot(nlines,ncols,i)
++		p.subplot(nlines,ncols,i,aspect='equal')
+ 		p.triplot(x,y,elements)
+ 	else:
+ 		print 'WARNING: only 2D mesh plot is currently implemented'
Index: /issm/oecreview/Archive/14064-14311/ISSM-14245-14246.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14245-14246.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14245-14246.diff	(revision 14312)
@@ -0,0 +1,165 @@
+Index: ../trunk-jpl/src/android/ISSM/src/com/example/issm/VerticalSeekBar.java
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/src/com/example/issm/VerticalSeekBar.java	(revision 14245)
++++ ../trunk-jpl/src/android/ISSM/src/com/example/issm/VerticalSeekBar.java	(revision 14246)
+@@ -34,7 +34,6 @@
+     protected void onDraw(Canvas c) {
+     	c.rotate(90);
+         c.translate(0, -getWidth());
+-
+         super.onDraw(c);
+     }
+ 
+Index: ../trunk-jpl/src/android/ISSM/src/com/example/issm/MyGLSurfaceView.java
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/src/com/example/issm/MyGLSurfaceView.java	(revision 14245)
++++ ../trunk-jpl/src/android/ISSM/src/com/example/issm/MyGLSurfaceView.java	(revision 14246)
+@@ -108,18 +108,16 @@
+ 				f[i][15] =  (f[i][15]-ymin)/(ymax-ymin)*YSCALE_FACTOR;
+ 		}
+ 		
+-		Random r = new Random();
+-		float z1,z2,z3;
++		//Random r = new Random();
++		//float z1,z2,z3;
+ 		for(int i = 0 ; i <size; i++)
+ 		{
+ 			//r.nextFloat() will generate random from 0-1
+-			z1 = r.nextFloat();
+-			z2 = r.nextFloat();
+-			z3 = r.nextFloat();
+-			f[i][2] = z1;
+-			f[i][9] = z2;
+-			f[i][16]= z3;
+ 			
++			System.out.println(f[i][2]);
++			System.out.println(f[i][9]);
++			System.out.println(f[i][16]);
++			
+ 			//System.out.println("z = " + z1 + "," + z2 + "," + z3);
+ 			//System.out.println("x = " + f[i][1] + "," + f[i][7] + "," + f[i][14]);
+ 		}
+Index: ../trunk-jpl/src/android/ISSM/res/drawable-mdpi/thumb.png
+===================================================================
+Cannot display: file marked as a binary type.
+svn:mime-type = application/octet-stream
+Index: ../trunk-jpl/src/android/ISSM/res/drawable-mdpi/thumb.png
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/res/drawable-mdpi/thumb.png	(revision 14245)
++++ ../trunk-jpl/src/android/ISSM/res/drawable-mdpi/thumb.png	(revision 14246)
+
+Property changes on: ../trunk-jpl/src/android/ISSM/res/drawable-mdpi/thumb.png
+___________________________________________________________________
+Added: svn:mime-type
+## -0,0 +1 ##
++application/octet-stream
+Index: ../trunk-jpl/src/android/ISSM/res/drawable-mdpi/seek_bg.9.png
+===================================================================
+Cannot display: file marked as a binary type.
+svn:mime-type = application/octet-stream
+Index: ../trunk-jpl/src/android/ISSM/res/drawable-mdpi/seek_bg.9.png
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/res/drawable-mdpi/seek_bg.9.png	(revision 14245)
++++ ../trunk-jpl/src/android/ISSM/res/drawable-mdpi/seek_bg.9.png	(revision 14246)
+
+Property changes on: ../trunk-jpl/src/android/ISSM/res/drawable-mdpi/seek_bg.9.png
+___________________________________________________________________
+Added: svn:mime-type
+## -0,0 +1 ##
++application/octet-stream
+Index: ../trunk-jpl/src/android/ISSM/res/drawable-mdpi/blue.png
+===================================================================
+Cannot display: file marked as a binary type.
+svn:mime-type = application/octet-stream
+Index: ../trunk-jpl/src/android/ISSM/res/drawable-mdpi/blue.png
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/res/drawable-mdpi/blue.png	(revision 14245)
++++ ../trunk-jpl/src/android/ISSM/res/drawable-mdpi/blue.png	(revision 14246)
+
+Property changes on: ../trunk-jpl/src/android/ISSM/res/drawable-mdpi/blue.png
+___________________________________________________________________
+Added: svn:mime-type
+## -0,0 +1 ##
++application/octet-stream
+Index: ../trunk-jpl/src/android/ISSM/res/drawable-mdpi/whitepatch.9.png
+===================================================================
+Cannot display: file marked as a binary type.
+svn:mime-type = application/octet-stream
+Index: ../trunk-jpl/src/android/ISSM/res/drawable-mdpi/whitepatch.9.png
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/res/drawable-mdpi/whitepatch.9.png	(revision 14245)
++++ ../trunk-jpl/src/android/ISSM/res/drawable-mdpi/whitepatch.9.png	(revision 14246)
+
+Property changes on: ../trunk-jpl/src/android/ISSM/res/drawable-mdpi/whitepatch.9.png
+___________________________________________________________________
+Added: svn:mime-type
+## -0,0 +1 ##
++application/octet-stream
+Index: ../trunk-jpl/src/android/ISSM/res/layout/seekbar_progress.xml
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/res/layout/seekbar_progress.xml	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/res/layout/seekbar_progress.xml	(revision 14246)
+@@ -0,0 +1,27 @@
++<?xml version="1.0" encoding="utf-8"?>
++<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
++    <item android:id="@android:id/background">
++        <nine-patch
++            xmlns:android="http://schemas.android.com/apk/res/android"
++            android:src="@drawable/seek_bg"
++            android:dither="true"
++         />
++    </item>
++    <item android:id="@android:id/secondaryProgress">
++        <clip>
++            <shape>
++                <gradient
++                    android:startColor="#80028ac8"
++                    android:centerColor="#80127fb1"
++                    android:centerY="0.75"
++                    android:endColor="#a004638f"
++                    android:angle="270"
++                />
++            </shape>
++        </clip>
++    </item>
++    <item
++        android:id="@android:id/progress"
++        android:drawable="@layout/seekbar_progress_bg"
++    />
++</layer-list>
+\ No newline at end of file
+Index: ../trunk-jpl/src/android/ISSM/res/layout/issmcore.xml
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/res/layout/issmcore.xml	(revision 14245)
++++ ../trunk-jpl/src/android/ISSM/res/layout/issmcore.xml	(revision 14246)
+@@ -33,7 +33,9 @@
+   		android:layout_below="@+id/value"
+   		android:layout_height="420dp"
+   		android:progress="100"
+-  		android:max="490"/>
++  		android:max="490"
++  		android:progressDrawable="@layout/seekbar_progress"
++	    android:thumb="@drawable/thumb"/>
+ 
+     <FrameLayout
+         android:id="@+id/frame"
+Index: ../trunk-jpl/src/android/ISSM/res/layout/seekbar_progress_bg.xml
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/res/layout/seekbar_progress_bg.xml	(revision 0)
++++ ../trunk-jpl/src/android/ISSM/res/layout/seekbar_progress_bg.xml	(revision 14246)
+@@ -0,0 +1,14 @@
++<?xml version="1.0" encoding="utf-8"?>
++ <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
++    <item>
++        <clip>
++        <bitmap xmlns:android="http://schemas.android.com/apk/res/android"
++            android:src="@drawable/blue" 	
++            android:antialias="true"
++            android:dither="false"
++            android:filter="false"
++            android:gravity="left"
++        />
++        </clip>
++    </item>
++</layer-list>
+\ No newline at end of file
Index: /issm/oecreview/Archive/14064-14311/ISSM-14246-14247.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14246-14247.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14246-14247.diff	(revision 14312)
@@ -0,0 +1,107 @@
+Index: ../trunk-jpl/src/android/ISSM/src/com/example/issm/VerticalSeekBar.java
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/src/com/example/issm/VerticalSeekBar.java	(revision 14246)
++++ ../trunk-jpl/src/android/ISSM/src/com/example/issm/VerticalSeekBar.java	(revision 14247)
+@@ -32,8 +32,8 @@
+     }
+ 
+     protected void onDraw(Canvas c) {
+-    	c.rotate(90);
+-        c.translate(0, -getWidth());
++    	c.rotate(-90);
++        c.translate(-getHeight(),0);
+         super.onDraw(c);
+     }
+ 
+@@ -48,7 +48,7 @@
+             case MotionEvent.ACTION_MOVE:
+             case MotionEvent.ACTION_UP:
+                 i = getMax() - (int) (getMax() * event.getY() / getHeight());
+-                setProgress(MAX_SIZE-i);
++                setProgress(i);
+                 onSizeChanged(getWidth(), getHeight(), 0, 0);
+                 break;
+ 
+Index: ../trunk-jpl/src/android/ISSM/res/drawable-mdpi/btn_lightblue_glossy.9.png
+===================================================================
+Cannot display: file marked as a binary type.
+svn:mime-type = application/octet-stream
+Index: ../trunk-jpl/src/android/ISSM/res/drawable-mdpi/btn_lightblue_glossy.9.png
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/res/drawable-mdpi/btn_lightblue_glossy.9.png	(revision 14246)
++++ ../trunk-jpl/src/android/ISSM/res/drawable-mdpi/btn_lightblue_glossy.9.png	(revision 14247)
+
+Property changes on: ../trunk-jpl/src/android/ISSM/res/drawable-mdpi/btn_lightblue_glossy.9.png
+___________________________________________________________________
+Added: svn:mime-type
+## -0,0 +1 ##
++application/octet-stream
+Index: ../trunk-jpl/src/android/ISSM/res/layout/issmcore.xml
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/res/layout/issmcore.xml	(revision 14246)
++++ ../trunk-jpl/src/android/ISSM/res/layout/issmcore.xml	(revision 14247)
+@@ -26,17 +26,18 @@
+         android:typeface="serif"
+         android:textColor="#FF0000"
+         android:text="100%" />
++
++    <com.example.issm.VerticalSeekBar
++        android:id="@+id/seekbar"
++        android:layout_width="wrap_content"
++        android:layout_height="300dp"
++        android:layout_above="@+id/back"
++        android:layout_marginBottom="50dp"
++        android:max="490"
++        android:progress="100"
++        android:progressDrawable="@layout/seekbar_progress"
++        android:thumb="@drawable/thumb" />
+       
+-    <com.example.issm.VerticalSeekBar
+-  		android:id="@+id/seekbar"
+-  		android:layout_width="wrap_content"
+-  		android:layout_below="@+id/value"
+-  		android:layout_height="420dp"
+-  		android:progress="100"
+-  		android:max="490"
+-  		android:progressDrawable="@layout/seekbar_progress"
+-	    android:thumb="@drawable/thumb"/>
+-
+     <FrameLayout
+         android:id="@+id/frame"
+         android:layout_width="wrap_content"
+@@ -46,22 +47,27 @@
+         android:layout_marginLeft="30dp"
+         android:layout_marginBottom="12dp" >
+     </FrameLayout>
++    
+ 
+     <Button
+-        android:id="@+id/solve"
++        android:id="@+id/back"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:layout_alignParentBottom="true"
+-        android:layout_alignParentRight="true"
+-        android:layout_marginRight="58dp"
+-        android:text="Solve" />
++        android:layout_alignParentLeft="true"
++        android:layout_marginBottom="17dp"
++        android:background="@drawable/btn_lightblue_glossy"
++        android:text="Back"/>
+ 
+     <Button
+-        android:id="@+id/back"
++        android:id="@+id/solve"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+-        android:layout_alignLeft="@+id/frame"
+-        android:layout_alignParentBottom="true"
+-        android:text="Back to \n Map Selection Screen " />
++        android:layout_alignBaseline="@+id/back"
++        android:layout_alignBottom="@+id/back"
++        android:layout_marginLeft="14dp"
++        android:layout_toRightOf="@+id/back"
++        android:background="@drawable/btn_lightblue_glossy"
++        android:text="Solve"/>
+ 
+ </RelativeLayout>
Index: /issm/oecreview/Archive/14064-14311/ISSM-14247-14248.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14247-14248.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14247-14248.diff	(revision 14312)
@@ -0,0 +1,13 @@
+Index: ../trunk-jpl/src/m/plot/plotmodel.py
+===================================================================
+--- ../trunk-jpl/src/m/plot/plotmodel.py	(revision 14247)
++++ ../trunk-jpl/src/m/plot/plotmodel.py	(revision 14248)
+@@ -59,7 +59,7 @@
+ 			
+ 		#try:
+ 		for i in xrange(numberofplots):
+-			plot_manager(options.list[i].getfieldvalue('model',md),options.list[i],subplotwidth,nlines,ncols,i)
++			plot_manager(options.list[i].getfieldvalue('model',md),options.list[i],subplotwidth,nlines,ncols,i+1)
+ 		#except StandardError:
+ 		#	print 'error in plot_manager'
+ 	else:
Index: /issm/oecreview/Archive/14064-14311/ISSM-14248-14249.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14248-14249.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14248-14249.diff	(revision 14312)
@@ -0,0 +1,348 @@
+Index: ../trunk-jpl/src/android/ISSM/src/com/example/issm/MyGLRenderer.java
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/src/com/example/issm/MyGLRenderer.java	(revision 14248)
++++ ../trunk-jpl/src/android/ISSM/src/com/example/issm/MyGLRenderer.java	(revision 14249)
+@@ -29,7 +29,16 @@
+ public class MyGLRenderer implements GLSurfaceView.Renderer 
+ {
+ 	public volatile float mAngle;
++	public volatile float mAngleX; /* NEW STUFF*/
++	public volatile float mAngleY;
+ 	
++	
++    private FloatBuffer[] triangleVert;
++	
++	private float[][] mScaleMatrix;  // scaling /* NEW STUFF*/
++	private float[][] mRotXMatrix;	 // rotation x 
++	private float[][] mRotYMatrix;	 // rotation x
++
+ 	/**
+ 	 * Store the model matrix. This matrix is used to move models from object space (where each model can be thought
+ 	 * of being located at the center of the universe) to world space.
+@@ -51,8 +60,6 @@
+ 	/** This will be used to pass in the transformation matrix. */
+ 	private int mMatrixHandle;
+ 	
+-    private FloatBuffer[] triangleVert;
+-    
+     private float[][] triangleData2DArr;
+     
+     private int mPositionHandle;
+@@ -77,17 +84,30 @@
+     /** Size of the color data in elements. */
+     private final int mColorDataSize = 4;	
+ 
++	// scaling /* NEW STUFF*/
++	float scaleX = 1.0f;
++	float scaleY = 1.0f;
++	float scaleZ = 1.0f;
++
++	public float eyeX;
++	public float eyeY;
++	public float eyeZ;
++	
+     public MyGLRenderer(float[][] vertices)
+     {	
+     	triangleData2DArr = new float[vertices.length][21];
++ 
+     	triangleVert = new FloatBuffer[vertices.length];
++    	mScaleMatrix  = new float[triangleVert.length][16];  // scaling  /* NEW STUFF*/
++    	mRotXMatrix  = new float[triangleVert.length][16];	 // rotation x
++    	mRotYMatrix  = new float[triangleVert.length][16];	 // rotation x
+     	
+     	for (int i = 0; i < vertices.length; i++)
+     	{
+     		for (int j = 0; j < 21; j++)
+     			triangleData2DArr[i][j] = vertices[i][j]; 
+     	}
+-	    		
++	    
+ 	    // initialize vertex byte buffer for shape coordinates
+     	for (int i = 0; i < vertices.length; i++)
+     	{
+@@ -97,15 +117,32 @@
+     	}
+     }
+     
++	public void changeScale(float scale) /* NEW STUFF*/
++	{
++		if (scaleX * scale > 3.0f) return;
++		  scaleX *= scale; scaleY *= scale; scaleZ *= scale;
++		
++		//scaleX += scale;scaleY += scale;scaleZ += scale;
++		//scaleX = scale;scaleY = scale;scaleZ = scale;
++		//scaleX /= 100;scaleY /= 100;scaleZ /= 100;
++	}
++
++	public void defaultScale() 
++	{
++		scaleX = 1f;
++		scaleY = 1f;
++		scaleZ = 1f;
++	}
++	
+     public void onSurfaceCreated(GL10 unused, EGLConfig config) 
+     {
+         // Set the background frame color
+-        GLES20.glClearColor(0.0f, 0.8f, 1.0f, 1.0f);
++        GLES20.glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
+         
+ 		// Position the eye behind the origin.
+-		final float eyeX = 0.0f;
+-		final float eyeY = 0.0f;
+-		final float eyeZ = 1.5f;
++		eyeX = 0.0f;
++		eyeY = 0.0f;
++		eyeZ = 1.5f;
+ 
+ 		// We are looking toward the distance
+ 		final float lookX = 0.0f;
+@@ -122,8 +159,10 @@
+ 		// view matrix. In OpenGL 2, we can keep track of these matrices separately if we choose.
+ 		mViewMatrix = new float[triangleVert.length][16];
+ 		
++		
+ 		for (int i = 0; i < triangleVert.length; i++)
+ 			Matrix.setLookAtM(mViewMatrix[i], 0, eyeX, eyeY, eyeZ, lookX, lookY, lookZ, upX, upY, upZ);
++			//Matrix.setLookAtM(mVMatrix[i], 0, 0, 0, -5.0f, 0.0f, 0f, 0f, 0f, 1.0f, 0.0f);
+         
+ 		final String vertexShader =
+ 				"uniform mat4 u_MVPMatrix;      \n"		// A constant representing the combined model/view/projection matrix.
+@@ -133,6 +172,7 @@
+ 			  + "void main()                    \n"		// The entry point for our vertex shader.
+ 			  + "{                              \n"
+ 			  + "   v_Color = a_Color;          \n"		// Pass the color through to the fragment shader. 
++			  
+ 			  											// It will be interpolated across the triangle.
+ 			  + "   gl_Position = u_MVPMatrix   \n" 	// gl_Position is a special variable used to store the final position.
+ 			  + "               * a_Position;   \n"     // Multiply the vertex by the matrix to get the final point in 			                                            			 
+@@ -196,7 +236,7 @@
+ 		// Bind attributes
+ 		GLES20.glBindAttribLocation(mProgram, 0, "a_Position");
+ 		GLES20.glBindAttribLocation(mProgram, 1, "a_Color");
+-
++		
+ 		// Link the two shaders together into a program.
+ 		GLES20.glLinkProgram(mProgram);
+ 
+@@ -213,7 +253,7 @@
+ 		
+ 		for (int i = 0; i < triangleVert.length; i++)
+ 		{
+-			mMatrixHandle = GLES20.glGetUniformLocation(mProgram, "u_MVPMatrix");        
++			mMatrixHandle = GLES20.glGetUniformLocation(mProgram, "u_MVPMatrix");       
+ 	        mPositionHandle = GLES20.glGetAttribLocation(mProgram, "a_Position");
+ 	        mColorHandle = GLES20.glGetAttribLocation(mProgram, "a_Color");
+ 		}
+@@ -221,7 +261,6 @@
+         // Add program to OpenGL environment
+         GLES20.glUseProgram(mProgram);
+     }
+-    
+     public void onSurfaceChanged(GL10 unused, int width, int height) 
+     {
+         // Adjust the viewport based on geometry changes,
+@@ -235,7 +274,6 @@
+ 		mProjectionMatrix = new float[triangleVert.length][16];
+ 		for (int i = 0; i < triangleVert.length; i++)
+ 			Matrix.frustumM(mProjectionMatrix[i], 0, -ratio*0.7f, ratio*1.0f, 0.0f, 1.0f, 1.0f, 14f);
+-		//Matrix.frustumM(m, offset, left, right, bottom, top, near, far)
+     }
+     
+     public void onDrawFrame(GL10 glUnused) 
+@@ -246,8 +284,19 @@
+     	mModelMatrix = new float[triangleVert.length][16];
+         // Draw the triangle facing straight on.
+     	for (int i = 0; i < triangleVert.length; i++)
+-    		Matrix.setIdentityM(mModelMatrix[i], 0);
++    	{
++    		//Matrix.setIdentityM(mModelMatrix[i], 0); /* NEW STUFF*/
++    		Matrix.setIdentityM(mScaleMatrix[i], 0);
++    		Matrix.scaleM(mScaleMatrix[i], 0, scaleX, scaleY, scaleZ);
+     		
++    		// Rotation along x
++    		Matrix.setRotateM(mRotXMatrix[i], 0, this.mAngleY, -1.0f, 0.0f, 0.0f);
++    		Matrix.setRotateM(mRotYMatrix[i], 0, this.mAngleX, 0.0f, 1.0f, 0.0f); /* NEW STUFF*/
++    		
++    		Matrix.setLookAtM(mViewMatrix[i], 0, eyeX, eyeY, eyeZ, 0.0f, 0.0f, -5.0f, 0.0f, 1.0f, 0.0f); 
++    	
++    	}
++    		
+     	mMVPMatrix = new float[triangleVert.length][16];
+     	draw(triangleVert); 
+ 
+@@ -272,8 +321,13 @@
+ 	        
+ 	        GLES20.glEnableVertexAttribArray(mColorHandle);
+ 	        
+-	        //Matrix.setRotateM(mModelMatrix[i], 0, mAngle, 0, 0, -1.0f);
++	        Matrix.setRotateM(mRotXMatrix[i], 0, this.mAngleY, -1.0f, 0.0f, 0.0f); /* NEW STUFF*/
++    		Matrix.setRotateM(mRotYMatrix[i], 0, this.mAngleX, 0.0f, 1.0f, 0.0f);
+ 
++    		float tempMatrix[][] = new float[triangleVert.length][16]; /* NEW STUFF*/
++    		Matrix.multiplyMM(tempMatrix[i], 0, mRotYMatrix[i], 0, mRotXMatrix[i], 0);
++    		Matrix.multiplyMM(mModelMatrix[i], 0, mScaleMatrix[i], 0, tempMatrix[i], 0);
++
+ 			// This multiplies the view matrix by the model matrix, and stores the result in the MVP matrix
+ 	        // (which currently contains model * view).
+ 	        Matrix.multiplyMM(mMVPMatrix[i], 0, mViewMatrix[i], 0, mModelMatrix[i], 0);
+@@ -282,8 +336,8 @@
+ 	        // (which now contains model * view * projection).
+ 	        Matrix.multiplyMM(mMVPMatrix[i], 0, mProjectionMatrix[i], 0, mMVPMatrix[i], 0);
+ 	        
+-	        GLES20.glUniformMatrix4fv(mMatrixHandle, 1, false, mMVPMatrix[i], 0);
+-	        
++	        GLES20.glUniformMatrix4fv(mMatrixHandle, 1, false, mMVPMatrix[i], 0);   
++
+ 	        // Draw the triangle
+ 	        GLES20.glDrawArrays(GLES20.GL_TRIANGLES, 0, 3);
+ 	        
+@@ -292,4 +346,4 @@
+     	}
+     }
+ 
+-}
++}
+\ No newline at end of file
+Index: ../trunk-jpl/src/android/ISSM/src/com/example/issm/ISSM.java
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/src/com/example/issm/ISSM.java	(revision 14248)
++++ ../trunk-jpl/src/android/ISSM/src/com/example/issm/ISSM.java	(revision 14249)
+@@ -251,7 +251,7 @@
+     	frame.removeAllViews();
+     	mGLView = new MyGLSurfaceView(this, buff, size, colorMap);
+     	frame.addView(mGLView);
+-    	frame.addView(colorBar);
++    	//frame.addView(colorBar);
+     }
+ //------------------------------------------------------------------------------------
+    //AsyncTask will allow to display while doing some task in the background
+Index: ../trunk-jpl/src/android/ISSM/src/com/example/issm/MyGLSurfaceView.java
+===================================================================
+--- ../trunk-jpl/src/android/ISSM/src/com/example/issm/MyGLSurfaceView.java	(revision 14248)
++++ ../trunk-jpl/src/android/ISSM/src/com/example/issm/MyGLSurfaceView.java	(revision 14249)
+@@ -5,6 +5,7 @@
+ 
+ import android.content.Context;
+ import android.opengl.GLSurfaceView;
++import android.util.FloatMath;
+ import android.view.MotionEvent;
+ 
+ 
+@@ -16,6 +17,12 @@
+ 	double vmax = 0, vmin=0;
+ 	final int firstVelocity = 9; 
+ 	ColorMap colorMap;
++	
++	// pinch to zoom
++	float oldDist = 100.0f;
++	float newDist;
++	
++	int mode = 0;
+     public MyGLSurfaceView(Context context, DoubleBuffer db, int size, ColorMap colorMap) 
+     {
+         super(context);
+@@ -151,37 +158,72 @@
+     private float mPreviousX;
+     
+     private float mPreviousY;
++ // touch events
++ 	private final int NONE = 0;
++ 	private final int DRAG = 0;
++ 	private final int ZOOM = 0;
+     @Override
+-    public boolean onTouchEvent(MotionEvent e) {
+-        // MotionEvent reports input details from the touch screen
+-        // and other input controls. In this case, you are only
+-        // interested in events where the touch position changed.
++    public boolean onTouchEvent(MotionEvent e) /* NEW STUFF*/
++	{
++		float x = e.getX();
++		float y = e.getY();
++		switch (e.getAction()) {
++			case MotionEvent.ACTION_DOWN:			// one touch: drag
++		      mode = DRAG;
++		      //mRend.eyeX = e.getX();
++		      //mRend.eyeY = e.getY;
++		      break;
++		      
++			case MotionEvent.ACTION_POINTER_DOWN:	// two touches: zoom
++				oldDist = spacing(e);
++				if (oldDist > 10.0f) 
++					mode = ZOOM; // zoom
++				break;
++				
++			case MotionEvent.ACTION_UP:		// no mode
++				mode = NONE;
++				oldDist = 100.0f;
++				break;
++				
++			case MotionEvent.ACTION_POINTER_UP:		// no mode
++				mode = NONE;
++				oldDist = 100.0f;
++				break;
++				
++			case MotionEvent.ACTION_MOVE:						// rotation
++				if (e.getPointerCount() > 1 && mode == ZOOM) 
++				{
++					newDist = spacing(e);
++					if (newDist > 10.0f) {
++						float scale = newDist/oldDist; // scale
++						
++						// scale in the renderer
++						mRend.changeScale(scale);
++						oldDist = newDist;
++					}
++				}
++				else if (mode == DRAG)
++				{
++					float dx = x - mPreviousX;
++					float dy = y - mPreviousY;
++					
++					mRend.mAngleX += dx * TOUCH_SCALE_FACTOR;
++					mRend.mAngleY += dy * TOUCH_SCALE_FACTOR;
+ 
+-        float x = e.getX();
+-        float y = e.getY();
++					requestRender();
++				}
++				break;
++		}
++		mPreviousX = x;
++		mPreviousY = y;
++		return true;
++	}
++	
++	private float spacing(MotionEvent event) /* NEW STUFF*/
++	{
++		float x = event.getX(0) - event.getX(1);
++		float y = event.getY(0) - event.getY(1);
++		return FloatMath.sqrt(x * x + y * y);
++	}
++}
+ 
+-        switch (e.getAction()) {
+-            case MotionEvent.ACTION_MOVE:
+-
+-                float dx = x - mPreviousX;
+-                float dy = y - mPreviousY;
+-
+-                // reverse direction of rotation above the mid-line
+-                if (y > getHeight() / 2) {
+-                  dx = dx * -1 ;
+-                }
+-
+-                // reverse direction of rotation to left of the mid-line
+-                if (x < getWidth() / 2) {
+-                  dy = dy * -1 ;
+-                }
+-
+-                mRend.mAngle += (dx + dy) * TOUCH_SCALE_FACTOR;  // = 180.0f / 320
+-                requestRender();
+-        }
+-
+-        mPreviousX = x;
+-        mPreviousY = y;
+-        return true;
+-    }
+-}
Index: /issm/oecreview/Archive/14064-14311/ISSM-14249-14250.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14249-14250.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14249-14250.diff	(revision 14312)
@@ -0,0 +1,43 @@
+Index: ../trunk-jpl/src/c/Container/Observations.cpp
+===================================================================
+--- ../trunk-jpl/src/c/Container/Observations.cpp	(revision 14249)
++++ ../trunk-jpl/src/c/Container/Observations.cpp	(revision 14250)
+@@ -149,28 +149,29 @@
+ 		h2 = (observation->x-x_interp)*(observation->x-x_interp) + (observation->y-y_interp)*(observation->y-y_interp);
+ 		if(i==0){
+ 			hmin2 = h2;
+-			index = i;
++			index = indices[i];
+ 		}
+ 		else{
+ 			if(h2<hmin2){
+ 				hmin2 = h2;
+-				index = i;
++				index = indices[i];
+ 			}
+ 		}
+ 	}  
+ 
+ 	/*Assign output pointer*/
+-	if(!nobs){
++	if(index>=0){
++		observation=dynamic_cast<Observation*>(this->GetObjectByOffset(index));
++		*px=observation->x;
++		*py=observation->y;
++		*pobs=observation->value;
++	}
++	else{
++
+ 		*px=UNDEF;
+ 		*py=UNDEF;
+ 		*pobs=UNDEF;
+ 	}
+-	else{
+-		observation=dynamic_cast<Observation*>(this->GetObjectByOffset(indices[index]));
+-		*px=observation->x;
+-		*py=observation->y;
+-		*pobs=observation->value;
+-	}
+ 	xDelete<int>(indices);
+ 
+ }/*}}}*/
Index: /issm/oecreview/Archive/14064-14311/ISSM-14250-14251.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14250-14251.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14250-14251.diff	(revision 14312)
@@ -0,0 +1,70 @@
+Index: ../trunk-jpl/src/m/os/dakotaversion.py
+===================================================================
+--- ../trunk-jpl/src/m/os/dakotaversion.py	(revision 0)
++++ ../trunk-jpl/src/m/os/dakotaversion.py	(revision 14251)
+@@ -0,0 +1,34 @@
++import os
++from issmdir import *
++from MatlabFuncs import *
++
++def dakotaversion():
++	"""
++	DAKOTAVERSION - recover dakota version number, inside dakota_config.h file
++ 
++	   Usage:
++	      DAKOTA_VERSION=dakotaversion();
++	"""
++
++	#default
++	DAKOTA_VERSION=0
++
++	configfile=os.path.join(issmdir(),'externalpackages','dakota','install','include','dakota_config.h')
++	if not os.path.exists(configfile):
++		raise RuntimeError("File '%s' not found. Dakota has not been configured yet!" % configfile)
++
++	#go through the file, and recover the line we want
++	try:
++		fid=open(configfile,'r')
++	except IOError as e:
++		raise IOerror("could not open file: '%s'" % configfile)
++
++	for tline in fid:
++		if strncmp(tline,'#define PACKAGE_VERSION',23):
++			DAKOTA_VERSION=tline[24:].replace('"','').strip()
++			break
++
++	fid.close()
++
++	return DAKOTA_VERSION
++
+Index: ../trunk-jpl/src/m/os/dakotaversion.m
+===================================================================
+--- ../trunk-jpl/src/m/os/dakotaversion.m	(revision 0)
++++ ../trunk-jpl/src/m/os/dakotaversion.m	(revision 14251)
+@@ -0,0 +1,26 @@
++function DAKOTA_VERSION=dakotaversion()
++%DAKOTAVERSION - recover dakota version number, inside config.h file
++%
++%   Usage:
++%       DAKOTA_VERSION=dakotaversion();
++
++%default
++DAKOTA_VERSION=0;
++
++configfile=[issmdir() '/externalpackages/dakota/install/include/dakota_config.h'];
++if ~exist(configfile,'file'),
++	error(['File ' configfile ' not found. Dakota has not been configured yet!']);
++end
++
++%go through the file, and recover the line we want
++fid=fopen(configfile,'r');
++if(fid==-1), error(['could not open file: ' configfile]); end
++
++while(true),
++	tline=fgets(fid);
++	if ~ischar(tline), break, end
++	if  strncmp(tline,'#define PACKAGE_VERSION',23),
++		DAKOTA_VERSION=strtrim(strrep(tline(25:end),'"',''));
++	end
++end
++fclose(fid);
Index: /issm/oecreview/Archive/14064-14311/ISSM-14251-14252.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14251-14252.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14251-14252.diff	(revision 14312)
@@ -0,0 +1,70 @@
+Index: ../trunk-jpl/src/m/plot/plot_manager.py
+===================================================================
+--- ../trunk-jpl/src/m/plot/plot_manager.py	(revision 14251)
++++ ../trunk-jpl/src/m/plot/plot_manager.py	(revision 14252)
+@@ -56,12 +56,12 @@
+ 	data2,datatype=processdata(md,data,options)
+ 
+ 	#standard plot
+-	p.subplot(nlines,ncols,i)
++	p.subplot(nlines,ncols,i,aspect='equal')
+ 
+ 	#plot unit
+ 	plot_unit(x,y,z,elements,data2,is2d,isplanet,datatype,options)
+ 
+ 	#apply all options
+ 	applyoptions(md,data2,options)
+-
++	
+ 	#ground overlay on kml plot_unit
+Index: ../trunk-jpl/src/m/plot/plotmodel.py
+===================================================================
+--- ../trunk-jpl/src/m/plot/plotmodel.py	(revision 14251)
++++ ../trunk-jpl/src/m/plot/plotmodel.py	(revision 14252)
+@@ -64,4 +64,3 @@
+ 		#	print 'error in plot_manager'
+ 	else:
+ 		raise StandardError('plotmodel error message: no output data found.')
+-			
+Index: ../trunk-jpl/src/m/plot/applyoptions.py
+===================================================================
+--- ../trunk-jpl/src/m/plot/applyoptions.py	(revision 14251)
++++ ../trunk-jpl/src/m/plot/applyoptions.py	(revision 14252)
+@@ -1,3 +1,4 @@
++from matplotlib.ticker import MaxNLocator
+ 
+ try:
+ 	import pylab as p
+@@ -106,6 +107,10 @@
+ 		p.zticks(ztickloc,zticklabels)
+ 	#}}}
+ 
++	#ticklabel notation {{{
++	p.gca().ticklabel_format(style='sci',scilimits=(0,0))
++	#}}}
++
+ 	#ticklabelfontsize {{{
+ 	if options.exist('ticklabelfontsize'):
+ 		ax=p.gca()
+@@ -115,6 +120,7 @@
+ 			for label in ax.get_zticklabels():
+ 				label.set_fontsize(options.getfieldvalue('ticklabelfontsize'))
+ 	#}}}
++
+ 	#view
+ 
+ 	#axis
+@@ -152,7 +158,12 @@
+ 
+ 	#colorbar {{{
+ 	if 'on' in options.getfieldvalue('colorbar','off'):
+-		p.colorbar()
++		cb=p.colorbar()
++		cb.locator=MaxNLocator(nbins=5) # default 5 ticks
++		cb.update_ticks()
++		if options.exist('colorbarnumticks'):
++			cb.locator=MaxNLocator(nbins=options.getfieldvalue('colorbarnumticks',5))
++			cb.update_ticks()
+ 	#}}}
+ 
+ 	#area
Index: /issm/oecreview/Archive/14064-14311/ISSM-14252-14253.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14252-14253.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14252-14253.diff	(revision 14312)
@@ -0,0 +1,27 @@
+Index: ../trunk-jpl/m4/issm_options.m4
+===================================================================
+--- ../trunk-jpl/m4/issm_options.m4	(revision 14252)
++++ ../trunk-jpl/m4/issm_options.m4	(revision 14253)
+@@ -174,12 +174,21 @@
+ 		dnl defaults
+ 		HAVE_DAKOTA=yes
+ 		DAKOTAINCL=-I$DAKOTA_ROOT/include
++		DAKOTA_VERSION=`cat $DAKOTA_ROOT/include/dakota_config.h | grep "#define PACKAGE_VERSION" | sed 's/#define PACKAGE_VERSION//' | sed 's/ //g' | sed -e 's/\"//g' `
++		AC_DEFINE_UNQUOTED([DAKOTA_VERSION],$DAKOTA_VERSION,[Dakota version number])
+ 		case "${host_os}" in
+ 			*cygwin*)
+ 			DAKOTALIB="-L$DAKOTA_ROOT/lib -ldakota -lteuchos -lpecos -lfftw3 -llhs -levidence -lsurfpack -lconmin -lddace -lfsudace -ljega -lcport -lopt -lpsuade -lnewmat -lncsuopt -lgsl -lquadrature -lcoliny -lcolin -lpebbl -lutilib -l3po -lnappspack -lappspack -lconveyor -lshared -lcdd -lamplsolver"
+ 			;;
+ 			*linux*)
+-			  DAKOTALIB="-L$DAKOTA_ROOT/lib -ldakota -lteuchos -lpecos -lfftw3 -llhs -levidence -lsurfpack -lconmin -lddace -lfsudace -ljega -lcport -lopt -lpsuade -lnewmat -lncsuopt -lgsl -lquadrature -lcoliny -lcolin -lpebbl -lutilib -l3po -lnappspack -lappspack -lconveyor -lshared -lcdd -lamplsolver"
++			if      test x$DAKOTA_VERSION = x4.2; then
++				DAKOTALIB="-L$DAKOTA_ROOT/lib -ldakota -lteuchos -lpecos -lfftw3 -llhs -levidence -lsurfpack -lconmin -lddace -lfsudace -ljega -lcport -lopt -lpsuade -lnewmat -lncsuopt -lgsl -lquadrature -lcoliny -lcolin -lpebbl -lutilib -l3po -lnappspack -lappspack -lconveyor -lshared -lcdd -lamplsolver"
++			else if test x$DAKOTA_VERSION = x5.1 || test x$DAKOTA_VERSION = x5.2; then
++				DAKOTALIB="-L$DAKOTA_ROOT/lib -ldakota -lteuchos -lpecos -llhs -lsparsegrid -lsurfpack -lconmin -lddace -lfsudace -ljega -lcport -loptpp -lpsuade -lncsuopt -lcolin -linterfaces -lmomh -lscolib -lpebbl -ltinyxml -lutilib -l3po -lhopspack -lnidr -lamplsolver -lboost_signals -lboost_regex -lboost_filesystem -lboost_system"
++			else
++				AC_MSG_ERROR([Dakota version not found or version ($DAKOTA_VERSION) not supported!]);
++			fi
++			fi
+ 			;;
+ 			*darwin*)
+ 			  DAKOTALIB="-L$DAKOTA_ROOT/lib -ldakota -lteuchos -lpecos -lfftw3 -llhs -levidence -lsurfpack -lconmin -lddace -lfsudace -ljega -lcport -lopt -lpsuade -lnewmat -lncsuopt -lgsl -lquadrature -lcoliny -lcolin -lpebbl -lutilib -l3po -lnappspack -lappspack -lconveyor -lshared -lcdd -lamplsolver" 
Index: /issm/oecreview/Archive/14064-14311/ISSM-14253-14254.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14253-14254.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14253-14254.diff	(revision 14312)
@@ -0,0 +1,13 @@
+Index: ../trunk-jpl/m4/issm_options.m4
+===================================================================
+--- ../trunk-jpl/m4/issm_options.m4	(revision 14253)
++++ ../trunk-jpl/m4/issm_options.m4	(revision 14254)
+@@ -175,7 +175,7 @@
+ 		HAVE_DAKOTA=yes
+ 		DAKOTAINCL=-I$DAKOTA_ROOT/include
+ 		DAKOTA_VERSION=`cat $DAKOTA_ROOT/include/dakota_config.h | grep "#define PACKAGE_VERSION" | sed 's/#define PACKAGE_VERSION//' | sed 's/ //g' | sed -e 's/\"//g' `
+-		AC_DEFINE_UNQUOTED([DAKOTA_VERSION],$DAKOTA_VERSION,[Dakota version number])
++		AC_DEFINE_UNQUOTED([DAKOTA_VERSION],"$DAKOTA_VERSION",[Dakota version number])
+ 		case "${host_os}" in
+ 			*cygwin*)
+ 			DAKOTALIB="-L$DAKOTA_ROOT/lib -ldakota -lteuchos -lpecos -lfftw3 -llhs -levidence -lsurfpack -lconmin -lddace -lfsudace -ljega -lcport -lopt -lpsuade -lnewmat -lncsuopt -lgsl -lquadrature -lcoliny -lcolin -lpebbl -lutilib -l3po -lnappspack -lappspack -lconveyor -lshared -lcdd -lamplsolver"
Index: /issm/oecreview/Archive/14064-14311/ISSM-14254-14255.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14254-14255.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14254-14255.diff	(revision 14312)
@@ -0,0 +1,54 @@
+Index: ../trunk-jpl/src/m/os/dakotaversion.py
+===================================================================
+--- ../trunk-jpl/src/m/os/dakotaversion.py	(revision 14254)
++++ ../trunk-jpl/src/m/os/dakotaversion.py	(revision 14255)
+@@ -11,9 +11,9 @@
+ 	"""
+ 
+ 	#default
+-	DAKOTA_VERSION=0
++	DAKOTA_VERSION=''
+ 
+-	configfile=os.path.join(issmdir(),'externalpackages','dakota','install','include','dakota_config.h')
++	configfile=os.path.join(issmdir(),'config.h')
+ 	if not os.path.exists(configfile):
+ 		raise RuntimeError("File '%s' not found. Dakota has not been configured yet!" % configfile)
+ 
+@@ -24,8 +24,8 @@
+ 		raise IOerror("could not open file: '%s'" % configfile)
+ 
+ 	for tline in fid:
+-		if strncmp(tline,'#define PACKAGE_VERSION',23):
+-			DAKOTA_VERSION=tline[24:].replace('"','').strip()
++		if strncmp(tline,'#define DAKOTA_VERSION',22):
++			DAKOTA_VERSION=tline[23:].replace('"','').strip()
+ 			break
+ 
+ 	fid.close()
+Index: ../trunk-jpl/src/m/os/dakotaversion.m
+===================================================================
+--- ../trunk-jpl/src/m/os/dakotaversion.m	(revision 14254)
++++ ../trunk-jpl/src/m/os/dakotaversion.m	(revision 14255)
+@@ -5,9 +5,9 @@
+ %       DAKOTA_VERSION=dakotaversion();
+ 
+ %default
+-DAKOTA_VERSION=0;
++DAKOTA_VERSION='';
+ 
+-configfile=[issmdir() '/externalpackages/dakota/install/include/dakota_config.h'];
++configfile=[issmdir() '/config.h'];
+ if ~exist(configfile,'file'),
+ 	error(['File ' configfile ' not found. Dakota has not been configured yet!']);
+ end
+@@ -19,8 +19,8 @@
+ while(true),
+ 	tline=fgets(fid);
+ 	if ~ischar(tline), break, end
+-	if  strncmp(tline,'#define PACKAGE_VERSION',23),
+-		DAKOTA_VERSION=strtrim(strrep(tline(25:end),'"',''));
++	if  strncmp(tline,'#define DAKOTA_VERSION',22),
++		DAKOTA_VERSION=strtrim(strrep(tline(24:end),'"',''));
+ 	end
+ end
+ fclose(fid);
Index: /issm/oecreview/Archive/14064-14311/ISSM-14255-14256.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14255-14256.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14255-14256.diff	(revision 14312)
@@ -0,0 +1,35 @@
+Index: ../trunk-jpl/src/m/os/dakotaversion.py
+===================================================================
+--- ../trunk-jpl/src/m/os/dakotaversion.py	(revision 14255)
++++ ../trunk-jpl/src/m/os/dakotaversion.py	(revision 14256)
+@@ -4,7 +4,7 @@
+ 
+ def dakotaversion():
+ 	"""
+-	DAKOTAVERSION - recover dakota version number, inside dakota_config.h file
++	DAKOTAVERSION - recover dakota version number, inside config.h file
+  
+ 	   Usage:
+ 	      DAKOTA_VERSION=dakotaversion();
+@@ -15,7 +15,7 @@
+ 
+ 	configfile=os.path.join(issmdir(),'config.h')
+ 	if not os.path.exists(configfile):
+-		raise RuntimeError("File '%s' not found. Dakota has not been configured yet!" % configfile)
++		raise RuntimeError("File '%s' not found. ISSM has not been configured yet!" % configfile)
+ 
+ 	#go through the file, and recover the line we want
+ 	try:
+Index: ../trunk-jpl/src/m/os/dakotaversion.m
+===================================================================
+--- ../trunk-jpl/src/m/os/dakotaversion.m	(revision 14255)
++++ ../trunk-jpl/src/m/os/dakotaversion.m	(revision 14256)
+@@ -9,7 +9,7 @@
+ 
+ configfile=[issmdir() '/config.h'];
+ if ~exist(configfile,'file'),
+-	error(['File ' configfile ' not found. Dakota has not been configured yet!']);
++	error(['File ' configfile ' not found. ISSM has not been configured yet!']);
+ end
+ 
+ %go through the file, and recover the line we want
Index: /issm/oecreview/Archive/14064-14311/ISSM-14256-14257.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14256-14257.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14256-14257.diff	(revision 14312)
@@ -0,0 +1,67 @@
+Index: ../trunk-jpl/src/m/plot/colormaps/demmap.m
+===================================================================
+--- ../trunk-jpl/src/m/plot/colormaps/demmap.m	(revision 0)
++++ ../trunk-jpl/src/m/plot/colormaps/demmap.m	(revision 14257)
+@@ -0,0 +1,62 @@
++function cmap = demmap(ncolors,minZ,maxZ);
++%DEMMAP - concatenate sea and land color depending on zmin and zmax
++%
++%   Usage:
++%      cmap = demmap(n,zmin,zmax)
++
++if nargin<3,
++	help landseacolor
++	error('3 arguments necessary');
++end
++
++if minZ == maxZ;
++	maxZ = minZ+1;
++end
++
++% determine appropriate number of sea and land colors
++if minZ == maxZ;
++	maxZ = minZ+1;
++end
++
++cmn = minZ;
++cmx = maxZ;
++
++% determine appropriate number of sea and land colors
++if minZ >= 0
++	nsea = 0;
++	nland = ncolors;
++elseif maxZ <= 0
++	nland = 0;
++	nsea = ncolors;
++else
++	% find optimal ratio of land to sea colors
++	maxminratio = maxZ/abs(minZ);
++	n1 = floor(ncolors/2);
++	n2 = ceil(ncolors/2);
++	if maxminratio>1
++		sea = (1:n1)';
++		land = (ncolors-1:-1:n2)';
++	else
++		land = (1:n1)';
++		sea = (ncolors-1:-1:n2)';
++	end
++	ratio = land./sea;
++	errors = abs(ratio - maxminratio) / maxminratio;
++	indx = find(errors == min(min(errors)));
++	nsea = sea(indx);
++	nland = land(indx);
++
++	% determine color limits
++	seaint = abs(minZ)/nsea;
++	landint = maxZ/nland;
++	if seaint >= landint
++		interval = seaint;
++	else
++		interval = landint;
++	end
++	cmn = -nsea*interval*(1 + 1e-9);      % zero values treated as land
++	cmx = nland*interval;
++end
++
++clim = [cmn cmx];
++cmap = [seacolor(nsea);landcolor(nland)];
Index: /issm/oecreview/Archive/14064-14311/ISSM-14257-14258.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14257-14258.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14257-14258.diff	(revision 14312)
@@ -0,0 +1,27 @@
+Index: ../trunk-jpl/m4/issm_options.m4
+===================================================================
+--- ../trunk-jpl/m4/issm_options.m4	(revision 14257)
++++ ../trunk-jpl/m4/issm_options.m4	(revision 14258)
+@@ -173,8 +173,11 @@
+ 
+ 		dnl defaults
+ 		HAVE_DAKOTA=yes
++		AC_MSG_RESULT($HAVE_DAKOTA)
+ 		DAKOTAINCL=-I$DAKOTA_ROOT/include
++		AC_MSG_CHECKING(for dakota version)
+ 		DAKOTA_VERSION=`cat $DAKOTA_ROOT/include/dakota_config.h | grep "#define PACKAGE_VERSION" | sed 's/#define PACKAGE_VERSION//' | sed 's/ //g' | sed -e 's/\"//g' `
++		AC_MSG_RESULT($DAKOTA_VERSION)
+ 		AC_DEFINE_UNQUOTED([DAKOTA_VERSION],"$DAKOTA_VERSION",[Dakota version number])
+ 		case "${host_os}" in
+ 			*cygwin*)
+@@ -201,9 +204,9 @@
+ 
+ 	else
+ 		HAVE_DAKOTA=no
++		AC_MSG_RESULT($HAVE_DAKOTA)
+ 	fi
+ 	AM_CONDITIONAL([DAKOTA], [test x$HAVE_DAKOTA = xyes])
+-	AC_MSG_RESULT($HAVE_DAKOTA)
+ 	dnl }}}
+ 	dnl boost{{{
+ 	AC_ARG_WITH([boost-dir],
Index: /issm/oecreview/Archive/14064-14311/ISSM-14258-14259.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14258-14259.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14258-14259.diff	(revision 14312)
@@ -0,0 +1,26 @@
+Index: ../trunk-jpl/src/m/plot/latlonoverlay.m
+===================================================================
+--- ../trunk-jpl/src/m/plot/latlonoverlay.m	(revision 14258)
++++ ../trunk-jpl/src/m/plot/latlonoverlay.m	(revision 14259)
+@@ -86,8 +86,8 @@
+ 
+ 		if (xcorner>xlimits(1) & xcorner<xlimits(2) & ycorner>ylimits(1) & ycorner<ylimits(2)),
+ 			angle=mod((180)/pi*atan2((ycorner2-ycorner),(xcorner2-xcorner))+latangle,360);
+-			if lat<0, label=[num2str(abs(lat)) '^{\circ}S'];
+-			else      label=[num2str(abs(lat)) '^{\circ}N']; end
++			if lat<0, label=[num2str(abs(lat)) '^{\circ} S'];
++			else      label=[num2str(abs(lat)) '^{\circ} N']; end
+ 			th=text(xcorner,ycorner,label);
+ 			set(th,'Color',colornumber,'Rotation',angle,'FontSize',fontsize,'HorizontalAlignment','center','VerticalAlignment','middle','Clipping','on');
+ 
+@@ -129,8 +129,8 @@
+ 
+ 		if (xcorner>xlimits(1) & xcorner<xlimits(2) & ycorner>ylimits(1) & ycorner<ylimits(2)),
+ 			angle=mod((180)/pi*atan2((ycorner2-ycorner),(xcorner2-xcorner))+lonangle,360);
+-			if lon<0, label=[num2str(abs(lon)) '^{\circ}W'];
+-			else      label=[num2str(abs(lon)) '^{\circ}E']; end
++			if lon<0, label=[num2str(abs(lon)) '^{\circ} W'];
++			else      label=[num2str(abs(lon)) '^{\circ} E']; end
+ 			th=text(xcorner,ycorner,label);
+ 			set(th,'Color',colornumber,'Rotation',angle,'FontSize',fontsize,'HorizontalAlignment','center','VerticalAlignment','middle','Clipping','on');
+ 
Index: /issm/oecreview/Archive/14064-14311/ISSM-14259-14260.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14259-14260.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14259-14260.diff	(revision 14312)
@@ -0,0 +1,210 @@
+Index: ../trunk-jpl/src/m/plot/checkplotoptions.py
+===================================================================
+--- ../trunk-jpl/src/m/plot/checkplotoptions.py	(revision 14259)
++++ ../trunk-jpl/src/m/plot/checkplotoptions.py	(revision 14260)
+@@ -1,3 +1,5 @@
++import numpy as npy
++
+ def checkplotoptions(md,options):
+ 	'''
+ 	CHECKPLOTOPTIONS - build a structure that holds all plot options
+@@ -10,6 +12,130 @@
+ 		NOTE: not fully implemented yet
+ 	'''
+ 
+-	print "WARNING: checkplotoptions not implemented: options returned as passed"
++
++	#units
++	if options.exist('unit'):
++		if 'km' in options.getfieldvalue('unit','km'):
++			options.changefieldvalue('unit',10**-3)
++		if '100km' in options.getfieldvalue('unit','100km'):
++			options.changefieldvalue('unit',10**-5)
++	
++	#density
++	if options.exist('density'):
++		density=options.getfieldvalue('density')
++		options.changefieldvalue('density',abs(ceil(density)))
++	
++	#show section
++	if options.exist('showsection'):
++		if 'on' in options.getfieldvalue('showsection','on'):
++			options.changefieldvalue('showsection',4)
++	
++	#smooth values
++	if options.exist('smooth'):
++		if 'on' in options.getfieldvalue('smooth','on'):
++			options.changefieldvalue('smooth',0)
++
++	#contouronly values
++	if options.exist('contouronly'):
++		if 'on' in options.getfieldvalue('contouronly','on'):
++			options.changefieldvalue('contouronly',1)
++
++	#colorbar
++	if options.exist('colorbar'):
++		if 'on' in options.getfieldvalue('colorbar','on'):
++			options.changefieldvalue('colorbar',1)
++		elif 'off' in options.getfieldvalue('colorbar','off'):
++			options.changefieldvalue('colorbar',0)
++
++	#text
++	if options.exist('text'):
++		#1: textvalue
++		textvalues=options.getfieldvalue('text')
++		numtext=len(textvalues)
++
++		#2: textweight
++		if options.exist('textweight'):
++			textweightvalues=options.getfieldvalue('textweight')
++		else:
++			textweightvalues='n'
++		textweightvalues=npy.tile(textweightvalues,numtext)
++
++		#3 textsize
++		if options.exist('textsize'):
++			textsizevalues=options.getfieldvalue('textsize')
++		else:
++			textsizevalues=14
++		textsizevalues=npy.tile(textsizevalues,numtext)
++
++		#4 textcolor
++		if options.exist('textcolor'):
++			textcolorvalues=options.getfieldvalue('textcolor')
++		else:
++			textcolorvalues='k'
++		textcolorvalues=npy.tile(textsizevalues,numtext)
++
++		#5 textposition
++		if options.exist('textposition'):
++			options.getfieldvalue('textposition')
++		else:
++			raise Exception("plotmodel error message: 'textposition' option is missing")
++
++		#6 textrotation
++		if options.exist('textrotation'):
++			textrotationvalues=options.getfieldvalue('textrotation')
++		else:
++			textrotationvalues=0
++		textrotationvalues=npy.tile(textrotationvalues,numtext)
++
++		options.changfieldvalue('text',textvalues)
++		options.changfieldvalue('textsize',textsizevalues)
++		options.changfieldvalue('textweight',textweightvalues)
++		options.changfieldvalue('textcolor',textcolorvalues)
++		options.changfieldvalue('textposition',textpositionvalues)
++		options.changfieldvalue('textrotation',textrotationvalues)
++
++	#expdisp
++	expdispvaluesarray=[0,0]
++	expstylevaluesarray=[0,0]
++	expstylevalues=[0,0]
++	if options.exist('expstyle'):
++		expstylevalues=options.getfieldvalue('expstyle')
++	if options.exist('expdisp'):
++		expdispvalues=options.getfieldvalue('expdisp')
++		for i in npy.arange(len(expdispvalues)):
++			expdispvaluesarray.append(expdispvalues[i])
++			if len(expstylevalues)>i+1:
++				expstylevaluesarray.append(expstylevalues[i])
++			else:
++				expstylevaluesarray.append('-k')
++
++	options.changefieldvalue('expstyle',expstylevaluesarray)
++	options.changefieldvalue('expdisp',expdispvaluesarray)
++
++	#latlonnumbering
++	if options.exist('latlonclick'):
++		if 'on' in options.getfieldvalue('latlonclick','on'):
++			options.changefieldvalue('latlonclick',1)
++
++	#northarrow
++	if options.exist('northarrow'):
++		if 'on' in options.getfieldvalue('northarrow','on'):
++			#default values
++			Lx=max(md.mesh.x)-min(md.mesh.x)
++			Ly=max(md.mesh.y)-min(md.mesh.y)
++			options.changefieldvalue('northarrow',[min(md.mesh.x)+1./6.*Lx, min(md.mesh.y)+5./6.*Ly, 1./15.*Ly, 0.25, 1./250.*Ly])
++
++	#scale ruler
++	if options.exist('scaleruler'):
++		if 'on' in options.exist('scaleruler','on'):
++			Lx=max(md.mesh.x)-min(md.mesh.x)
++			Ly=max(md.mesh.y)-min(md.mesh.y)
++			options.changefieldvalue('scaleruler',[min(md.mesh.x)+6./8.*Lx, min(md.mesh.y)+1./10.*Ly, 10**(ceil(log10(Lx)))/5, floor(Lx/100), 5])
++
++	#log scale
++	if options.exist('log'):
++		if options.exist('caxis'):
++			options.changefieldvalue('caxis',log(options.getfieldvalue('caxis'))/log(options.getfieldvalue('log')))
++		options.changefieldvalue('cutoff',log(options.getfieldvalue('cutoff',1.5))/log(options.getfieldvalue('log')))
++
+ 	return options
+-
+Index: ../trunk-jpl/src/m/plot/checkplotoptions.m
+===================================================================
+--- ../trunk-jpl/src/m/plot/checkplotoptions.m	(revision 14259)
++++ ../trunk-jpl/src/m/plot/checkplotoptions.m	(revision 14260)
+@@ -80,6 +80,7 @@
+ 		textweightvalues={'n'};
+ 	end
+ 	textweightvalues=repmat(textweightvalues,1,numtext); textweightvalues(numtext+1:end)=[];
++
+ 	%3: textsize
+ 	if exist(options,'textsize'),
+ 		textsizevalues=getfieldvalue(options,'textsize');
+@@ -106,7 +107,7 @@
+ 		textcolorvalues={'k'};
+ 	end
+ 	textcolorvalues=repmat(textcolorvalues,1,numtext); textcolorvalues(numtext+1:end)=[];
+-	%4: textposition
++	%5: textposition
+ 	if exist(options,'textposition'),
+ 		textpositionvalues=getfieldvalue(options,'textposition');
+ 		%ischar if only one textposition -> create a cell
+@@ -190,7 +191,7 @@
+ if exist(options,'scaleruler'),
+ 	if strcmpi(getfieldvalue(options,'scaleruler'),'on')
+ 		%default values
+-		Lx=max(md.mesh.y)-min(md.mesh.y);
++		Lx=max(md.mesh.x)-min(md.mesh.x);
+ 		Ly=max(md.mesh.y)-min(md.mesh.y);
+ 		%default values
+ 		options=changefieldvalue(options,'scaleruler',[min(md.mesh.x)+6/8*Lx   min(md.mesh.y)+1/10*Ly   10^(ceil(log10(Lx)))/5 floor(Lx/100) 5]);
+Index: ../trunk-jpl/src/m/plot/plotmodel.py
+===================================================================
+--- ../trunk-jpl/src/m/plot/plotmodel.py	(revision 14259)
++++ ../trunk-jpl/src/m/plot/plotmodel.py	(revision 14260)
+@@ -1,3 +1,4 @@
++import numpy as npy
+ 
+ try:
+ 	import pylab as p
+@@ -20,12 +21,16 @@
+ 	#get number of subplots
+ 	subplotwidth=ceil(sqrt(options.numberofplots))
+ 	
++	#Get figure number and number of plots
++	figurenumber=options.figurenumber
++	numberofplots=options.numberofplots
++
+ 	#if nlines and ncols specified, then bypass
+ 	if options.list[0].exist('nlines'):
+ 		nlines=options.list[0].getfieldvalue('nlines')
+ 		nl=True
+ 	else:
+-		nlines=subplotwidth
++		nlines=npy.ceil(numberofplots/subplotwidth)
+ 		nl=False
+ 	
+ 	if options.list[0].exist('ncols'):
+@@ -39,9 +44,6 @@
+ 	if not nl==nc:
+ 		raise StandardError('error: nlines and ncols need to be specified together, or not at all')
+ 	
+-	#Get figure number and number of plots
+-	figurenumber=options.figurenumber
+-	numberofplots=options.numberofplots
+ 	
+ 	#Go through plots
+ 	if numberofplots:
Index: /issm/oecreview/Archive/14064-14311/ISSM-14260-14261.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14260-14261.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14260-14261.diff	(revision 14312)
@@ -0,0 +1,23 @@
+Index: ../trunk-jpl/src/m/exp/expwrite.m
+===================================================================
+--- ../trunk-jpl/src/m/exp/expwrite.m	(revision 14260)
++++ ../trunk-jpl/src/m/exp/expwrite.m	(revision 14261)
+@@ -14,6 +14,18 @@
+ %
+ %   See also EXPDOC, EXPREAD, EXPWRITEASVERTICES
+ 
++%check input variable
++if ~isstruct(a),
++	error('first argument is not a structure');
++end
++
++%Add density if it's not there
++if ~isfield(a,'density'),
++	for n=1:length(a),
++		a(n).density=1;
++	end
++end
++
+ fid=fopen(filename,'w');
+ for n=1:length(a),
+ 	if(length(a(n).x)~=length(a(n).y)),
Index: /issm/oecreview/Archive/14064-14311/ISSM-14261-14262.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14261-14262.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14261-14262.diff	(revision 14312)
@@ -0,0 +1,20 @@
+Index: ../trunk-jpl/src/m/exp/expwrite.m
+===================================================================
+--- ../trunk-jpl/src/m/exp/expwrite.m	(revision 14261)
++++ ../trunk-jpl/src/m/exp/expwrite.m	(revision 14262)
+@@ -33,13 +33,9 @@
+ 	end
+ 
+ 	if isfield(a,'name'),
+-		if ~isempty(a(n).name),
+-			fprintf(fid,'%s%s\n','## Name:',a(n).name);
+-		else
+-			fprintf(fid,'%s\n','## Name:');
+-		end
++		fprintf(fid,'%s%s\n','## Name:',a(n).name);
+ 	else
+-		fprintf(fid,'%s\n','## Name:');
++		fprintf(fid,'%s%s\n','## Name:',filename);
+ 	end
+ 
+ 	fprintf(fid,'%s\n','## Icon:0');
Index: /issm/oecreview/Archive/14064-14311/ISSM-14262-14263.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14262-14263.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14262-14263.diff	(revision 14312)
@@ -0,0 +1,17 @@
+Index: ../trunk-jpl/src/c/solvers/solver_thermal_nonlinear.cpp
+===================================================================
+--- ../trunk-jpl/src/c/solvers/solver_thermal_nonlinear.cpp	(revision 14262)
++++ ../trunk-jpl/src/c/solvers/solver_thermal_nonlinear.cpp	(revision 14263)
+@@ -32,12 +32,10 @@
+ 
+ 	/*parameters:*/
+ 	int kflag,pflag;
+-	bool lowmem=0;
+ 	int  configuration_type;
+ 
+ 	/*Recover parameters: */
+ 	kflag=1; pflag=1;
+-	femmodel->parameters->FindParam(&lowmem,SettingsLowmemEnum);
+ 	femmodel->parameters->FindParam(&thermal_penalty_threshold,ThermalPenaltyThresholdEnum);
+ 	femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
+ 	femmodel->parameters->FindParam(&thermal_maxiter,ThermalMaxiterEnum);
Index: /issm/oecreview/Archive/14064-14311/ISSM-14263-14264.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14263-14264.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14263-14264.diff	(revision 14312)
@@ -0,0 +1,26 @@
+Index: ../trunk-jpl/src/m/classes/qmu/@dakota_method/dmeth_params_write.m
+===================================================================
+--- ../trunk-jpl/src/m/classes/qmu/@dakota_method/dmeth_params_write.m	(revision 14263)
++++ ../trunk-jpl/src/m/classes/qmu/@dakota_method/dmeth_params_write.m	(revision 14264)
+@@ -349,6 +349,9 @@
+             case {'nond_sampling'}
+                 param_write(fid,sbeg,'seed','             = ','\n',dm.params);
+                 param_write(fid,sbeg,'fixed_seed','','\n',dm.params);
++				if (str2num(dakotaversion())>4.2)
++	                param_write(fid,sbeg,'rng','                ','\n',dm.params);
++				end
+                 param_write(fid,sbeg,'samples','          = ','\n',dm.params);
+                 param_write(fid,sbeg,'sample_type','        ','\n',dm.params);
+                 param_write(fid,sbeg,'all_variables','','\n',dm.params);
+Index: ../trunk-jpl/src/m/classes/qmu/@dakota_method/dakota_method.m
+===================================================================
+--- ../trunk-jpl/src/m/classes/qmu/@dakota_method/dakota_method.m	(revision 14263)
++++ ../trunk-jpl/src/m/classes/qmu/@dakota_method/dakota_method.m	(revision 14264)
+@@ -619,6 +619,7 @@
+                                 dm.params.output=false;
+                                 dm.params.seed=false;
+                                 dm.params.fixed_seed=false;
++                                dm.params.rng=false;
+                                 dm.params.samples=false;
+                                 dm.params.sample_type='lhs';
+                                 dm.params.all_variables=false;
Index: /issm/oecreview/Archive/14064-14311/ISSM-14264-14265.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14264-14265.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14264-14265.diff	(revision 14312)
@@ -0,0 +1,17 @@
+Index: ../trunk-jpl/src/m/classes/qmu/@dakota_method/dmeth_params_write.m
+===================================================================
+--- ../trunk-jpl/src/m/classes/qmu/@dakota_method/dmeth_params_write.m	(revision 14264)
++++ ../trunk-jpl/src/m/classes/qmu/@dakota_method/dmeth_params_write.m	(revision 14265)
+@@ -349,9 +349,9 @@
+             case {'nond_sampling'}
+                 param_write(fid,sbeg,'seed','             = ','\n',dm.params);
+                 param_write(fid,sbeg,'fixed_seed','','\n',dm.params);
+-				if (str2num(dakotaversion())>4.2)
+-	                param_write(fid,sbeg,'rng','                ','\n',dm.params);
+-				end
++                if (str2num(dakotaversion())>4.2)
++                    param_write(fid,sbeg,'rng','                ','\n',dm.params);
++                end
+                 param_write(fid,sbeg,'samples','          = ','\n',dm.params);
+                 param_write(fid,sbeg,'sample_type','        ','\n',dm.params);
+                 param_write(fid,sbeg,'all_variables','','\n',dm.params);
Index: /issm/oecreview/Archive/14064-14311/ISSM-14265-14266.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14265-14266.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14265-14266.diff	(revision 14312)
@@ -0,0 +1,19 @@
+Index: ../trunk-jpl/src/m/exp/expwrite.py
+===================================================================
+--- ../trunk-jpl/src/m/exp/expwrite.py	(revision 14265)
++++ ../trunk-jpl/src/m/exp/expwrite.py	(revision 14266)
+@@ -24,12 +24,9 @@
+ 			raise RuntimeError("contours x and y coordinates must be of identical size")
+    
+ 		if 'name' in contour:
+-			if contour['name']:
+-				fid.write("%s%s\n" % ('## Name:',contour['name']))
+-			else:
+-				fid.write("%s\n" % '## Name:')
++			fid.write("%s%s\n" % ('## Name:',contour['name']))
+ 		else:
+-			fid.write("%s\n" % '## Name:')
++			fid.write("%s%s\n" % ('## Name:',filename))
+    
+ 		fid.write("%s\n" % '## Icon:0')
+ 		fid.write("%s\n" % '# Points Count Value')
Index: /issm/oecreview/Archive/14064-14311/ISSM-14266-14267.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14266-14267.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14266-14267.diff	(revision 14312)
@@ -0,0 +1,15 @@
+Index: ../trunk-jpl/src/m/exp/expwrite.py
+===================================================================
+--- ../trunk-jpl/src/m/exp/expwrite.py	(revision 14266)
++++ ../trunk-jpl/src/m/exp/expwrite.py	(revision 14267)
+@@ -28,6 +28,10 @@
+ 		else:
+ 			fid.write("%s%s\n" % ('## Name:',filename))
+    
++		#Add density if it's not there
++		if 'density' not in contour:
++			contour['density']=1
++
+ 		fid.write("%s\n" % '## Icon:0')
+ 		fid.write("%s\n" % '# Points Count Value')
+ 		fid.write("%i %f\n" % (numpy.size(contour['x']),contour['density']))
Index: /issm/oecreview/Archive/14064-14311/ISSM-14267-14268.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14267-14268.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14267-14268.diff	(revision 14312)
@@ -0,0 +1,175 @@
+Index: ../trunk-jpl/externalpackages/dakota/pecos_global_defs.hpp.5.2.patch
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/pecos_global_defs.hpp.5.2.patch	(revision 0)
++++ ../trunk-jpl/externalpackages/dakota/pecos_global_defs.hpp.5.2.patch	(revision 14268)
+@@ -0,0 +1,4 @@
++24a25
++> #ifndef PI
++25a27
++> #endif
+Index: ../trunk-jpl/externalpackages/dakota/NonDLocalReliability.C.5.2.patch
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/NonDLocalReliability.C.5.2.patch	(revision 0)
++++ ../trunk-jpl/externalpackages/dakota/NonDLocalReliability.C.5.2.patch	(revision 14268)
+@@ -0,0 +1,9 @@
++2218a2219
++> 	  // add sensitivity output to importance factors (jes, 8/06/10)
++2223c2224,2227
++< 	    << std::setw(width) << impFactor(j,i) << '\n';
++---
++> 	    << std::setw(width) << impFactor(j,i)
++> 	    << "  Sensitivity = "
++> 	    << std::resetiosflags(std::ios::adjustfield)
++> 	    << std::setw(width) << fnGradsMeanX(j,i) << '\n';
+Index: ../trunk-jpl/externalpackages/dakota/NonDUnilevelRBDO.C.5.2.patch
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/NonDUnilevelRBDO.C.5.2.patch	(revision 0)
++++ ../trunk-jpl/externalpackages/dakota/NonDUnilevelRBDO.C.5.2.patch	(revision 14268)
+@@ -0,0 +1,7 @@
++1046a1047
++> 	  // add sensitivity output to importance factors (jes, 8/06/10)
++1048c1049,1050
++< 	    << uv_labels[j].data() << " = " << impFactor[i][j] << '\n';
++---
++> 	    << uv_labels[j].data() << " = " << impFactor[i][j]
++> 	    << "  Sensitivity = " << fnGradsMeanX(i,j) << '\n';
+Index: ../trunk-jpl/externalpackages/dakota/ParallelLibrary.C.5.2.patch
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/ParallelLibrary.C.5.2.patch	(revision 0)
++++ ../trunk-jpl/externalpackages/dakota/ParallelLibrary.C.5.2.patch	(revision 14268)
+@@ -0,0 +1,36 @@
++178a179
++>   initialized=0; //we run serially all the time!
++214a216,248
++> /** This constructor is provided for the Issm software, to run serial
++>  * Dakota in a parallel MPI ring: */
++> ParallelLibrary::ParallelLibrary(char* serial_mode):
++>   worldRank(0), worldSize(1), 
++>   mpirunFlag(false), ownMPIFlag(false), dummyFlag(false),
++>   stdOutputToFile(false), stdErrorToFile(false), checkFlag(false),
++>   preRunFlag(true), runFlag(true), postRunFlag(true), userModesFlag(false), 
++>   startClock(0), stopRestartEvals(0),
++>   currPLIter(parallelLevels.end()), currPCIter(parallelConfigurations.end())
++> {
++>   startClock   = clock();
++> #ifdef DAKOTA_UTILIB
++>   utilib::exception_mngr::set_mode(utilib::exception_mngr::Abort);
++>   startCPUTime = CPUSeconds();       // see utilib/src/sys/seconds.cpp
++>   startWCTime  = WallClockSeconds(); // see utilib/src/sys/seconds.cpp
++> #endif // DAKOTA_UTILIB
++> 
++>   // do not initialize MPI.  Get worldRank/worldSize if available
++>   ParallelLevel pl;
++> #ifdef HAVE_MPI // mpi available, we still don't want to run in parallel for  Dakota!
++>   pl.serverIntraComm = MPI_COMM_NULL;
++>   Cout << "Running Dakota MPI executable in serial mode on CPU 0 for ISSM.";
++> #else // mpi not available
++>   pl.serverIntraComm = MPI_COMM_NULL;
++>   Cout << "Running Dakota serial executable in serial mode for ISSM.\n";
++> #endif // HAVE_MPI
++> 
++>   parallelLevels.push_back(pl);
++>   currPLIter = parallelLevels.begin();
++>   increment_parallel_configuration();
++> }
++> 
++> 
+Index: ../trunk-jpl/externalpackages/dakota/NIDRProblemDescDB.C.5.2.patch
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/NIDRProblemDescDB.C.5.2.patch	(revision 0)
++++ ../trunk-jpl/externalpackages/dakota/NIDRProblemDescDB.C.5.2.patch	(revision 14268)
+@@ -0,0 +1,5 @@
++109a110,113
++> 
++>   //close the input file
++>   fclose(nidrin);
++> 
+Index: ../trunk-jpl/externalpackages/dakota/ParallelLibrary.H.5.2.patch
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/ParallelLibrary.H.5.2.patch	(revision 0)
++++ ../trunk-jpl/externalpackages/dakota/ParallelLibrary.H.5.2.patch	(revision 14268)
+@@ -0,0 +1,3 @@
++358a359,360
++>   /// library mode constructor, serial mode (for the Issm software)
++>   ParallelLibrary(char*  serial_mode);
+Index: ../trunk-jpl/externalpackages/dakota/NonDSampling.C.5.2.patch
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/NonDSampling.C.5.2.patch	(revision 0)
++++ ../trunk-jpl/externalpackages/dakota/NonDSampling.C.5.2.patch	(revision 14268)
+@@ -0,0 +1,14 @@
++438,439c438,440
++<   if (!subIteratorFlag)
++<     nonDSampCorr.compute_correlations(vars_samples, resp_samples);
++---
++> //don't compute for now, too expensive.
++> //  if (!subIteratorFlag)
++> //    nonDSampCorr.compute_correlations(vars_samples, resp_samples);
++894,895c895,897
++<     nonDSampCorr.print_correlations(s, cv_labels, div_labels, drv_labels,
++<       iteratedModel.response_labels());
++---
++> //don't output for now.
++> //    nonDSampCorr.print_correlations(s, cv_labels, div_labels, drv_labels,
++> //      iteratedModel.response_labels());
+Index: ../trunk-jpl/externalpackages/dakota/install-5.2-linux64-astrid.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/install-5.2-linux64-astrid.sh	(revision 0)
++++ ../trunk-jpl/externalpackages/dakota/install-5.2-linux64-astrid.sh	(revision 14268)
+@@ -0,0 +1,51 @@
++#!/bin/bash
++set -eu
++
++#Some cleanup
++rm -rf Dakota
++rm -rf src 
++rm -rf install 
++mkdir src install 
++
++#Download from ISSM server
++#$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/Dakota_5_2.src.tar.gz' 'Dakota_5_2.src.tar.gz'
++
++#Untar 
++tar -zxvf Dakota_5_2.src.tar.gz
++
++#Move Dakota to src directory
++mv Dakota/* src
++rm -rf Dakota
++
++#Apply patches
++patch src/src/ParallelLibrary.C ./ParallelLibrary.C.5.2.patch
++patch src/src/ParallelLibrary.H ./ParallelLibrary.H.5.2.patch
++#patch src/src/NIDRProblemDescDB.C ./NIDRProblemDescDB.C.5.2.patch    #  causes segfault in 5.2
++patch src/src/NonDSampling.C ./NonDSampling.C.5.2.patch
++patch src/src/NonDLocalReliability.C ./NonDLocalReliability.C.5.2.patch
++patch src/src/NonDUnilevelRBDO.C ./NonDUnilevelRBDO.C.5.2.patch    #  source not even used?
++patch src/packages/pecos/src/pecos_global_defs.hpp ./pecos_global_defs.hpp.5.2.patch
++
++#Configure dakota
++cd src
++./configure \
++	--prefix="$ISSM_DIR/externalpackages/dakota/install" \
++	--without-graphics  \
++	--with-pic \
++	--disable-mpi \
++	--with-plugin \
++	--with-blas=/usr/lib64/libblas.so.3.0.3 \
++	--with-lapack=/usr/lib64/liblapack.so.3.0.3
++cd ..
++
++#Compile and install dakota
++cd src 
++if [ $# -eq 0 ];
++then
++	make
++	make install
++else
++	make -j $1
++	make -j $1 install
++fi
++cd ..
+
+Property changes on: ../trunk-jpl/externalpackages/dakota/install-5.2-linux64-astrid.sh
+___________________________________________________________________
+Added: svn:executable
+## -0,0 +1 ##
++*
Index: /issm/oecreview/Archive/14064-14311/ISSM-14268-14269.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14268-14269.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14268-14269.diff	(revision 14312)
@@ -0,0 +1,14 @@
+Index: ../trunk-jpl/test/NightlyRun/test234.m
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/test234.m	(revision 14268)
++++ ../trunk-jpl/test/NightlyRun/test234.m	(revision 14269)
+@@ -41,6 +41,9 @@
+ %%  nond_sampling study
+ md.qmu.method=dakota_method('nond_samp');
+ md.qmu.method(end)=dmeth_params_set(md.qmu.method(end),'seed',1234,'samples',20,'sample_type','lhs');
++if (str2num(dakotaversion())>4.2)
++	md.qmu.method(end)=dmeth_params_set(md.qmu.method(end),'rng','rnum2')
++end
+ 
+ %parameters
+ md.qmu.params.direct=true;
Index: /issm/oecreview/Archive/14064-14311/ISSM-14269-14270.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14269-14270.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14269-14270.diff	(revision 14312)
@@ -0,0 +1,78 @@
+Index: ../trunk-jpl/test/NightlyRun/test234.m
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/test234.m	(revision 14269)
++++ ../trunk-jpl/test/NightlyRun/test234.m	(revision 14270)
+@@ -61,15 +61,15 @@
+ md.qmu.results=md.results.dakota;
+ 
+ %Fields and tolerances to track changes
+-md.results.dakota.importancefactors=[];
++md.results.dakota.moments=[];
+ for i=1:8,
+-	md.results.dakota.importancefactors=[md.results.dakota.importancefactors md.results.dakota.dresp_out(i).mean];
++	md.results.dakota.moments=[md.results.dakota.moments md.results.dakota.dresp_out(i).mean];
+ end
+ for i=1:8,
+-	md.results.dakota.importancefactors=[md.results.dakota.importancefactors md.results.dakota.dresp_out(i).stddev];
++	md.results.dakota.moments=[md.results.dakota.moments md.results.dakota.dresp_out(i).stddev];
+ end
+-field_names     ={'importancefactors'};
++field_names     ={'moments'};
+ field_tolerances={1e-11};
+ field_values={...
+-         md.results.dakota.importancefactors,...
++         md.results.dakota.moments,...
+ 	};
+Index: ../trunk-jpl/test/NightlyRun/test414.m
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/test414.m	(revision 14269)
++++ ../trunk-jpl/test/NightlyRun/test414.m	(revision 14270)
+@@ -54,17 +54,17 @@
+ %ok, mass flux of 3 profiles should be -3 Gt/yr -3 Gt/yr and the sum, which is -6 Gt/yr
+ %we recover those mass fluxes through the mean of the response.
+ %also, we recover the max velo, which should be 1m/yr. 
+-%we put all that data in the importancefactors, which we will use to test for success.
++%we put all that data in the moments, which we will use to test for success.
+ %also, check that the stddev are 0.
+-md.results.dakota.importancefactors=[];
++md.results.dakota.moments=[];
+ for i=1:8,
+-	md.results.dakota.importancefactors=[md.results.dakota.importancefactors md.results.dakota.dresp_out(i).mean];
++	md.results.dakota.moments=[md.results.dakota.moments md.results.dakota.dresp_out(i).mean];
+ end
+ for i=1:8,
+-	md.results.dakota.importancefactors=[md.results.dakota.importancefactors md.results.dakota.dresp_out(i).stddev];
++	md.results.dakota.moments=[md.results.dakota.moments md.results.dakota.dresp_out(i).stddev];
+ end
+-field_names     ={'importancefactors'};
++field_names     ={'moments'};
+ field_tolerances={1e-11};
+ field_values={...
+-         md.results.dakota.importancefactors,...
++         md.results.dakota.moments,...
+ 	};
+Index: ../trunk-jpl/test/NightlyRun/test235.m
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/test235.m	(revision 14269)
++++ ../trunk-jpl/test/NightlyRun/test235.m	(revision 14270)
+@@ -58,15 +58,15 @@
+ md.qmu.results=md.results.dakota;
+ 
+ %Fields and tolerances to track changes
+-md.results.dakota.importancefactors=[];
++md.results.dakota.moments=[];
+ for i=1:8,
+-	md.results.dakota.importancefactors=[md.results.dakota.importancefactors md.results.dakota.dresp_out(i).mean];
++	md.results.dakota.moments=[md.results.dakota.moments md.results.dakota.dresp_out(i).mean];
+ end
+ for i=1:8,
+-	md.results.dakota.importancefactors=[md.results.dakota.importancefactors md.results.dakota.dresp_out(i).stddev];
++	md.results.dakota.moments=[md.results.dakota.moments md.results.dakota.dresp_out(i).stddev];
+ end
+-field_names     ={'importancefactors'};
++field_names     ={'moments'};
+ field_tolerances={1e-11};
+ field_values={...
+-         md.results.dakota.importancefactors,...
++         md.results.dakota.moments,...
+ 	};
Index: /issm/oecreview/Archive/14064-14311/ISSM-14270-14271.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14270-14271.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14270-14271.diff	(revision 14312)
@@ -0,0 +1,20 @@
+Index: ../trunk-jpl/externalpackages/dakota/ParallelLibrary.C.5.2.patch
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/ParallelLibrary.C.5.2.patch	(revision 14270)
++++ ../trunk-jpl/externalpackages/dakota/ParallelLibrary.C.5.2.patch	(revision 14271)
+@@ -20,12 +20,12 @@
+ > 
+ >   // do not initialize MPI.  Get worldRank/worldSize if available
+ >   ParallelLevel pl;
+-> #ifdef HAVE_MPI // mpi available, we still don't want to run in parallel for  Dakota!
++> #ifdef HAVE_MPI // mpi available, we still don't want to run in parallel for Dakota!
+ >   pl.serverIntraComm = MPI_COMM_NULL;
+->   Cout << "Running Dakota MPI executable in serial mode on CPU 0 for ISSM.";
++>   Cout << "Running Dakota 5.2 MPI executable in serial mode on CPU 0 for ISSM.";
+ > #else // mpi not available
+ >   pl.serverIntraComm = MPI_COMM_NULL;
+->   Cout << "Running Dakota serial executable in serial mode for ISSM.\n";
++>   Cout << "Running Dakota 5.2 serial executable in serial mode for ISSM.\n";
+ > #endif // HAVE_MPI
+ > 
+ >   parallelLevels.push_back(pl);
Index: /issm/oecreview/Archive/14064-14311/ISSM-14271-14272.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14271-14272.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14271-14272.diff	(revision 14312)
@@ -0,0 +1,1924 @@
+Index: ../trunk-jpl/externalpackages/dakota/install-macosx64.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/install-macosx64.sh	(revision 14271)
++++ ../trunk-jpl/externalpackages/dakota/install-macosx64.sh	(revision 14272)
+@@ -1,97 +0,0 @@
+-#!/bin/bash
+-set -eu
+-
+-#Some cleanup
+-rm -rf Dakota
+-rm -rf src 
+-rm -rf install 
+-mkdir src install 
+-
+-#Download from ISSM server
+-$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/Dakota_4_3.src.tar.gz' 'Dakota_4_3.src.tar.gz'
+-
+-#Untar 
+-tar -zxvf  Dakota_4_3.src.tar.gz
+-
+-#Move Dakota to src directory
+-mv Dakota/* src
+-rm -rf Dakota
+-
+-#Apply patches
+-patch src/src/ParallelLibrary.C ./ParallelLibrary.C.patch
+-patch src/src/ParallelLibrary.H ./ParallelLibrary.H.patch
+-patch src/src/NIDRProblemDescDB.C ./NIDRProblemDescDB.C.patch
+-patch src/src/NonDSampling.C ./NonDSampling.C.patch
+-patch src/src/NonDLocalReliability.C ./NonDLocalReliability.C.patch
+-patch src/src/NonDUnilevelRBDO.C ./NonDUnilevelRBDO.C.patch    #  source not even used?
+-#patch -R src/packages/Pecos/src/LHSDriver.cpp ./LHSDriver.cpp.patch
+-
+-#Configure dakota
+-cd src
+-./configure \
+-   --prefix="$ISSM_DIR/externalpackages/dakota/install" \
+-   --without-graphics  \
+-   --with-pic \
+-   --disable-mpi \
+-   --with-blas="-L$ISSM_DIR/externalpackages/petsc/install/lib -lfblas " \
+-   --with-lapack="-L$ISSM_DIR/externalpackages/petsc/install/lib -lflapack "
+-cd ..
+-
+-#Before compiling, if running on 64 bits, we need to active fPIC compilation. Some packages 
+-#do not register -fPIC in Dakota, which is a problem. Edit the faulty Makefiles and add the -fPIC 
+-#flag to the compilation.
+-cat ./src/methods/NCSUOpt/Makefile | sed 's/FFLAGS = -g -O2/FFLAGS = -g -O2 -fPIC/g' >  temp
+-mv temp ./src/methods/NCSUOpt/Makefile
+-
+-cat ./src/methods/acro/packages/pebbl/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
+-mv temp ./src/methods/acro/packages/pebbl/src/Makefile
+-
+-cat ./src/methods/hopspack/src-nappspack/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2 -fPIC/g' > temp
+-mv temp ./src/methods/hopspack/src-nappspack/Makefile
+-
+-cat ./src/methods/hopspack/src-cddlib/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
+-mv temp  ./src/methods/hopspack/src-cddlib/Makefile 
+-
+-cat ./src/methods/hopspack/src-shared/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
+-mv temp  ./src/methods/hopspack/src-shared/Makefile 
+-
+-cat ./src/methods/hopspack/src-shared/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2 -fPIC/g' > temp
+-mv temp  ./src/methods/hopspack/src-shared/Makefile 
+-
+-cat ./src/methods/hopspack/src-conveyor/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2 -fPIC/g' > temp
+-mv temp  ./src/methods/hopspack/src-conveyor/Makefile 
+-
+-cat ./src/methods/hopspack/src-appspack/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2 -fPIC/g' > temp
+-mv temp ./src/methods/hopspack/src-appspack/Makefile 
+-
+-cat ./src/methods/acro/packages/colin/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
+-mv temp ./src/methods/acro/packages/colin/src/Makefile
+-
+-cat ./src/methods/acro/packages/coliny/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
+-mv temp ./src/methods/acro/packages/coliny/src/Makefile
+-
+-cat ./src/methods/acro/packages/tpl/3po/Makefile | sed 's/CFLAGS = -O2/CFLAGS = -O2 -fPIC/g' > temp
+-mv temp  ./src/methods/acro/packages/tpl/3po/Makefile 
+-
+-cat ./src/methods/acro/packages/tpl/3po/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CFLAGS = -O2 -fpermissive -fPIC/g' > temp
+-mv temp  ./src/methods/acro/packages/tpl/3po/Makefile 
+-
+-cat ./src/packages/ampl/Makefile | sed 's/CFLAGS = -g -O2 -D_NONSTD_SOURCE/CFLAGS = -g -O2 -fPIC/g' > temp
+-mv temp  ./src/packages/ampl/Makefile 
+-
+-#Compile and install dakota
+-cd src 
+-if [ $# -eq 0 ];
+-then
+-	make
+-	make install
+-else
+-	make -j $1
+-	make -j $1 install
+-fi
+-cd ..
+-
+-#Weird behaviour of Dakota: libamplsolver.a and amplsolver.a are not the same thing!
+-cd install/lib
+-mv libamplsolver.a libamplsolver.a.bak
+-ln -s ../../src/packages/ampl/amplsolver.a ./libamplsolver.a
+Index: ../trunk-jpl/externalpackages/dakota/LHSDriver.cpp.patch
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/LHSDriver.cpp.patch	(revision 14271)
++++ ../trunk-jpl/externalpackages/dakota/LHSDriver.cpp.patch	(revision 14272)
+@@ -1,8 +0,0 @@
+-766c766
+-<   /*char output_string[32], message_string[32], title_string[32],
+----
+->   char output_string[32], message_string[32], title_string[32],
+-802c802
+-<   check_error(err_code, "lhs_files");*/
+----
+->   check_error(err_code, "lhs_files");
+Index: ../trunk-jpl/externalpackages/dakota/NonDLocalReliability.C.patch
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/NonDLocalReliability.C.patch	(revision 14271)
++++ ../trunk-jpl/externalpackages/dakota/NonDLocalReliability.C.patch	(revision 14272)
+@@ -1,7 +0,0 @@
+-2276a2277
+-> 	  // add sensitivity output to importance factors (jes, 8/06/10)
+-2280c2281,2282
+-< 	    << impFactor[i][j] << '\n';
+----
+-> 	    << impFactor[i][j] << "  Sensitivity = " << setw(write_precision+7)
+-> 	    << fnGradsMeanX(i, j) << '\n';
+Index: ../trunk-jpl/externalpackages/dakota/NonDUnilevelRBDO.C.patch
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/NonDUnilevelRBDO.C.patch	(revision 14271)
++++ ../trunk-jpl/externalpackages/dakota/NonDUnilevelRBDO.C.patch	(revision 14272)
+@@ -1,10 +0,0 @@
+-1052,1053c1052,1057
+-< 	  s << "  Importance Factor for variable " << setw(11)
+-< 	    << uv_labels[j].data() << " = " << impFactor[i][j] << '\n';
+----
+-> 	  // add sensitivity output to importance factors (jes, 8/06/10)
+-> 	  s << "  Importance Factor for variable " << setiosflags(ios::left)
+-> 	    << setw(11) << uv_labels[j].data() << " = "
+-> 	    << resetiosflags(ios::adjustfield) << setw(write_precision+7)
+-> 	    << impFactor[i][j] << "  Sensitivity = " << setw(write_precision+7)
+-> 	    << fnGradsMeanX(i, j) << '\n';
+Index: ../trunk-jpl/externalpackages/dakota/install-linux64-cloud.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/install-linux64-cloud.sh	(revision 14271)
++++ ../trunk-jpl/externalpackages/dakota/install-linux64-cloud.sh	(revision 14272)
+@@ -1,97 +0,0 @@
+-#!/bin/bash
+-set -eu
+-
+-#Some cleanup
+-rm -rf Dakota
+-rm -rf src 
+-rm -rf install 
+-mkdir src install 
+-
+-#Download from ISSM server
+-$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/Dakota_4_3.src.tar.gz' 'Dakota_4_3.src.tar.gz'
+-
+-#Untar 
+-tar -zxvf  Dakota_4_3.src.tar.gz
+-
+-#Move Dakota to src directory
+-mv Dakota/* src
+-rm -rf Dakota
+-
+-#Apply patches
+-patch src/src/ParallelLibrary.C ./ParallelLibrary.C.patch
+-patch src/src/ParallelLibrary.H ./ParallelLibrary.H.patch
+-patch src/src/NIDRProblemDescDB.C ./NIDRProblemDescDB.C.patch
+-patch src/src/NonDSampling.C ./NonDSampling.C.patch
+-patch src/src/NonDLocalReliability.C ./NonDLocalReliability.C.patch
+-patch src/src/NonDUnilevelRBDO.C ./NonDUnilevelRBDO.C.patch    #  source not even used?
+-#patch -R src/packages/Pecos/src/LHSDriver.cpp ./LHSDriver.cpp.patch
+-
+-#Configure dakota
+-cd src
+-./configure \
+-	--prefix="$ISSM_DIR/externalpackages/dakota/install" \
+-	--without-graphics  \
+-	--with-pic \
+-	--disable-mpi \
+-	--with-blas=/usr/lib/libblas.so \
+-	--with-lapack=/usr/lib/liblapack.so
+-cd ..
+-
+-#Before compiling, if running on 64 bits, we need to active fPIC compilation. Some packages 
+-#do not register -fPIC in Dakota, which is a problem. Edit the faulty Makefiles and add the -fPIC 
+-#flag to the compilation.
+-cat ./src/methods/NCSUOpt/Makefile | sed 's/FFLAGS = -g -O2/FFLAGS = -g -O2 -fPIC/g' >  temp
+-mv temp ./src/methods/NCSUOpt/Makefile
+-
+-cat ./src/methods/acro/packages/pebbl/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
+-mv temp ./src/methods/acro/packages/pebbl/src/Makefile
+-
+-cat ./src/methods/hopspack/src-nappspack/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
+-mv temp ./src/methods/hopspack/src-nappspack/Makefile
+-
+-cat ./src/methods/hopspack/src-cddlib/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
+-mv temp  ./src/methods/hopspack/src-cddlib/Makefile 
+-
+-cat ./src/methods/hopspack/src-shared/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
+-mv temp  ./src/methods/hopspack/src-shared/Makefile 
+-
+-cat ./src/methods/hopspack/src-shared/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
+-mv temp  ./src/methods/hopspack/src-shared/Makefile 
+-
+-cat ./src/methods/hopspack/src-conveyor/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2 -fPIC/g' > temp
+-mv temp  ./src/methods/hopspack/src-conveyor/Makefile 
+-
+-cat ./src/methods/hopspack/src-appspack/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
+-mv temp ./src/methods/hopspack/src-appspack/Makefile 
+-
+-cat ./src/methods/acro/packages/colin/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
+-mv temp ./src/methods/acro/packages/colin/src/Makefile
+-
+-cat ./src/methods/acro/packages/coliny/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
+-mv temp ./src/methods/acro/packages/coliny/src/Makefile
+-
+-cat ./src/methods/acro/packages/tpl/3po/Makefile | sed 's/CFLAGS = -O2/CFLAGS = -O2 -fPIC/g' > temp
+-mv temp  ./src/methods/acro/packages/tpl/3po/Makefile 
+-
+-cat ./src/methods/acro/packages/tpl/3po/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CFLAGS = -O2 -fpermissive -fPIC/g' > temp
+-mv temp  ./src/methods/acro/packages/tpl/3po/Makefile 
+-
+-cat ./src/packages/ampl/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
+-mv temp  ./src/packages/ampl/Makefile 
+-
+-#Compile and install dakota
+-cd src 
+-if [ $# -eq 0 ];
+-then
+-	make
+-	make install
+-else
+-	make -j $1
+-	make -j $1 install
+-fi
+-cd ..
+-
+-#Weird behaviour of Dakota: libamplsolver.a and amplsolver.a are not the same thing!
+-cd install/lib
+-mv libamplsolver.a libamplsolver.a.bak
+-ln -s ../../src/packages/ampl/amplsolver.a ./libamplsolver.a
+Index: ../trunk-jpl/externalpackages/dakota/install-discover.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/install-discover.sh	(revision 14271)
++++ ../trunk-jpl/externalpackages/dakota/install-discover.sh	(revision 14272)
+@@ -1,97 +0,0 @@
+-#!/bin/bash
+-set -eu
+-
+-#Some cleanup
+-rm -rf Dakota
+-rm -rf src
+-rm -rf install
+-mkdir src install
+-
+-#Download from ISSM server
+-$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/Dakota_4_3.src.tar.gz' 'Dakota_4_3.src.tar.gz'
+-
+-#Untar 
+-tar -zxvf  Dakota_4_3.src.tar.gz
+-
+-#Move Dakota to src directory
+-mv Dakota/* src
+-rm -rf Dakota
+-
+-#Apply patches
+-patch src/src/ParallelLibrary.C ./ParallelLibrary.C.patch
+-patch src/src/ParallelLibrary.H ./ParallelLibrary.H.patch
+-patch src/src/NIDRProblemDescDB.C ./NIDRProblemDescDB.C.patch
+-patch src/src/NonDSampling.C ./NonDSampling.C.patch
+-patch src/src/NonDLocalReliability.C ./NonDLocalReliability.C.patch
+-patch src/src/NonDUnilevelRBDO.C ./NonDUnilevelRBDO.C.patch    #  source not even used?
+-#patch -R src/packages/Pecos/src/LHSDriver.cpp ./LHSDriver.cpp.patch
+-
+-#Configure dakota
+-cd src
+-./configure \
+---prefix="$ISSM_DIR/externalpackages/dakota/install/" \
+---without-graphics  \
+---with-pic \
+---disable-mpi \
+---with-blas="-L/usr/local/intel/mkl/10.1.2.024/lib/64 -lmkl_lapack -lmkl -lguide -lpthread" \
+---with-lapack="-L/usr/local/intel/mkl/10.1.2.024/lib/64 -lmkl_lapack -lmkl -lguide -lpthread"
+-cd ..
+-
+-#Before compiling, if running on 64 bits, we need to active fPIC compilation. Some packages 
+-#do not register -fPIC in Dakota, which is a problem. Edit the faulty Makefiles and add the -fPIC 
+-#flag to the compilation.
+-cat ./src/methods/NCSUOpt/Makefile | sed 's/FFLAGS = -g -O2/FFLAGS = -g -O2 -fPIC/g' >  temp
+-mv temp ./src/methods/NCSUOpt/Makefile
+-
+-cat ./src/methods/acro/packages/pebbl/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
+-mv temp ./src/methods/acro/packages/pebbl/src/Makefile
+-
+-cat ./src/methods/hopspack/src-nappspack/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
+-mv temp ./src/methods/hopspack/src-nappspack/Makefile
+-
+-cat ./src/methods/hopspack/src-cddlib/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
+-mv temp  ./src/methods/hopspack/src-cddlib/Makefile
+-
+-cat ./src/methods/hopspack/src-shared/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
+-mv temp  ./src/methods/hopspack/src-shared/Makefile
+-
+-cat ./src/methods/hopspack/src-shared/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
+-mv temp  ./src/methods/hopspack/src-shared/Makefile
+-
+-cat ./src/methods/hopspack/src-conveyor/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2 -fPIC/g' > temp
+-mv temp  ./src/methods/hopspack/src-conveyor/Makefile
+-
+-cat ./src/methods/hopspack/src-appspack/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
+-mv temp ./src/methods/hopspack/src-appspack/Makefile
+-
+-cat ./src/methods/acro/packages/colin/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
+-mv temp ./src/methods/acro/packages/colin/src/Makefile
+-
+-cat ./src/methods/acro/packages/coliny/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
+-mv temp ./src/methods/acro/packages/coliny/src/Makefile
+-
+-cat ./src/methods/acro/packages/tpl/3po/Makefile | sed 's/CFLAGS = -O2/CFLAGS = -O2 -fPIC/g' > temp
+-mv temp  ./src/methods/acro/packages/tpl/3po/Makefile
+-
+-cat ./src/methods/acro/packages/tpl/3po/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CFLAGS = -O2 -fpermissive -fPIC/g' > temp
+-mv temp  ./src/methods/acro/packages/tpl/3po/Makefile
+-
+-cat ./src/packages/ampl/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
+-mv temp  ./src/packages/ampl/Makefile
+-
+-#Compile and install dakota
+-cd src
+-if [ $# -eq 0 ];
+-then
+-	make
+-	make install
+-else
+-	make -j $1
+-	make -j $1 install
+-fi
+-cd ..
+-
+-#Weird behaviour of Dakota: libamplsolver.a and amplsolver.a are not the same thing!
+-cd install/lib
+-mv libamplsolver.a libamplsolver.a.bak
+-ln -s ../../src/packages/ampl/amplsolver.a ./libamplsolver.a
+Index: ../trunk-jpl/externalpackages/dakota/ParallelLibrary.C.patch
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/ParallelLibrary.C.patch	(revision 14271)
++++ ../trunk-jpl/externalpackages/dakota/ParallelLibrary.C.patch	(revision 14272)
+@@ -1,34 +0,0 @@
+-134a135
+->   initialized=0; //we run serially all the time!
+-165a167,197
+-> /** This constructor is provided for the Issm software, to run serial 
+->  * Dakota in a parallel MPI ring: */
+-> ParallelLibrary::ParallelLibrary(char* serial_mode): worldRank(0), worldSize(1),
+->   mpirunFlag(false), ownMPIFlag(false), dryRunFlag(false), dummyFlag(false),
+->   stdOutputFlag(false), stdErrorFlag(false), startClock(0),
+->   stdOutputFilename(NULL), stdErrorFilename(NULL), readRestartFilename(NULL),
+->   writeRestartFilename(NULL), stopRestartEvals(0),
+->   currPLIter(parallelLevels.end()), currPCIter(parallelConfigurations.end())
+-> {
+->   startClock   = clock();
+-> #ifdef DAKOTA_UTILIB
+->   utilib::exception_mngr::set_mode(utilib::exception_mngr::Abort);
+->   startCPUTime = CPUSeconds();       // see utilib/src/sys/seconds.cpp
+->   startWCTime  = WallClockSeconds(); // see utilib/src/sys/seconds.cpp
+-> #endif // DAKOTA_UTILIB
+-> 
+->   // do not initialize MPI.  Get worldRank/worldSize if available
+->   ParallelLevel pl;
+-> #ifdef HAVE_MPI // mpi available, we still don't want to run in parallel for  Dakota!
+->   pl.serverIntraComm = MPI_COMM_NULL;
+->   Cout << "Running Dakota in serial mode on CPU 0, inside an MPI ring.";
+-> #else // mpi not available
+->   pl.serverIntraComm = MPI_COMM_NULL;
+->   Cout << "Running Dakota in serial mode.\n";
+-> #endif // HAVE_MPI
+-> 
+->   parallelLevels.insert(pl);
+->   currPLIter = parallelLevels.begin();
+->   increment_parallel_configuration();
+-> }
+-> 
+Index: ../trunk-jpl/externalpackages/dakota/NIDRProblemDescDB.C.patch
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/NIDRProblemDescDB.C.patch	(revision 14271)
++++ ../trunk-jpl/externalpackages/dakota/NIDRProblemDescDB.C.patch	(revision 14272)
+@@ -1,4 +0,0 @@
+-95a96,98
+->   
+->   //close the input file
+->   fclose(nidrin);
+Index: ../trunk-jpl/externalpackages/dakota/install-pleiades.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/install-pleiades.sh	(revision 14271)
++++ ../trunk-jpl/externalpackages/dakota/install-pleiades.sh	(revision 14272)
+@@ -1,97 +0,0 @@
+-#!/bin/bash
+-set -eu
+-
+-#Some cleanup
+-rm -rf Dakota
+-rm -rf src
+-rm -rf install
+-mkdir src install
+-
+-#Download from ISSM server
+-$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/Dakota_4_3.src.tar.gz' 'Dakota_4_3.src.tar.gz'
+-
+-#Untar 
+-tar -zxvf  Dakota_4_3.src.tar.gz
+-
+-#Move Dakota to src directory
+-mv Dakota/* src
+-rm -rf Dakota
+-
+-#Apply patches
+-patch src/src/ParallelLibrary.C ./ParallelLibrary.C.patch
+-patch src/src/ParallelLibrary.H ./ParallelLibrary.H.patch
+-patch src/src/NIDRProblemDescDB.C ./NIDRProblemDescDB.C.patch
+-patch src/src/NonDSampling.C ./NonDSampling.C.patch
+-patch src/src/NonDLocalReliability.C ./NonDLocalReliability.C.patch
+-patch src/src/NonDUnilevelRBDO.C ./NonDUnilevelRBDO.C.patch    #  source not even used?
+-#patch -R src/packages/Pecos/src/LHSDriver.cpp ./LHSDriver.cpp.patch
+-
+-#Configure dakota
+-cd src
+-./configure \
+---prefix="$ISSM_DIR/externalpackages/dakota/install/" \
+---without-graphics  \
+---with-pic \
+---disable-mpi \
+---with-blas="-L/nasa/intel/mkl/10.0.011/lib/64/ -lmkl -lmkl_lapack -liomp5 -lpthread" \
+---with-lapack="-L/nasa/intel/mkl/10.0.011/lib/64/ -lmkl -lmkl_lapack -liomp5 -lpthread"
+-cd ..
+-
+-#Before compiling, if running on 64 bits, we need to active fPIC compilation. Some packages 
+-#do not register -fPIC in Dakota, which is a problem. Edit the faulty Makefiles and add the -fPIC 
+-#flag to the compilation.
+-cat ./src/methods/NCSUOpt/Makefile | sed 's/FFLAGS = -g -O2/FFLAGS = -g -O2 -fPIC/g' >  temp
+-mv temp ./src/methods/NCSUOpt/Makefile
+-
+-cat ./src/methods/acro/packages/pebbl/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
+-mv temp ./src/methods/acro/packages/pebbl/src/Makefile
+-
+-cat ./src/methods/hopspack/src-nappspack/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
+-mv temp ./src/methods/hopspack/src-nappspack/Makefile
+-
+-cat ./src/methods/hopspack/src-cddlib/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
+-mv temp  ./src/methods/hopspack/src-cddlib/Makefile
+-
+-cat ./src/methods/hopspack/src-shared/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
+-mv temp  ./src/methods/hopspack/src-shared/Makefile
+-
+-cat ./src/methods/hopspack/src-shared/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
+-mv temp  ./src/methods/hopspack/src-shared/Makefile
+-
+-cat ./src/methods/hopspack/src-conveyor/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2 -fPIC/g' > temp
+-mv temp  ./src/methods/hopspack/src-conveyor/Makefile
+-
+-cat ./src/methods/hopspack/src-appspack/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
+-mv temp ./src/methods/hopspack/src-appspack/Makefile
+-
+-cat ./src/methods/acro/packages/colin/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
+-mv temp ./src/methods/acro/packages/colin/src/Makefile
+-
+-cat ./src/methods/acro/packages/coliny/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
+-mv temp ./src/methods/acro/packages/coliny/src/Makefile
+-
+-cat ./src/methods/acro/packages/tpl/3po/Makefile | sed 's/CFLAGS = -O2/CFLAGS = -O2 -fPIC/g' > temp
+-mv temp  ./src/methods/acro/packages/tpl/3po/Makefile
+-
+-cat ./src/methods/acro/packages/tpl/3po/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CFLAGS = -O2 -fpermissive -fPIC/g' > temp
+-mv temp  ./src/methods/acro/packages/tpl/3po/Makefile
+-
+-cat ./src/packages/ampl/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
+-mv temp  ./src/packages/ampl/Makefile
+-
+-#Compile and install dakota
+-cd src
+-if [ $# -eq 0 ];
+-then
+-	make
+-	make install
+-else
+-	make -j $1
+-	make -j $1 install
+-fi
+-cd ..
+-
+-#Weird behaviour of Dakota: libamplsolver.a and amplsolver.a are not the same thing!
+-cd install/lib
+-mv libamplsolver.a libamplsolver.a.bak
+-ln -s ../../src/packages/ampl/amplsolver.a ./libamplsolver.a
+Index: ../trunk-jpl/externalpackages/dakota/install-pleiades-petsc3.3.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/install-pleiades-petsc3.3.sh	(revision 14271)
++++ ../trunk-jpl/externalpackages/dakota/install-pleiades-petsc3.3.sh	(revision 14272)
+@@ -1,103 +0,0 @@
+-#!/bin/bash
+-set -eu
+-
+-#Some cleanup
+-rm -rf Dakota
+-rm -rf src
+-rm -rf install
+-mkdir src install
+-
+-#Download from ISSM server
+-$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/Dakota_4_3.src.tar.gz' 'Dakota_4_3.src.tar.gz'
+-
+-#Untar 
+-tar -zxvf  Dakota_4_3.src.tar.gz
+-
+-#Move Dakota to src directory
+-mv Dakota/* src
+-rm -rf Dakota
+-
+-#Apply patches
+-patch src/src/ParallelLibrary.C ./ParallelLibrary.C.patch
+-patch src/src/ParallelLibrary.H ./ParallelLibrary.H.patch
+-patch src/src/NIDRProblemDescDB.C ./NIDRProblemDescDB.C.patch
+-patch src/src/NonDSampling.C ./NonDSampling.C.patch
+-patch src/src/NonDLocalReliability.C ./NonDLocalReliability.C.patch
+-patch src/src/NonDUnilevelRBDO.C ./NonDUnilevelRBDO.C.patch    #  source not even used?
+-#patch -R src/packages/Pecos/src/LHSDriver.cpp ./LHSDriver.cpp.patch
+-
+-#Configure dakota
+-cd src
+-./configure \
+---prefix="$ISSM_DIR/externalpackages/dakota/install/" \
+---without-graphics  \
+---with-pic \
+---disable-mpi \
+---with-blas="-L$ISSM_DIR/externalpackages/petsc/install/lib -lfblas " \
+---with-lapack="-L$ISSM_DIR/externalpackages/petsc/install/lib -lflapack "
+-
+-#--with-blas="-L/nasa/intel/mkl/10.0.011/lib/64/ -lmkl -lmkl_lapack -liomp5 -lpthread" \
+-#--with-lapack="-L/nasa/intel/mkl/10.0.011/lib/64/ -lmkl -lmkl_lapack -liomp5 -lpthread"
+-#--with-blas="-L/nasa/intel/Compiler/11.1/046/mkl/lib/em64t/ -lmkl_intel_lp64 -lmkl_lapack" \
+-#--with-lapack="-L/nasa/intel/Compiler/11.1/046/mkl/lib/em64t/ -lmkl_intel_lp64 -lmkl_lapack"
+-
+-cd ..
+-
+-#Before compiling, if running on 64 bits, we need to active fPIC compilation. Some packages 
+-#do not register -fPIC in Dakota, which is a problem. Edit the faulty Makefiles and add the -fPIC 
+-#flag to the compilation.
+-cat ./src/methods/NCSUOpt/Makefile | sed 's/FFLAGS = -g -O2/FFLAGS = -g -O2 -fPIC/g' >  temp
+-mv temp ./src/methods/NCSUOpt/Makefile
+-
+-cat ./src/methods/acro/packages/pebbl/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
+-mv temp ./src/methods/acro/packages/pebbl/src/Makefile
+-
+-cat ./src/methods/hopspack/src-nappspack/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
+-mv temp ./src/methods/hopspack/src-nappspack/Makefile
+-
+-cat ./src/methods/hopspack/src-cddlib/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
+-mv temp  ./src/methods/hopspack/src-cddlib/Makefile
+-
+-cat ./src/methods/hopspack/src-shared/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
+-mv temp  ./src/methods/hopspack/src-shared/Makefile
+-
+-cat ./src/methods/hopspack/src-shared/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
+-mv temp  ./src/methods/hopspack/src-shared/Makefile
+-
+-cat ./src/methods/hopspack/src-conveyor/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2 -fPIC/g' > temp
+-mv temp  ./src/methods/hopspack/src-conveyor/Makefile
+-
+-cat ./src/methods/hopspack/src-appspack/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
+-mv temp ./src/methods/hopspack/src-appspack/Makefile
+-
+-cat ./src/methods/acro/packages/colin/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
+-mv temp ./src/methods/acro/packages/colin/src/Makefile
+-
+-cat ./src/methods/acro/packages/coliny/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
+-mv temp ./src/methods/acro/packages/coliny/src/Makefile
+-
+-cat ./src/methods/acro/packages/tpl/3po/Makefile | sed 's/CFLAGS = -O2/CFLAGS = -O2 -fPIC/g' > temp
+-mv temp  ./src/methods/acro/packages/tpl/3po/Makefile
+-
+-cat ./src/methods/acro/packages/tpl/3po/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CFLAGS = -O2 -fpermissive -fPIC/g' > temp
+-mv temp  ./src/methods/acro/packages/tpl/3po/Makefile
+-
+-cat ./src/packages/ampl/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
+-mv temp  ./src/packages/ampl/Makefile
+-
+-#Compile and install dakota
+-cd src
+-if [ $# -eq 0 ];
+-then
+-	make
+-	make install
+-else
+-	make -j $1
+-	make -j $1 install
+-fi
+-cd ..
+-
+-#Weird behaviour of Dakota: libamplsolver.a and amplsolver.a are not the same thing!
+-cd install/lib
+-mv libamplsolver.a libamplsolver.a.bak
+-ln -s ../../src/packages/ampl/amplsolver.a ./libamplsolver.a
+Index: ../trunk-jpl/externalpackages/dakota/ParallelLibrary.H.patch
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/ParallelLibrary.H.patch	(revision 14271)
++++ ../trunk-jpl/externalpackages/dakota/ParallelLibrary.H.patch	(revision 14272)
+@@ -1,3 +0,0 @@
+-346a347,348
+->   /// library mode constructor, serial mode
+->   ParallelLibrary(char*  serial_mode);
+Index: ../trunk-jpl/externalpackages/dakota/NonDSampling.C.patch
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/NonDSampling.C.patch	(revision 14271)
++++ ../trunk-jpl/externalpackages/dakota/NonDSampling.C.patch	(revision 14272)
+@@ -1,15 +0,0 @@
+-656a657,658
+-> 
+-> 
+-659a662,663
+->    
+-> 	return; //don't compute for now, too expensive.
+-705c709
+-<   //calculate simple rank correlation coeff
+----
+->   //calculate simple correlation coeff
+-710a715
+-> 
+-1071a1077,1078
+-> 
+-> 	return; //don't output for now.
+Index: ../trunk-jpl/externalpackages/dakota/install-altix64-cosmos.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/install-altix64-cosmos.sh	(revision 14271)
++++ ../trunk-jpl/externalpackages/dakota/install-altix64-cosmos.sh	(revision 14272)
+@@ -1,97 +0,0 @@
+-#!/bin/bash
+-set -eu
+-
+-#Some cleanup
+-rm -rf Dakota
+-rm -rf src 
+-rm -rf install 
+-mkdir src install 
+-
+-#Download from ISSM server
+-$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/Dakota_4_3.src.tar.gz' 'Dakota_4_3.src.tar.gz'
+-
+-#Untar 
+-tar -zxvf  Dakota_4_3.src.tar.gz
+-
+-#Move Dakota to src directory
+-mv Dakota/* src
+-rm -rf Dakota
+-
+-#Apply patches
+-patch src/src/ParallelLibrary.C ./ParallelLibrary.C.patch
+-patch src/src/ParallelLibrary.H ./ParallelLibrary.H.patch
+-patch src/src/NIDRProblemDescDB.C ./NIDRProblemDescDB.C.patch
+-patch src/src/NonDSampling.C ./NonDSampling.C.patch
+-patch src/src/NonDLocalReliability.C ./NonDLocalReliability.C.patch
+-patch src/src/NonDUnilevelRBDO.C ./NonDUnilevelRBDO.C.patch    #  source not even used?
+-#patch -R src/packages/Pecos/src/LHSDriver.cpp ./LHSDriver.cpp.patch
+-
+-#Configure dakota
+-cd src
+-./configure \ 
+-	--prefix="$ISSM_DIR/externalpackages/dakota/install" \
+-	--without-graphics  \
+-	--with-pic \
+-	--disable-mpi \
+-	--with-blas=/opt/intel/mkl/9.1.023/lib/64/libmkl.so \
+-	--with-lapack=/opt/intel/mkl/9.1.023/lib/64/libmkl_lapack.so 
+-cd ..
+-
+-#Before compiling, if running on 64 bits, we need to active fPIC compilation. Some packages 
+-#do not register -fPIC in Dakota, which is a problem. Edit the faulty Makefiles and add the -fPIC 
+-#flag to the compilation.
+-cat ./src/methods/NCSUOpt/Makefile | sed 's/FFLAGS = -g -O2/FFLAGS = -g -O2 -fPIC/g' >  temp
+-mv temp ./src/methods/NCSUOpt/Makefile
+-
+-cat ./src/methods/acro/packages/pebbl/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
+-mv temp ./src/methods/acro/packages/pebbl/src/Makefile
+-
+-cat ./src/methods/hopspack/src-nappspack/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
+-mv temp ./src/methods/hopspack/src-nappspack/Makefile
+-
+-cat ./src/methods/hopspack/src-cddlib/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
+-mv temp  ./src/methods/hopspack/src-cddlib/Makefile 
+-
+-cat ./src/methods/hopspack/src-shared/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
+-mv temp  ./src/methods/hopspack/src-shared/Makefile 
+-
+-cat ./src/methods/hopspack/src-shared/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
+-mv temp  ./src/methods/hopspack/src-shared/Makefile 
+-
+-cat ./src/methods/hopspack/src-conveyor/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2 -fPIC/g' > temp
+-mv temp  ./src/methods/hopspack/src-conveyor/Makefile 
+-
+-cat ./src/methods/hopspack/src-appspack/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
+-mv temp ./src/methods/hopspack/src-appspack/Makefile 
+-
+-cat ./src/methods/acro/packages/colin/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
+-mv temp ./src/methods/acro/packages/colin/src/Makefile
+-
+-cat ./src/methods/acro/packages/coliny/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
+-mv temp ./src/methods/acro/packages/coliny/src/Makefile
+-
+-cat ./src/methods/acro/packages/tpl/3po/Makefile | sed 's/CFLAGS = -O2/CFLAGS = -O2 -fPIC/g' > temp
+-mv temp  ./src/methods/acro/packages/tpl/3po/Makefile 
+-
+-cat ./src/methods/acro/packages/tpl/3po/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CFLAGS = -O2 -fpermissive -fPIC/g' > temp
+-mv temp  ./src/methods/acro/packages/tpl/3po/Makefile 
+-
+-cat ./src/packages/ampl/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
+-mv temp  ./src/packages/ampl/Makefile 
+-
+-#Compile and install dakota
+-cd src 
+-if [ $# -eq 0 ];
+-then
+-	make
+-	make install
+-else
+-	make -j $1
+-	make -j $1 install
+-fi
+-cd ..
+-
+-#Weird behaviour of Dakota: libamplsolver.a and amplsolver.a are not the same thing!
+-cd install/lib
+-mv libamplsolver.a libamplsolver.a.bak
+-ln -s ../../src/packages/ampl/amplsolver.a ./libamplsolver.a
+Index: ../trunk-jpl/externalpackages/dakota/install-linux64-astrid.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/install-linux64-astrid.sh	(revision 14271)
++++ ../trunk-jpl/externalpackages/dakota/install-linux64-astrid.sh	(revision 14272)
+@@ -1,97 +0,0 @@
+-#!/bin/bash
+-set -eu
+-
+-#Some cleanup
+-rm -rf Dakota
+-rm -rf src 
+-rm -rf install 
+-mkdir src install 
+-
+-#Download from ISSM server
+-$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/Dakota_4_3.src.tar.gz' 'Dakota_4_3.src.tar.gz'
+-
+-#Untar 
+-tar -zxvf  Dakota_4_3.src.tar.gz
+-
+-#Move Dakota to src directory
+-mv Dakota/* src
+-rm -rf Dakota
+-
+-#Apply patches
+-patch src/src/ParallelLibrary.C ./ParallelLibrary.C.patch
+-patch src/src/ParallelLibrary.H ./ParallelLibrary.H.patch
+-patch src/src/NIDRProblemDescDB.C ./NIDRProblemDescDB.C.patch
+-patch src/src/NonDSampling.C ./NonDSampling.C.patch
+-patch src/src/NonDLocalReliability.C ./NonDLocalReliability.C.patch
+-patch src/src/NonDUnilevelRBDO.C ./NonDUnilevelRBDO.C.patch    #  source not even used?
+-#patch -R src/packages/Pecos/src/LHSDriver.cpp ./LHSDriver.cpp.patch
+-
+-#Configure dakota
+-cd src
+-./configure \
+-	--prefix="$ISSM_DIR/externalpackages/dakota/install" \
+-	--without-graphics  \
+-	--with-pic \
+-	--disable-mpi \
+-	--with-blas=/usr/lib64/libblas.so.3.0.3 \
+-	--with-lapack=/usr/lib64/liblapack.so.3.0.3
+-cd ..
+-
+-#Before compiling, if running on 64 bits, we need to active fPIC compilation. Some packages 
+-#do not register -fPIC in Dakota, which is a problem. Edit the faulty Makefiles and add the -fPIC 
+-#flag to the compilation.
+-cat ./src/methods/NCSUOpt/Makefile | sed 's/FFLAGS = -g -O2/FFLAGS = -g -O2 -fPIC/g' >  temp
+-mv temp ./src/methods/NCSUOpt/Makefile
+-
+-cat ./src/methods/acro/packages/pebbl/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
+-mv temp ./src/methods/acro/packages/pebbl/src/Makefile
+-
+-cat ./src/methods/hopspack/src-nappspack/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
+-mv temp ./src/methods/hopspack/src-nappspack/Makefile
+-
+-cat ./src/methods/hopspack/src-cddlib/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
+-mv temp  ./src/methods/hopspack/src-cddlib/Makefile 
+-
+-cat ./src/methods/hopspack/src-shared/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
+-mv temp  ./src/methods/hopspack/src-shared/Makefile 
+-
+-cat ./src/methods/hopspack/src-shared/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
+-mv temp  ./src/methods/hopspack/src-shared/Makefile 
+-
+-cat ./src/methods/hopspack/src-conveyor/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2 -fPIC/g' > temp
+-mv temp  ./src/methods/hopspack/src-conveyor/Makefile 
+-
+-cat ./src/methods/hopspack/src-appspack/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
+-mv temp ./src/methods/hopspack/src-appspack/Makefile 
+-
+-cat ./src/methods/acro/packages/colin/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
+-mv temp ./src/methods/acro/packages/colin/src/Makefile
+-
+-cat ./src/methods/acro/packages/coliny/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
+-mv temp ./src/methods/acro/packages/coliny/src/Makefile
+-
+-cat ./src/methods/acro/packages/tpl/3po/Makefile | sed 's/CFLAGS = -O2/CFLAGS = -O2 -fPIC/g' > temp
+-mv temp  ./src/methods/acro/packages/tpl/3po/Makefile 
+-
+-cat ./src/methods/acro/packages/tpl/3po/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CFLAGS = -O2 -fpermissive -fPIC/g' > temp
+-mv temp  ./src/methods/acro/packages/tpl/3po/Makefile 
+-
+-cat ./src/packages/ampl/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
+-mv temp  ./src/packages/ampl/Makefile 
+-
+-#Compile and install dakota
+-cd src 
+-if [ $# -eq 0 ];
+-then
+-	make
+-	make install
+-else
+-	make -j $1
+-	make -j $1 install
+-fi
+-cd ..
+-
+-#Weird behaviour of Dakota: libamplsolver.a and amplsolver.a are not the same thing!
+-cd install/lib
+-mv libamplsolver.a libamplsolver.a.bak
+-ln -s ../../src/packages/ampl/amplsolver.a ./libamplsolver.a
+Index: ../trunk-jpl/externalpackages/dakota/install-linux64-murdo.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/install-linux64-murdo.sh	(revision 14271)
++++ ../trunk-jpl/externalpackages/dakota/install-linux64-murdo.sh	(revision 14272)
+@@ -1,97 +0,0 @@
+-#!/bin/bash
+-set -eu
+-
+-#Some cleanup
+-rm -rf Dakota
+-rm -rf src 
+-rm -rf install 
+-mkdir src install 
+-
+-#Download from ISSM server
+-$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/Dakota_4_3.src.tar.gz' 'Dakota_4_3.src.tar.gz'
+-
+-#Untar 
+-tar -zxvf  Dakota_4_3.src.tar.gz
+-
+-#Move Dakota to src directory
+-mv Dakota/* src
+-rm -rf Dakota
+-
+-#Apply patches
+-patch src/src/ParallelLibrary.C ./ParallelLibrary.C.patch
+-patch src/src/ParallelLibrary.H ./ParallelLibrary.H.patch
+-patch src/src/NIDRProblemDescDB.C ./NIDRProblemDescDB.C.patch
+-patch src/src/NonDSampling.C ./NonDSampling.C.patch
+-patch src/src/NonDLocalReliability.C ./NonDLocalReliability.C.patch
+-patch src/src/NonDUnilevelRBDO.C ./NonDUnilevelRBDO.C.patch    #  source not even used?
+-#patch -R src/packages/Pecos/src/LHSDriver.cpp ./LHSDriver.cpp.patch
+-
+-#Configure dakota
+-cd src
+-./configure \
+-	--prefix="$ISSM_DIR/externalpackages/dakota/install" \
+-	--without-graphics  \
+-	--with-pic \
+-	--disable-mpi \
+-	--with-blas=/usr/lib64/libblas.so.3.1.1 \
+-	--with-lapack=/usr/lib64/liblapack.so.3.1.1
+-cd ..
+-
+-#Before compiling, if running on 64 bits, we need to active fPIC compilation. Some packages 
+-#do not register -fPIC in Dakota, which is a problem. Edit the faulty Makefiles and add the -fPIC 
+-#flag to the compilation.
+-cat ./src/methods/NCSUOpt/Makefile | sed 's/FFLAGS = -g -O2/FFLAGS = -g -O2 -fPIC/g' >  temp
+-mv temp ./src/methods/NCSUOpt/Makefile
+-
+-cat ./src/methods/acro/packages/pebbl/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
+-mv temp ./src/methods/acro/packages/pebbl/src/Makefile
+-
+-cat ./src/methods/hopspack/src-nappspack/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
+-mv temp ./src/methods/hopspack/src-nappspack/Makefile
+-
+-cat ./src/methods/hopspack/src-cddlib/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
+-mv temp  ./src/methods/hopspack/src-cddlib/Makefile 
+-
+-cat ./src/methods/hopspack/src-shared/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
+-mv temp  ./src/methods/hopspack/src-shared/Makefile 
+-
+-cat ./src/methods/hopspack/src-shared/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
+-mv temp  ./src/methods/hopspack/src-shared/Makefile 
+-
+-cat ./src/methods/hopspack/src-conveyor/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2 -fPIC/g' > temp
+-mv temp  ./src/methods/hopspack/src-conveyor/Makefile 
+-
+-cat ./src/methods/hopspack/src-appspack/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
+-mv temp ./src/methods/hopspack/src-appspack/Makefile 
+-
+-cat ./src/methods/acro/packages/colin/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
+-mv temp ./src/methods/acro/packages/colin/src/Makefile
+-
+-cat ./src/methods/acro/packages/coliny/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
+-mv temp ./src/methods/acro/packages/coliny/src/Makefile
+-
+-cat ./src/methods/acro/packages/tpl/3po/Makefile | sed 's/CFLAGS = -O2/CFLAGS = -O2 -fPIC/g' > temp
+-mv temp  ./src/methods/acro/packages/tpl/3po/Makefile 
+-
+-cat ./src/methods/acro/packages/tpl/3po/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CFLAGS = -O2 -fpermissive -fPIC/g' > temp
+-mv temp  ./src/methods/acro/packages/tpl/3po/Makefile 
+-
+-cat ./src/packages/ampl/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
+-mv temp  ./src/packages/ampl/Makefile 
+-
+-#Compile and install dakota
+-cd src 
+-if [ $# -eq 0 ];
+-then
+-	make
+-	make install
+-else
+-	make -j $1
+-	make -j $1 install
+-fi
+-cd ..
+-
+-#Weird behaviour of Dakota: libamplsolver.a and amplsolver.a are not the same thing!
+-cd install/lib
+-mv libamplsolver.a libamplsolver.a.bak
+-ln -s ../../src/packages/ampl/amplsolver.a ./libamplsolver.a
+Index: ../trunk-jpl/externalpackages/dakota/install-4.2-macosx64.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/install-4.2-macosx64.sh	(revision 0)
++++ ../trunk-jpl/externalpackages/dakota/install-4.2-macosx64.sh	(revision 14272)
+@@ -0,0 +1,97 @@
++#!/bin/bash
++set -eu
++
++#Some cleanup
++rm -rf Dakota
++rm -rf src 
++rm -rf install 
++mkdir src install 
++
++#Download from ISSM server
++$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/Dakota_4_3.src.tar.gz' 'Dakota_4_3.src.tar.gz'
++
++#Untar 
++tar -zxvf  Dakota_4_3.src.tar.gz
++
++#Move Dakota to src directory
++mv Dakota/* src
++rm -rf Dakota
++
++#Apply patches
++patch src/src/ParallelLibrary.C ./ParallelLibrary.C.4.2.patch
++patch src/src/ParallelLibrary.H ./ParallelLibrary.H.4.2.patch
++patch src/src/NIDRProblemDescDB.C ./NIDRProblemDescDB.C.4.2.patch
++patch src/src/NonDSampling.C ./NonDSampling.C.4.2.patch
++patch src/src/NonDLocalReliability.C ./NonDLocalReliability.C.4.2.patch
++patch src/src/NonDUnilevelRBDO.C ./NonDUnilevelRBDO.C.4.2.patch    #  source not even used?
++#patch -R src/packages/Pecos/src/LHSDriver.cpp ./LHSDriver.cpp.4.2.patch
++
++#Configure dakota
++cd src
++./configure \
++   --prefix="$ISSM_DIR/externalpackages/dakota/install" \
++   --without-graphics  \
++   --with-pic \
++   --disable-mpi \
++   --with-blas="-L$ISSM_DIR/externalpackages/petsc/install/lib -lfblas " \
++   --with-lapack="-L$ISSM_DIR/externalpackages/petsc/install/lib -lflapack "
++cd ..
++
++#Before compiling, if running on 64 bits, we need to active fPIC compilation. Some packages 
++#do not register -fPIC in Dakota, which is a problem. Edit the faulty Makefiles and add the -fPIC 
++#flag to the compilation.
++cat ./src/methods/NCSUOpt/Makefile | sed 's/FFLAGS = -g -O2/FFLAGS = -g -O2 -fPIC/g' >  temp
++mv temp ./src/methods/NCSUOpt/Makefile
++
++cat ./src/methods/acro/packages/pebbl/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
++mv temp ./src/methods/acro/packages/pebbl/src/Makefile
++
++cat ./src/methods/hopspack/src-nappspack/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2 -fPIC/g' > temp
++mv temp ./src/methods/hopspack/src-nappspack/Makefile
++
++cat ./src/methods/hopspack/src-cddlib/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
++mv temp  ./src/methods/hopspack/src-cddlib/Makefile 
++
++cat ./src/methods/hopspack/src-shared/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
++mv temp  ./src/methods/hopspack/src-shared/Makefile 
++
++cat ./src/methods/hopspack/src-shared/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2 -fPIC/g' > temp
++mv temp  ./src/methods/hopspack/src-shared/Makefile 
++
++cat ./src/methods/hopspack/src-conveyor/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2 -fPIC/g' > temp
++mv temp  ./src/methods/hopspack/src-conveyor/Makefile 
++
++cat ./src/methods/hopspack/src-appspack/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2 -fPIC/g' > temp
++mv temp ./src/methods/hopspack/src-appspack/Makefile 
++
++cat ./src/methods/acro/packages/colin/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
++mv temp ./src/methods/acro/packages/colin/src/Makefile
++
++cat ./src/methods/acro/packages/coliny/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
++mv temp ./src/methods/acro/packages/coliny/src/Makefile
++
++cat ./src/methods/acro/packages/tpl/3po/Makefile | sed 's/CFLAGS = -O2/CFLAGS = -O2 -fPIC/g' > temp
++mv temp  ./src/methods/acro/packages/tpl/3po/Makefile 
++
++cat ./src/methods/acro/packages/tpl/3po/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CFLAGS = -O2 -fpermissive -fPIC/g' > temp
++mv temp  ./src/methods/acro/packages/tpl/3po/Makefile 
++
++cat ./src/packages/ampl/Makefile | sed 's/CFLAGS = -g -O2 -D_NONSTD_SOURCE/CFLAGS = -g -O2 -fPIC/g' > temp
++mv temp  ./src/packages/ampl/Makefile 
++
++#Compile and install dakota
++cd src 
++if [ $# -eq 0 ];
++then
++	make
++	make install
++else
++	make -j $1
++	make -j $1 install
++fi
++cd ..
++
++#Weird behaviour of Dakota: libamplsolver.a and amplsolver.a are not the same thing!
++cd install/lib
++mv libamplsolver.a libamplsolver.a.bak
++ln -s ../../src/packages/ampl/amplsolver.a ./libamplsolver.a
+
+Property changes on: ../trunk-jpl/externalpackages/dakota/install-4.2-macosx64.sh
+___________________________________________________________________
+Added: svn:executable
+## -0,0 +1 ##
++*
+Index: ../trunk-jpl/externalpackages/dakota/LHSDriver.cpp.4.2.patch
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/LHSDriver.cpp.4.2.patch	(revision 0)
++++ ../trunk-jpl/externalpackages/dakota/LHSDriver.cpp.4.2.patch	(revision 14272)
+@@ -0,0 +1,8 @@
++766c766
++<   /*char output_string[32], message_string[32], title_string[32],
++---
++>   char output_string[32], message_string[32], title_string[32],
++802c802
++<   check_error(err_code, "lhs_files");*/
++---
++>   check_error(err_code, "lhs_files");
+Index: ../trunk-jpl/externalpackages/dakota/NonDLocalReliability.C.4.2.patch
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/NonDLocalReliability.C.4.2.patch	(revision 0)
++++ ../trunk-jpl/externalpackages/dakota/NonDLocalReliability.C.4.2.patch	(revision 14272)
+@@ -0,0 +1,7 @@
++2276a2277
++> 	  // add sensitivity output to importance factors (jes, 8/06/10)
++2280c2281,2282
++< 	    << impFactor[i][j] << '\n';
++---
++> 	    << impFactor[i][j] << "  Sensitivity = " << setw(write_precision+7)
++> 	    << fnGradsMeanX(i, j) << '\n';
+Index: ../trunk-jpl/externalpackages/dakota/NonDUnilevelRBDO.C.4.2.patch
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/NonDUnilevelRBDO.C.4.2.patch	(revision 0)
++++ ../trunk-jpl/externalpackages/dakota/NonDUnilevelRBDO.C.4.2.patch	(revision 14272)
+@@ -0,0 +1,10 @@
++1052,1053c1052,1057
++< 	  s << "  Importance Factor for variable " << setw(11)
++< 	    << uv_labels[j].data() << " = " << impFactor[i][j] << '\n';
++---
++> 	  // add sensitivity output to importance factors (jes, 8/06/10)
++> 	  s << "  Importance Factor for variable " << setiosflags(ios::left)
++> 	    << setw(11) << uv_labels[j].data() << " = "
++> 	    << resetiosflags(ios::adjustfield) << setw(write_precision+7)
++> 	    << impFactor[i][j] << "  Sensitivity = " << setw(write_precision+7)
++> 	    << fnGradsMeanX(i, j) << '\n';
+Index: ../trunk-jpl/externalpackages/dakota/install-4.2-linux64-cloud.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/install-4.2-linux64-cloud.sh	(revision 0)
++++ ../trunk-jpl/externalpackages/dakota/install-4.2-linux64-cloud.sh	(revision 14272)
+@@ -0,0 +1,97 @@
++#!/bin/bash
++set -eu
++
++#Some cleanup
++rm -rf Dakota
++rm -rf src 
++rm -rf install 
++mkdir src install 
++
++#Download from ISSM server
++$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/Dakota_4_3.src.tar.gz' 'Dakota_4_3.src.tar.gz'
++
++#Untar 
++tar -zxvf  Dakota_4_3.src.tar.gz
++
++#Move Dakota to src directory
++mv Dakota/* src
++rm -rf Dakota
++
++#Apply patches
++patch src/src/ParallelLibrary.C ./ParallelLibrary.C.4.2.patch
++patch src/src/ParallelLibrary.H ./ParallelLibrary.H.4.2.patch
++patch src/src/NIDRProblemDescDB.C ./NIDRProblemDescDB.C.4.2.patch
++patch src/src/NonDSampling.C ./NonDSampling.C.4.2.patch
++patch src/src/NonDLocalReliability.C ./NonDLocalReliability.C.4.2.patch
++patch src/src/NonDUnilevelRBDO.C ./NonDUnilevelRBDO.C.4.2.patch    #  source not even used?
++#patch -R src/packages/Pecos/src/LHSDriver.cpp ./LHSDriver.cpp.4.2.patch
++
++#Configure dakota
++cd src
++./configure \
++	--prefix="$ISSM_DIR/externalpackages/dakota/install" \
++	--without-graphics  \
++	--with-pic \
++	--disable-mpi \
++	--with-blas=/usr/lib/libblas.so \
++	--with-lapack=/usr/lib/liblapack.so
++cd ..
++
++#Before compiling, if running on 64 bits, we need to active fPIC compilation. Some packages 
++#do not register -fPIC in Dakota, which is a problem. Edit the faulty Makefiles and add the -fPIC 
++#flag to the compilation.
++cat ./src/methods/NCSUOpt/Makefile | sed 's/FFLAGS = -g -O2/FFLAGS = -g -O2 -fPIC/g' >  temp
++mv temp ./src/methods/NCSUOpt/Makefile
++
++cat ./src/methods/acro/packages/pebbl/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
++mv temp ./src/methods/acro/packages/pebbl/src/Makefile
++
++cat ./src/methods/hopspack/src-nappspack/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
++mv temp ./src/methods/hopspack/src-nappspack/Makefile
++
++cat ./src/methods/hopspack/src-cddlib/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
++mv temp  ./src/methods/hopspack/src-cddlib/Makefile 
++
++cat ./src/methods/hopspack/src-shared/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
++mv temp  ./src/methods/hopspack/src-shared/Makefile 
++
++cat ./src/methods/hopspack/src-shared/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
++mv temp  ./src/methods/hopspack/src-shared/Makefile 
++
++cat ./src/methods/hopspack/src-conveyor/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2 -fPIC/g' > temp
++mv temp  ./src/methods/hopspack/src-conveyor/Makefile 
++
++cat ./src/methods/hopspack/src-appspack/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
++mv temp ./src/methods/hopspack/src-appspack/Makefile 
++
++cat ./src/methods/acro/packages/colin/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
++mv temp ./src/methods/acro/packages/colin/src/Makefile
++
++cat ./src/methods/acro/packages/coliny/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
++mv temp ./src/methods/acro/packages/coliny/src/Makefile
++
++cat ./src/methods/acro/packages/tpl/3po/Makefile | sed 's/CFLAGS = -O2/CFLAGS = -O2 -fPIC/g' > temp
++mv temp  ./src/methods/acro/packages/tpl/3po/Makefile 
++
++cat ./src/methods/acro/packages/tpl/3po/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CFLAGS = -O2 -fpermissive -fPIC/g' > temp
++mv temp  ./src/methods/acro/packages/tpl/3po/Makefile 
++
++cat ./src/packages/ampl/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
++mv temp  ./src/packages/ampl/Makefile 
++
++#Compile and install dakota
++cd src 
++if [ $# -eq 0 ];
++then
++	make
++	make install
++else
++	make -j $1
++	make -j $1 install
++fi
++cd ..
++
++#Weird behaviour of Dakota: libamplsolver.a and amplsolver.a are not the same thing!
++cd install/lib
++mv libamplsolver.a libamplsolver.a.bak
++ln -s ../../src/packages/ampl/amplsolver.a ./libamplsolver.a
+
+Property changes on: ../trunk-jpl/externalpackages/dakota/install-4.2-linux64-cloud.sh
+___________________________________________________________________
+Added: svn:executable
+## -0,0 +1 ##
++*
+Index: ../trunk-jpl/externalpackages/dakota/install-4.2-discover.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/install-4.2-discover.sh	(revision 0)
++++ ../trunk-jpl/externalpackages/dakota/install-4.2-discover.sh	(revision 14272)
+@@ -0,0 +1,97 @@
++#!/bin/bash
++set -eu
++
++#Some cleanup
++rm -rf Dakota
++rm -rf src
++rm -rf install
++mkdir src install
++
++#Download from ISSM server
++$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/Dakota_4_3.src.tar.gz' 'Dakota_4_3.src.tar.gz'
++
++#Untar 
++tar -zxvf  Dakota_4_3.src.tar.gz
++
++#Move Dakota to src directory
++mv Dakota/* src
++rm -rf Dakota
++
++#Apply patches
++patch src/src/ParallelLibrary.C ./ParallelLibrary.C.4.2.patch
++patch src/src/ParallelLibrary.H ./ParallelLibrary.H.4.2.patch
++patch src/src/NIDRProblemDescDB.C ./NIDRProblemDescDB.C.4.2.patch
++patch src/src/NonDSampling.C ./NonDSampling.C.4.2.patch
++patch src/src/NonDLocalReliability.C ./NonDLocalReliability.C.4.2.patch
++patch src/src/NonDUnilevelRBDO.C ./NonDUnilevelRBDO.C.4.2.patch    #  source not even used?
++#patch -R src/packages/Pecos/src/LHSDriver.cpp ./LHSDriver.cpp.4.2.patch
++
++#Configure dakota
++cd src
++./configure \
++--prefix="$ISSM_DIR/externalpackages/dakota/install/" \
++--without-graphics  \
++--with-pic \
++--disable-mpi \
++--with-blas="-L/usr/local/intel/mkl/10.1.2.024/lib/64 -lmkl_lapack -lmkl -lguide -lpthread" \
++--with-lapack="-L/usr/local/intel/mkl/10.1.2.024/lib/64 -lmkl_lapack -lmkl -lguide -lpthread"
++cd ..
++
++#Before compiling, if running on 64 bits, we need to active fPIC compilation. Some packages 
++#do not register -fPIC in Dakota, which is a problem. Edit the faulty Makefiles and add the -fPIC 
++#flag to the compilation.
++cat ./src/methods/NCSUOpt/Makefile | sed 's/FFLAGS = -g -O2/FFLAGS = -g -O2 -fPIC/g' >  temp
++mv temp ./src/methods/NCSUOpt/Makefile
++
++cat ./src/methods/acro/packages/pebbl/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
++mv temp ./src/methods/acro/packages/pebbl/src/Makefile
++
++cat ./src/methods/hopspack/src-nappspack/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
++mv temp ./src/methods/hopspack/src-nappspack/Makefile
++
++cat ./src/methods/hopspack/src-cddlib/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
++mv temp  ./src/methods/hopspack/src-cddlib/Makefile
++
++cat ./src/methods/hopspack/src-shared/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
++mv temp  ./src/methods/hopspack/src-shared/Makefile
++
++cat ./src/methods/hopspack/src-shared/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
++mv temp  ./src/methods/hopspack/src-shared/Makefile
++
++cat ./src/methods/hopspack/src-conveyor/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2 -fPIC/g' > temp
++mv temp  ./src/methods/hopspack/src-conveyor/Makefile
++
++cat ./src/methods/hopspack/src-appspack/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
++mv temp ./src/methods/hopspack/src-appspack/Makefile
++
++cat ./src/methods/acro/packages/colin/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
++mv temp ./src/methods/acro/packages/colin/src/Makefile
++
++cat ./src/methods/acro/packages/coliny/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
++mv temp ./src/methods/acro/packages/coliny/src/Makefile
++
++cat ./src/methods/acro/packages/tpl/3po/Makefile | sed 's/CFLAGS = -O2/CFLAGS = -O2 -fPIC/g' > temp
++mv temp  ./src/methods/acro/packages/tpl/3po/Makefile
++
++cat ./src/methods/acro/packages/tpl/3po/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CFLAGS = -O2 -fpermissive -fPIC/g' > temp
++mv temp  ./src/methods/acro/packages/tpl/3po/Makefile
++
++cat ./src/packages/ampl/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
++mv temp  ./src/packages/ampl/Makefile
++
++#Compile and install dakota
++cd src
++if [ $# -eq 0 ];
++then
++	make
++	make install
++else
++	make -j $1
++	make -j $1 install
++fi
++cd ..
++
++#Weird behaviour of Dakota: libamplsolver.a and amplsolver.a are not the same thing!
++cd install/lib
++mv libamplsolver.a libamplsolver.a.bak
++ln -s ../../src/packages/ampl/amplsolver.a ./libamplsolver.a
+
+Property changes on: ../trunk-jpl/externalpackages/dakota/install-4.2-discover.sh
+___________________________________________________________________
+Added: svn:executable
+## -0,0 +1 ##
++*
+Index: ../trunk-jpl/externalpackages/dakota/ParallelLibrary.C.4.2.patch
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/ParallelLibrary.C.4.2.patch	(revision 0)
++++ ../trunk-jpl/externalpackages/dakota/ParallelLibrary.C.4.2.patch	(revision 14272)
+@@ -0,0 +1,34 @@
++134a135
++>   initialized=0; //we run serially all the time!
++165a167,197
++> /** This constructor is provided for the Issm software, to run serial 
++>  * Dakota in a parallel MPI ring: */
++> ParallelLibrary::ParallelLibrary(char* serial_mode): worldRank(0), worldSize(1),
++>   mpirunFlag(false), ownMPIFlag(false), dryRunFlag(false), dummyFlag(false),
++>   stdOutputFlag(false), stdErrorFlag(false), startClock(0),
++>   stdOutputFilename(NULL), stdErrorFilename(NULL), readRestartFilename(NULL),
++>   writeRestartFilename(NULL), stopRestartEvals(0),
++>   currPLIter(parallelLevels.end()), currPCIter(parallelConfigurations.end())
++> {
++>   startClock   = clock();
++> #ifdef DAKOTA_UTILIB
++>   utilib::exception_mngr::set_mode(utilib::exception_mngr::Abort);
++>   startCPUTime = CPUSeconds();       // see utilib/src/sys/seconds.cpp
++>   startWCTime  = WallClockSeconds(); // see utilib/src/sys/seconds.cpp
++> #endif // DAKOTA_UTILIB
++> 
++>   // do not initialize MPI.  Get worldRank/worldSize if available
++>   ParallelLevel pl;
++> #ifdef HAVE_MPI // mpi available, we still don't want to run in parallel for  Dakota!
++>   pl.serverIntraComm = MPI_COMM_NULL;
++>   Cout << "Running Dakota in serial mode on CPU 0, inside an MPI ring.";
++> #else // mpi not available
++>   pl.serverIntraComm = MPI_COMM_NULL;
++>   Cout << "Running Dakota in serial mode.\n";
++> #endif // HAVE_MPI
++> 
++>   parallelLevels.insert(pl);
++>   currPLIter = parallelLevels.begin();
++>   increment_parallel_configuration();
++> }
++> 
+Index: ../trunk-jpl/externalpackages/dakota/NIDRProblemDescDB.C.4.2.patch
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/NIDRProblemDescDB.C.4.2.patch	(revision 0)
++++ ../trunk-jpl/externalpackages/dakota/NIDRProblemDescDB.C.4.2.patch	(revision 14272)
+@@ -0,0 +1,4 @@
++95a96,98
++>   
++>   //close the input file
++>   fclose(nidrin);
+Index: ../trunk-jpl/externalpackages/dakota/install-4.2-pleiades-petsc3.3.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/install-4.2-pleiades-petsc3.3.sh	(revision 0)
++++ ../trunk-jpl/externalpackages/dakota/install-4.2-pleiades-petsc3.3.sh	(revision 14272)
+@@ -0,0 +1,103 @@
++#!/bin/bash
++set -eu
++
++#Some cleanup
++rm -rf Dakota
++rm -rf src
++rm -rf install
++mkdir src install
++
++#Download from ISSM server
++$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/Dakota_4_3.src.tar.gz' 'Dakota_4_3.src.tar.gz'
++
++#Untar 
++tar -zxvf  Dakota_4_3.src.tar.gz
++
++#Move Dakota to src directory
++mv Dakota/* src
++rm -rf Dakota
++
++#Apply patches
++patch src/src/ParallelLibrary.C ./ParallelLibrary.C.4.2.patch
++patch src/src/ParallelLibrary.H ./ParallelLibrary.H.4.2.patch
++patch src/src/NIDRProblemDescDB.C ./NIDRProblemDescDB.C.4.2.patch
++patch src/src/NonDSampling.C ./NonDSampling.C.4.2.patch
++patch src/src/NonDLocalReliability.C ./NonDLocalReliability.C.4.2.patch
++patch src/src/NonDUnilevelRBDO.C ./NonDUnilevelRBDO.C.4.2.patch    #  source not even used?
++#patch -R src/packages/Pecos/src/LHSDriver.cpp ./LHSDriver.cpp.4.2.patch
++
++#Configure dakota
++cd src
++./configure \
++--prefix="$ISSM_DIR/externalpackages/dakota/install/" \
++--without-graphics  \
++--with-pic \
++--disable-mpi \
++--with-blas="-L$ISSM_DIR/externalpackages/petsc/install/lib -lfblas " \
++--with-lapack="-L$ISSM_DIR/externalpackages/petsc/install/lib -lflapack "
++
++#--with-blas="-L/nasa/intel/mkl/10.0.011/lib/64/ -lmkl -lmkl_lapack -liomp5 -lpthread" \
++#--with-lapack="-L/nasa/intel/mkl/10.0.011/lib/64/ -lmkl -lmkl_lapack -liomp5 -lpthread"
++#--with-blas="-L/nasa/intel/Compiler/11.1/046/mkl/lib/em64t/ -lmkl_intel_lp64 -lmkl_lapack" \
++#--with-lapack="-L/nasa/intel/Compiler/11.1/046/mkl/lib/em64t/ -lmkl_intel_lp64 -lmkl_lapack"
++
++cd ..
++
++#Before compiling, if running on 64 bits, we need to active fPIC compilation. Some packages 
++#do not register -fPIC in Dakota, which is a problem. Edit the faulty Makefiles and add the -fPIC 
++#flag to the compilation.
++cat ./src/methods/NCSUOpt/Makefile | sed 's/FFLAGS = -g -O2/FFLAGS = -g -O2 -fPIC/g' >  temp
++mv temp ./src/methods/NCSUOpt/Makefile
++
++cat ./src/methods/acro/packages/pebbl/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
++mv temp ./src/methods/acro/packages/pebbl/src/Makefile
++
++cat ./src/methods/hopspack/src-nappspack/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
++mv temp ./src/methods/hopspack/src-nappspack/Makefile
++
++cat ./src/methods/hopspack/src-cddlib/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
++mv temp  ./src/methods/hopspack/src-cddlib/Makefile
++
++cat ./src/methods/hopspack/src-shared/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
++mv temp  ./src/methods/hopspack/src-shared/Makefile
++
++cat ./src/methods/hopspack/src-shared/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
++mv temp  ./src/methods/hopspack/src-shared/Makefile
++
++cat ./src/methods/hopspack/src-conveyor/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2 -fPIC/g' > temp
++mv temp  ./src/methods/hopspack/src-conveyor/Makefile
++
++cat ./src/methods/hopspack/src-appspack/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
++mv temp ./src/methods/hopspack/src-appspack/Makefile
++
++cat ./src/methods/acro/packages/colin/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
++mv temp ./src/methods/acro/packages/colin/src/Makefile
++
++cat ./src/methods/acro/packages/coliny/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
++mv temp ./src/methods/acro/packages/coliny/src/Makefile
++
++cat ./src/methods/acro/packages/tpl/3po/Makefile | sed 's/CFLAGS = -O2/CFLAGS = -O2 -fPIC/g' > temp
++mv temp  ./src/methods/acro/packages/tpl/3po/Makefile
++
++cat ./src/methods/acro/packages/tpl/3po/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CFLAGS = -O2 -fpermissive -fPIC/g' > temp
++mv temp  ./src/methods/acro/packages/tpl/3po/Makefile
++
++cat ./src/packages/ampl/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
++mv temp  ./src/packages/ampl/Makefile
++
++#Compile and install dakota
++cd src
++if [ $# -eq 0 ];
++then
++	make
++	make install
++else
++	make -j $1
++	make -j $1 install
++fi
++cd ..
++
++#Weird behaviour of Dakota: libamplsolver.a and amplsolver.a are not the same thing!
++cd install/lib
++mv libamplsolver.a libamplsolver.a.bak
++ln -s ../../src/packages/ampl/amplsolver.a ./libamplsolver.a
+
+Property changes on: ../trunk-jpl/externalpackages/dakota/install-4.2-pleiades-petsc3.3.sh
+___________________________________________________________________
+Added: svn:executable
+## -0,0 +1 ##
++*
+Index: ../trunk-jpl/externalpackages/dakota/install-4.2-pleiades.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/install-4.2-pleiades.sh	(revision 0)
++++ ../trunk-jpl/externalpackages/dakota/install-4.2-pleiades.sh	(revision 14272)
+@@ -0,0 +1,97 @@
++#!/bin/bash
++set -eu
++
++#Some cleanup
++rm -rf Dakota
++rm -rf src
++rm -rf install
++mkdir src install
++
++#Download from ISSM server
++$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/Dakota_4_3.src.tar.gz' 'Dakota_4_3.src.tar.gz'
++
++#Untar 
++tar -zxvf  Dakota_4_3.src.tar.gz
++
++#Move Dakota to src directory
++mv Dakota/* src
++rm -rf Dakota
++
++#Apply patches
++patch src/src/ParallelLibrary.C ./ParallelLibrary.C.4.2.patch
++patch src/src/ParallelLibrary.H ./ParallelLibrary.H.4.2.patch
++patch src/src/NIDRProblemDescDB.C ./NIDRProblemDescDB.C.4.2.patch
++patch src/src/NonDSampling.C ./NonDSampling.C.4.2.patch
++patch src/src/NonDLocalReliability.C ./NonDLocalReliability.C.4.2.patch
++patch src/src/NonDUnilevelRBDO.C ./NonDUnilevelRBDO.C.4.2.patch    #  source not even used?
++#patch -R src/packages/Pecos/src/LHSDriver.cpp ./LHSDriver.cpp.4.2.patch
++
++#Configure dakota
++cd src
++./configure \
++--prefix="$ISSM_DIR/externalpackages/dakota/install/" \
++--without-graphics  \
++--with-pic \
++--disable-mpi \
++--with-blas="-L/nasa/intel/mkl/10.0.011/lib/64/ -lmkl -lmkl_lapack -liomp5 -lpthread" \
++--with-lapack="-L/nasa/intel/mkl/10.0.011/lib/64/ -lmkl -lmkl_lapack -liomp5 -lpthread"
++cd ..
++
++#Before compiling, if running on 64 bits, we need to active fPIC compilation. Some packages 
++#do not register -fPIC in Dakota, which is a problem. Edit the faulty Makefiles and add the -fPIC 
++#flag to the compilation.
++cat ./src/methods/NCSUOpt/Makefile | sed 's/FFLAGS = -g -O2/FFLAGS = -g -O2 -fPIC/g' >  temp
++mv temp ./src/methods/NCSUOpt/Makefile
++
++cat ./src/methods/acro/packages/pebbl/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
++mv temp ./src/methods/acro/packages/pebbl/src/Makefile
++
++cat ./src/methods/hopspack/src-nappspack/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
++mv temp ./src/methods/hopspack/src-nappspack/Makefile
++
++cat ./src/methods/hopspack/src-cddlib/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
++mv temp  ./src/methods/hopspack/src-cddlib/Makefile
++
++cat ./src/methods/hopspack/src-shared/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
++mv temp  ./src/methods/hopspack/src-shared/Makefile
++
++cat ./src/methods/hopspack/src-shared/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
++mv temp  ./src/methods/hopspack/src-shared/Makefile
++
++cat ./src/methods/hopspack/src-conveyor/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2 -fPIC/g' > temp
++mv temp  ./src/methods/hopspack/src-conveyor/Makefile
++
++cat ./src/methods/hopspack/src-appspack/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
++mv temp ./src/methods/hopspack/src-appspack/Makefile
++
++cat ./src/methods/acro/packages/colin/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
++mv temp ./src/methods/acro/packages/colin/src/Makefile
++
++cat ./src/methods/acro/packages/coliny/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
++mv temp ./src/methods/acro/packages/coliny/src/Makefile
++
++cat ./src/methods/acro/packages/tpl/3po/Makefile | sed 's/CFLAGS = -O2/CFLAGS = -O2 -fPIC/g' > temp
++mv temp  ./src/methods/acro/packages/tpl/3po/Makefile
++
++cat ./src/methods/acro/packages/tpl/3po/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CFLAGS = -O2 -fpermissive -fPIC/g' > temp
++mv temp  ./src/methods/acro/packages/tpl/3po/Makefile
++
++cat ./src/packages/ampl/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
++mv temp  ./src/packages/ampl/Makefile
++
++#Compile and install dakota
++cd src
++if [ $# -eq 0 ];
++then
++	make
++	make install
++else
++	make -j $1
++	make -j $1 install
++fi
++cd ..
++
++#Weird behaviour of Dakota: libamplsolver.a and amplsolver.a are not the same thing!
++cd install/lib
++mv libamplsolver.a libamplsolver.a.bak
++ln -s ../../src/packages/ampl/amplsolver.a ./libamplsolver.a
+
+Property changes on: ../trunk-jpl/externalpackages/dakota/install-4.2-pleiades.sh
+___________________________________________________________________
+Added: svn:executable
+## -0,0 +1 ##
++*
+Index: ../trunk-jpl/externalpackages/dakota/ParallelLibrary.H.4.2.patch
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/ParallelLibrary.H.4.2.patch	(revision 0)
++++ ../trunk-jpl/externalpackages/dakota/ParallelLibrary.H.4.2.patch	(revision 14272)
+@@ -0,0 +1,3 @@
++346a347,348
++>   /// library mode constructor, serial mode
++>   ParallelLibrary(char*  serial_mode);
+Index: ../trunk-jpl/externalpackages/dakota/install-4.2-altix64-cosmos.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/install-4.2-altix64-cosmos.sh	(revision 0)
++++ ../trunk-jpl/externalpackages/dakota/install-4.2-altix64-cosmos.sh	(revision 14272)
+@@ -0,0 +1,97 @@
++#!/bin/bash
++set -eu
++
++#Some cleanup
++rm -rf Dakota
++rm -rf src 
++rm -rf install 
++mkdir src install 
++
++#Download from ISSM server
++$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/Dakota_4_3.src.tar.gz' 'Dakota_4_3.src.tar.gz'
++
++#Untar 
++tar -zxvf  Dakota_4_3.src.tar.gz
++
++#Move Dakota to src directory
++mv Dakota/* src
++rm -rf Dakota
++
++#Apply patches
++patch src/src/ParallelLibrary.C ./ParallelLibrary.C.4.2.patch
++patch src/src/ParallelLibrary.H ./ParallelLibrary.H.4.2.patch
++patch src/src/NIDRProblemDescDB.C ./NIDRProblemDescDB.C.4.2.patch
++patch src/src/NonDSampling.C ./NonDSampling.C.4.2.patch
++patch src/src/NonDLocalReliability.C ./NonDLocalReliability.C.4.2.patch
++patch src/src/NonDUnilevelRBDO.C ./NonDUnilevelRBDO.C.4.2.patch    #  source not even used?
++#patch -R src/packages/Pecos/src/LHSDriver.cpp ./LHSDriver.cpp.4.2.patch
++
++#Configure dakota
++cd src
++./configure \ 
++	--prefix="$ISSM_DIR/externalpackages/dakota/install" \
++	--without-graphics  \
++	--with-pic \
++	--disable-mpi \
++	--with-blas=/opt/intel/mkl/9.1.023/lib/64/libmkl.so \
++	--with-lapack=/opt/intel/mkl/9.1.023/lib/64/libmkl_lapack.so 
++cd ..
++
++#Before compiling, if running on 64 bits, we need to active fPIC compilation. Some packages 
++#do not register -fPIC in Dakota, which is a problem. Edit the faulty Makefiles and add the -fPIC 
++#flag to the compilation.
++cat ./src/methods/NCSUOpt/Makefile | sed 's/FFLAGS = -g -O2/FFLAGS = -g -O2 -fPIC/g' >  temp
++mv temp ./src/methods/NCSUOpt/Makefile
++
++cat ./src/methods/acro/packages/pebbl/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
++mv temp ./src/methods/acro/packages/pebbl/src/Makefile
++
++cat ./src/methods/hopspack/src-nappspack/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
++mv temp ./src/methods/hopspack/src-nappspack/Makefile
++
++cat ./src/methods/hopspack/src-cddlib/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
++mv temp  ./src/methods/hopspack/src-cddlib/Makefile 
++
++cat ./src/methods/hopspack/src-shared/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
++mv temp  ./src/methods/hopspack/src-shared/Makefile 
++
++cat ./src/methods/hopspack/src-shared/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
++mv temp  ./src/methods/hopspack/src-shared/Makefile 
++
++cat ./src/methods/hopspack/src-conveyor/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2 -fPIC/g' > temp
++mv temp  ./src/methods/hopspack/src-conveyor/Makefile 
++
++cat ./src/methods/hopspack/src-appspack/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
++mv temp ./src/methods/hopspack/src-appspack/Makefile 
++
++cat ./src/methods/acro/packages/colin/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
++mv temp ./src/methods/acro/packages/colin/src/Makefile
++
++cat ./src/methods/acro/packages/coliny/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
++mv temp ./src/methods/acro/packages/coliny/src/Makefile
++
++cat ./src/methods/acro/packages/tpl/3po/Makefile | sed 's/CFLAGS = -O2/CFLAGS = -O2 -fPIC/g' > temp
++mv temp  ./src/methods/acro/packages/tpl/3po/Makefile 
++
++cat ./src/methods/acro/packages/tpl/3po/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CFLAGS = -O2 -fpermissive -fPIC/g' > temp
++mv temp  ./src/methods/acro/packages/tpl/3po/Makefile 
++
++cat ./src/packages/ampl/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
++mv temp  ./src/packages/ampl/Makefile 
++
++#Compile and install dakota
++cd src 
++if [ $# -eq 0 ];
++then
++	make
++	make install
++else
++	make -j $1
++	make -j $1 install
++fi
++cd ..
++
++#Weird behaviour of Dakota: libamplsolver.a and amplsolver.a are not the same thing!
++cd install/lib
++mv libamplsolver.a libamplsolver.a.bak
++ln -s ../../src/packages/ampl/amplsolver.a ./libamplsolver.a
+
+Property changes on: ../trunk-jpl/externalpackages/dakota/install-4.2-altix64-cosmos.sh
+___________________________________________________________________
+Added: svn:executable
+## -0,0 +1 ##
++*
+Index: ../trunk-jpl/externalpackages/dakota/NonDSampling.C.4.2.patch
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/NonDSampling.C.4.2.patch	(revision 0)
++++ ../trunk-jpl/externalpackages/dakota/NonDSampling.C.4.2.patch	(revision 14272)
+@@ -0,0 +1,15 @@
++656a657,658
++> 
++> 
++659a662,663
++>    
++> 	return; //don't compute for now, too expensive.
++705c709
++<   //calculate simple rank correlation coeff
++---
++>   //calculate simple correlation coeff
++710a715
++> 
++1071a1077,1078
++> 
++> 	return; //don't output for now.
+Index: ../trunk-jpl/externalpackages/dakota/install-4.2-linux64-astrid.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/install-4.2-linux64-astrid.sh	(revision 0)
++++ ../trunk-jpl/externalpackages/dakota/install-4.2-linux64-astrid.sh	(revision 14272)
+@@ -0,0 +1,97 @@
++#!/bin/bash
++set -eu
++
++#Some cleanup
++rm -rf Dakota
++rm -rf src 
++rm -rf install 
++mkdir src install 
++
++#Download from ISSM server
++$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/Dakota_4_3.src.tar.gz' 'Dakota_4_3.src.tar.gz'
++
++#Untar 
++tar -zxvf  Dakota_4_3.src.tar.gz
++
++#Move Dakota to src directory
++mv Dakota/* src
++rm -rf Dakota
++
++#Apply patches
++patch src/src/ParallelLibrary.C ./ParallelLibrary.C.4.2.patch
++patch src/src/ParallelLibrary.H ./ParallelLibrary.H.4.2.patch
++patch src/src/NIDRProblemDescDB.C ./NIDRProblemDescDB.C.4.2.patch
++patch src/src/NonDSampling.C ./NonDSampling.C.4.2.patch
++patch src/src/NonDLocalReliability.C ./NonDLocalReliability.C.4.2.patch
++patch src/src/NonDUnilevelRBDO.C ./NonDUnilevelRBDO.C.4.2.patch    #  source not even used?
++#patch -R src/packages/Pecos/src/LHSDriver.cpp ./LHSDriver.cpp.4.2.patch
++
++#Configure dakota
++cd src
++./configure \
++	--prefix="$ISSM_DIR/externalpackages/dakota/install" \
++	--without-graphics  \
++	--with-pic \
++	--disable-mpi \
++	--with-blas=/usr/lib64/libblas.so.3.0.3 \
++	--with-lapack=/usr/lib64/liblapack.so.3.0.3
++cd ..
++
++#Before compiling, if running on 64 bits, we need to active fPIC compilation. Some packages 
++#do not register -fPIC in Dakota, which is a problem. Edit the faulty Makefiles and add the -fPIC 
++#flag to the compilation.
++cat ./src/methods/NCSUOpt/Makefile | sed 's/FFLAGS = -g -O2/FFLAGS = -g -O2 -fPIC/g' >  temp
++mv temp ./src/methods/NCSUOpt/Makefile
++
++cat ./src/methods/acro/packages/pebbl/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
++mv temp ./src/methods/acro/packages/pebbl/src/Makefile
++
++cat ./src/methods/hopspack/src-nappspack/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
++mv temp ./src/methods/hopspack/src-nappspack/Makefile
++
++cat ./src/methods/hopspack/src-cddlib/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
++mv temp  ./src/methods/hopspack/src-cddlib/Makefile 
++
++cat ./src/methods/hopspack/src-shared/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
++mv temp  ./src/methods/hopspack/src-shared/Makefile 
++
++cat ./src/methods/hopspack/src-shared/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
++mv temp  ./src/methods/hopspack/src-shared/Makefile 
++
++cat ./src/methods/hopspack/src-conveyor/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2 -fPIC/g' > temp
++mv temp  ./src/methods/hopspack/src-conveyor/Makefile 
++
++cat ./src/methods/hopspack/src-appspack/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
++mv temp ./src/methods/hopspack/src-appspack/Makefile 
++
++cat ./src/methods/acro/packages/colin/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
++mv temp ./src/methods/acro/packages/colin/src/Makefile
++
++cat ./src/methods/acro/packages/coliny/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
++mv temp ./src/methods/acro/packages/coliny/src/Makefile
++
++cat ./src/methods/acro/packages/tpl/3po/Makefile | sed 's/CFLAGS = -O2/CFLAGS = -O2 -fPIC/g' > temp
++mv temp  ./src/methods/acro/packages/tpl/3po/Makefile 
++
++cat ./src/methods/acro/packages/tpl/3po/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CFLAGS = -O2 -fpermissive -fPIC/g' > temp
++mv temp  ./src/methods/acro/packages/tpl/3po/Makefile 
++
++cat ./src/packages/ampl/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
++mv temp  ./src/packages/ampl/Makefile 
++
++#Compile and install dakota
++cd src 
++if [ $# -eq 0 ];
++then
++	make
++	make install
++else
++	make -j $1
++	make -j $1 install
++fi
++cd ..
++
++#Weird behaviour of Dakota: libamplsolver.a and amplsolver.a are not the same thing!
++cd install/lib
++mv libamplsolver.a libamplsolver.a.bak
++ln -s ../../src/packages/ampl/amplsolver.a ./libamplsolver.a
+
+Property changes on: ../trunk-jpl/externalpackages/dakota/install-4.2-linux64-astrid.sh
+___________________________________________________________________
+Added: svn:executable
+## -0,0 +1 ##
++*
+Index: ../trunk-jpl/externalpackages/dakota/install-4.2-linux64-murdo.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/install-4.2-linux64-murdo.sh	(revision 0)
++++ ../trunk-jpl/externalpackages/dakota/install-4.2-linux64-murdo.sh	(revision 14272)
+@@ -0,0 +1,97 @@
++#!/bin/bash
++set -eu
++
++#Some cleanup
++rm -rf Dakota
++rm -rf src 
++rm -rf install 
++mkdir src install 
++
++#Download from ISSM server
++$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/Dakota_4_3.src.tar.gz' 'Dakota_4_3.src.tar.gz'
++
++#Untar 
++tar -zxvf  Dakota_4_3.src.tar.gz
++
++#Move Dakota to src directory
++mv Dakota/* src
++rm -rf Dakota
++
++#Apply patches
++patch src/src/ParallelLibrary.C ./ParallelLibrary.C.4.2.patch
++patch src/src/ParallelLibrary.H ./ParallelLibrary.H.4.2.patch
++patch src/src/NIDRProblemDescDB.C ./NIDRProblemDescDB.C.4.2.patch
++patch src/src/NonDSampling.C ./NonDSampling.C.4.2.patch
++patch src/src/NonDLocalReliability.C ./NonDLocalReliability.C.4.2.patch
++patch src/src/NonDUnilevelRBDO.C ./NonDUnilevelRBDO.C.4.2.patch    #  source not even used?
++#patch -R src/packages/Pecos/src/LHSDriver.cpp ./LHSDriver.cpp.4.2.patch
++
++#Configure dakota
++cd src
++./configure \
++	--prefix="$ISSM_DIR/externalpackages/dakota/install" \
++	--without-graphics  \
++	--with-pic \
++	--disable-mpi \
++	--with-blas=/usr/lib64/libblas.so.3.1.1 \
++	--with-lapack=/usr/lib64/liblapack.so.3.1.1
++cd ..
++
++#Before compiling, if running on 64 bits, we need to active fPIC compilation. Some packages 
++#do not register -fPIC in Dakota, which is a problem. Edit the faulty Makefiles and add the -fPIC 
++#flag to the compilation.
++cat ./src/methods/NCSUOpt/Makefile | sed 's/FFLAGS = -g -O2/FFLAGS = -g -O2 -fPIC/g' >  temp
++mv temp ./src/methods/NCSUOpt/Makefile
++
++cat ./src/methods/acro/packages/pebbl/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
++mv temp ./src/methods/acro/packages/pebbl/src/Makefile
++
++cat ./src/methods/hopspack/src-nappspack/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
++mv temp ./src/methods/hopspack/src-nappspack/Makefile
++
++cat ./src/methods/hopspack/src-cddlib/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
++mv temp  ./src/methods/hopspack/src-cddlib/Makefile 
++
++cat ./src/methods/hopspack/src-shared/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
++mv temp  ./src/methods/hopspack/src-shared/Makefile 
++
++cat ./src/methods/hopspack/src-shared/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
++mv temp  ./src/methods/hopspack/src-shared/Makefile 
++
++cat ./src/methods/hopspack/src-conveyor/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2 -fPIC/g' > temp
++mv temp  ./src/methods/hopspack/src-conveyor/Makefile 
++
++cat ./src/methods/hopspack/src-appspack/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
++mv temp ./src/methods/hopspack/src-appspack/Makefile 
++
++cat ./src/methods/acro/packages/colin/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
++mv temp ./src/methods/acro/packages/colin/src/Makefile
++
++cat ./src/methods/acro/packages/coliny/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
++mv temp ./src/methods/acro/packages/coliny/src/Makefile
++
++cat ./src/methods/acro/packages/tpl/3po/Makefile | sed 's/CFLAGS = -O2/CFLAGS = -O2 -fPIC/g' > temp
++mv temp  ./src/methods/acro/packages/tpl/3po/Makefile 
++
++cat ./src/methods/acro/packages/tpl/3po/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CFLAGS = -O2 -fpermissive -fPIC/g' > temp
++mv temp  ./src/methods/acro/packages/tpl/3po/Makefile 
++
++cat ./src/packages/ampl/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
++mv temp  ./src/packages/ampl/Makefile 
++
++#Compile and install dakota
++cd src 
++if [ $# -eq 0 ];
++then
++	make
++	make install
++else
++	make -j $1
++	make -j $1 install
++fi
++cd ..
++
++#Weird behaviour of Dakota: libamplsolver.a and amplsolver.a are not the same thing!
++cd install/lib
++mv libamplsolver.a libamplsolver.a.bak
++ln -s ../../src/packages/ampl/amplsolver.a ./libamplsolver.a
+
+Property changes on: ../trunk-jpl/externalpackages/dakota/install-4.2-linux64-murdo.sh
+___________________________________________________________________
+Added: svn:executable
+## -0,0 +1 ##
++*
Index: /issm/oecreview/Archive/14064-14311/ISSM-14272-14273.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14272-14273.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14272-14273.diff	(revision 14312)
@@ -0,0 +1,683 @@
+Index: ../trunk-jpl/externalpackages/dakota/pecos_global_defs.hpp.5.2.patch
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/pecos_global_defs.hpp.5.2.patch	(revision 14272)
++++ ../trunk-jpl/externalpackages/dakota/pecos_global_defs.hpp.5.2.patch	(revision 14273)
+@@ -1,4 +0,0 @@
+-24a25
+-> #ifndef PI
+-25a27
+-> #endif
+Index: ../trunk-jpl/externalpackages/dakota/LHSDriver.cpp.4.2.patch
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/LHSDriver.cpp.4.2.patch	(revision 14272)
++++ ../trunk-jpl/externalpackages/dakota/LHSDriver.cpp.4.2.patch	(revision 14273)
+@@ -1,8 +0,0 @@
+-766c766
+-<   /*char output_string[32], message_string[32], title_string[32],
+----
+->   char output_string[32], message_string[32], title_string[32],
+-802c802
+-<   check_error(err_code, "lhs_files");*/
+----
+->   check_error(err_code, "lhs_files");
+Index: ../trunk-jpl/externalpackages/dakota/NonDLocalReliability.C.4.2.patch
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/NonDLocalReliability.C.4.2.patch	(revision 14272)
++++ ../trunk-jpl/externalpackages/dakota/NonDLocalReliability.C.4.2.patch	(revision 14273)
+@@ -1,7 +0,0 @@
+-2276a2277
+-> 	  // add sensitivity output to importance factors (jes, 8/06/10)
+-2280c2281,2282
+-< 	    << impFactor[i][j] << '\n';
+----
+-> 	    << impFactor[i][j] << "  Sensitivity = " << setw(write_precision+7)
+-> 	    << fnGradsMeanX(i, j) << '\n';
+Index: ../trunk-jpl/externalpackages/dakota/NonDLocalReliability.C.5.2.patch
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/NonDLocalReliability.C.5.2.patch	(revision 14272)
++++ ../trunk-jpl/externalpackages/dakota/NonDLocalReliability.C.5.2.patch	(revision 14273)
+@@ -1,9 +0,0 @@
+-2218a2219
+-> 	  // add sensitivity output to importance factors (jes, 8/06/10)
+-2223c2224,2227
+-< 	    << std::setw(width) << impFactor(j,i) << '\n';
+----
+-> 	    << std::setw(width) << impFactor(j,i)
+-> 	    << "  Sensitivity = "
+-> 	    << std::resetiosflags(std::ios::adjustfield)
+-> 	    << std::setw(width) << fnGradsMeanX(j,i) << '\n';
+Index: ../trunk-jpl/externalpackages/dakota/NonDUnilevelRBDO.C.4.2.patch
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/NonDUnilevelRBDO.C.4.2.patch	(revision 14272)
++++ ../trunk-jpl/externalpackages/dakota/NonDUnilevelRBDO.C.4.2.patch	(revision 14273)
+@@ -1,10 +0,0 @@
+-1052,1053c1052,1057
+-< 	  s << "  Importance Factor for variable " << setw(11)
+-< 	    << uv_labels[j].data() << " = " << impFactor[i][j] << '\n';
+----
+-> 	  // add sensitivity output to importance factors (jes, 8/06/10)
+-> 	  s << "  Importance Factor for variable " << setiosflags(ios::left)
+-> 	    << setw(11) << uv_labels[j].data() << " = "
+-> 	    << resetiosflags(ios::adjustfield) << setw(write_precision+7)
+-> 	    << impFactor[i][j] << "  Sensitivity = " << setw(write_precision+7)
+-> 	    << fnGradsMeanX(i, j) << '\n';
+Index: ../trunk-jpl/externalpackages/dakota/NonDUnilevelRBDO.C.5.2.patch
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/NonDUnilevelRBDO.C.5.2.patch	(revision 14272)
++++ ../trunk-jpl/externalpackages/dakota/NonDUnilevelRBDO.C.5.2.patch	(revision 14273)
+@@ -1,7 +0,0 @@
+-1046a1047
+-> 	  // add sensitivity output to importance factors (jes, 8/06/10)
+-1048c1049,1050
+-< 	    << uv_labels[j].data() << " = " << impFactor[i][j] << '\n';
+----
+-> 	    << uv_labels[j].data() << " = " << impFactor[i][j]
+-> 	    << "  Sensitivity = " << fnGradsMeanX(i,j) << '\n';
+Index: ../trunk-jpl/externalpackages/dakota/ParallelLibrary.C.4.2.patch
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/ParallelLibrary.C.4.2.patch	(revision 14272)
++++ ../trunk-jpl/externalpackages/dakota/ParallelLibrary.C.4.2.patch	(revision 14273)
+@@ -1,34 +0,0 @@
+-134a135
+->   initialized=0; //we run serially all the time!
+-165a167,197
+-> /** This constructor is provided for the Issm software, to run serial 
+->  * Dakota in a parallel MPI ring: */
+-> ParallelLibrary::ParallelLibrary(char* serial_mode): worldRank(0), worldSize(1),
+->   mpirunFlag(false), ownMPIFlag(false), dryRunFlag(false), dummyFlag(false),
+->   stdOutputFlag(false), stdErrorFlag(false), startClock(0),
+->   stdOutputFilename(NULL), stdErrorFilename(NULL), readRestartFilename(NULL),
+->   writeRestartFilename(NULL), stopRestartEvals(0),
+->   currPLIter(parallelLevels.end()), currPCIter(parallelConfigurations.end())
+-> {
+->   startClock   = clock();
+-> #ifdef DAKOTA_UTILIB
+->   utilib::exception_mngr::set_mode(utilib::exception_mngr::Abort);
+->   startCPUTime = CPUSeconds();       // see utilib/src/sys/seconds.cpp
+->   startWCTime  = WallClockSeconds(); // see utilib/src/sys/seconds.cpp
+-> #endif // DAKOTA_UTILIB
+-> 
+->   // do not initialize MPI.  Get worldRank/worldSize if available
+->   ParallelLevel pl;
+-> #ifdef HAVE_MPI // mpi available, we still don't want to run in parallel for  Dakota!
+->   pl.serverIntraComm = MPI_COMM_NULL;
+->   Cout << "Running Dakota in serial mode on CPU 0, inside an MPI ring.";
+-> #else // mpi not available
+->   pl.serverIntraComm = MPI_COMM_NULL;
+->   Cout << "Running Dakota in serial mode.\n";
+-> #endif // HAVE_MPI
+-> 
+->   parallelLevels.insert(pl);
+->   currPLIter = parallelLevels.begin();
+->   increment_parallel_configuration();
+-> }
+-> 
+Index: ../trunk-jpl/externalpackages/dakota/NIDRProblemDescDB.C.4.2.patch
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/NIDRProblemDescDB.C.4.2.patch	(revision 14272)
++++ ../trunk-jpl/externalpackages/dakota/NIDRProblemDescDB.C.4.2.patch	(revision 14273)
+@@ -1,4 +0,0 @@
+-95a96,98
+->   
+->   //close the input file
+->   fclose(nidrin);
+Index: ../trunk-jpl/externalpackages/dakota/ParallelLibrary.C.5.2.patch
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/ParallelLibrary.C.5.2.patch	(revision 14272)
++++ ../trunk-jpl/externalpackages/dakota/ParallelLibrary.C.5.2.patch	(revision 14273)
+@@ -1,36 +0,0 @@
+-178a179
+->   initialized=0; //we run serially all the time!
+-214a216,248
+-> /** This constructor is provided for the Issm software, to run serial
+->  * Dakota in a parallel MPI ring: */
+-> ParallelLibrary::ParallelLibrary(char* serial_mode):
+->   worldRank(0), worldSize(1), 
+->   mpirunFlag(false), ownMPIFlag(false), dummyFlag(false),
+->   stdOutputToFile(false), stdErrorToFile(false), checkFlag(false),
+->   preRunFlag(true), runFlag(true), postRunFlag(true), userModesFlag(false), 
+->   startClock(0), stopRestartEvals(0),
+->   currPLIter(parallelLevels.end()), currPCIter(parallelConfigurations.end())
+-> {
+->   startClock   = clock();
+-> #ifdef DAKOTA_UTILIB
+->   utilib::exception_mngr::set_mode(utilib::exception_mngr::Abort);
+->   startCPUTime = CPUSeconds();       // see utilib/src/sys/seconds.cpp
+->   startWCTime  = WallClockSeconds(); // see utilib/src/sys/seconds.cpp
+-> #endif // DAKOTA_UTILIB
+-> 
+->   // do not initialize MPI.  Get worldRank/worldSize if available
+->   ParallelLevel pl;
+-> #ifdef HAVE_MPI // mpi available, we still don't want to run in parallel for Dakota!
+->   pl.serverIntraComm = MPI_COMM_NULL;
+->   Cout << "Running Dakota 5.2 MPI executable in serial mode on CPU 0 for ISSM.";
+-> #else // mpi not available
+->   pl.serverIntraComm = MPI_COMM_NULL;
+->   Cout << "Running Dakota 5.2 serial executable in serial mode for ISSM.\n";
+-> #endif // HAVE_MPI
+-> 
+->   parallelLevels.push_back(pl);
+->   currPLIter = parallelLevels.begin();
+->   increment_parallel_configuration();
+-> }
+-> 
+-> 
+Index: ../trunk-jpl/externalpackages/dakota/NIDRProblemDescDB.C.5.2.patch
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/NIDRProblemDescDB.C.5.2.patch	(revision 14272)
++++ ../trunk-jpl/externalpackages/dakota/NIDRProblemDescDB.C.5.2.patch	(revision 14273)
+@@ -1,5 +0,0 @@
+-109a110,113
+-> 
+->   //close the input file
+->   fclose(nidrin);
+-> 
+Index: ../trunk-jpl/externalpackages/dakota/ParallelLibrary.H.4.2.patch
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/ParallelLibrary.H.4.2.patch	(revision 14272)
++++ ../trunk-jpl/externalpackages/dakota/ParallelLibrary.H.4.2.patch	(revision 14273)
+@@ -1,3 +0,0 @@
+-346a347,348
+->   /// library mode constructor, serial mode
+->   ParallelLibrary(char*  serial_mode);
+Index: ../trunk-jpl/externalpackages/dakota/ParallelLibrary.H.5.2.patch
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/ParallelLibrary.H.5.2.patch	(revision 14272)
++++ ../trunk-jpl/externalpackages/dakota/ParallelLibrary.H.5.2.patch	(revision 14273)
+@@ -1,3 +0,0 @@
+-358a359,360
+->   /// library mode constructor, serial mode (for the Issm software)
+->   ParallelLibrary(char*  serial_mode);
+Index: ../trunk-jpl/externalpackages/dakota/NonDSampling.C.4.2.patch
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/NonDSampling.C.4.2.patch	(revision 14272)
++++ ../trunk-jpl/externalpackages/dakota/NonDSampling.C.4.2.patch	(revision 14273)
+@@ -1,15 +0,0 @@
+-656a657,658
+-> 
+-> 
+-659a662,663
+->    
+-> 	return; //don't compute for now, too expensive.
+-705c709
+-<   //calculate simple rank correlation coeff
+----
+->   //calculate simple correlation coeff
+-710a715
+-> 
+-1071a1077,1078
+-> 
+-> 	return; //don't output for now.
+Index: ../trunk-jpl/externalpackages/dakota/NonDSampling.C.5.2.patch
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/NonDSampling.C.5.2.patch	(revision 14272)
++++ ../trunk-jpl/externalpackages/dakota/NonDSampling.C.5.2.patch	(revision 14273)
+@@ -1,14 +0,0 @@
+-438,439c438,440
+-<   if (!subIteratorFlag)
+-<     nonDSampCorr.compute_correlations(vars_samples, resp_samples);
+----
+-> //don't compute for now, too expensive.
+-> //  if (!subIteratorFlag)
+-> //    nonDSampCorr.compute_correlations(vars_samples, resp_samples);
+-894,895c895,897
+-<     nonDSampCorr.print_correlations(s, cv_labels, div_labels, drv_labels,
+-<       iteratedModel.response_labels());
+----
+-> //don't output for now.
+-> //    nonDSampCorr.print_correlations(s, cv_labels, div_labels, drv_labels,
+-> //      iteratedModel.response_labels());
+Index: ../trunk-jpl/externalpackages/dakota/install-4.2-macosx64.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/install-4.2-macosx64.sh	(revision 14272)
++++ ../trunk-jpl/externalpackages/dakota/install-4.2-macosx64.sh	(revision 14273)
+@@ -18,13 +18,13 @@
+ rm -rf Dakota
+ 
+ #Apply patches
+-patch src/src/ParallelLibrary.C ./ParallelLibrary.C.4.2.patch
+-patch src/src/ParallelLibrary.H ./ParallelLibrary.H.4.2.patch
+-patch src/src/NIDRProblemDescDB.C ./NIDRProblemDescDB.C.4.2.patch
+-patch src/src/NonDSampling.C ./NonDSampling.C.4.2.patch
+-patch src/src/NonDLocalReliability.C ./NonDLocalReliability.C.4.2.patch
+-patch src/src/NonDUnilevelRBDO.C ./NonDUnilevelRBDO.C.4.2.patch    #  source not even used?
+-#patch -R src/packages/Pecos/src/LHSDriver.cpp ./LHSDriver.cpp.4.2.patch
++patch src/src/ParallelLibrary.C configs/4.2/ParallelLibrary.C.patch
++patch src/src/ParallelLibrary.H configs/4.2/ParallelLibrary.H.patch
++patch src/src/NIDRProblemDescDB.C configs/4.2/NIDRProblemDescDB.C.patch
++patch src/src/NonDSampling.C configs/4.2/NonDSampling.C.patch
++patch src/src/NonDLocalReliability.C configs/4.2/NonDLocalReliability.C.patch
++patch src/src/NonDUnilevelRBDO.C configs/4.2/NonDUnilevelRBDO.C.patch    #  source not even used?
++#patch -R src/packages/Pecos/src/LHSDriver.cpp configs/4.2/LHSDriver.cpp.patch
+ 
+ #Configure dakota
+ cd src
+Index: ../trunk-jpl/externalpackages/dakota/install-4.2-pleiades-petsc3.3.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/install-4.2-pleiades-petsc3.3.sh	(revision 14272)
++++ ../trunk-jpl/externalpackages/dakota/install-4.2-pleiades-petsc3.3.sh	(revision 14273)
+@@ -18,13 +18,13 @@
+ rm -rf Dakota
+ 
+ #Apply patches
+-patch src/src/ParallelLibrary.C ./ParallelLibrary.C.4.2.patch
+-patch src/src/ParallelLibrary.H ./ParallelLibrary.H.4.2.patch
+-patch src/src/NIDRProblemDescDB.C ./NIDRProblemDescDB.C.4.2.patch
+-patch src/src/NonDSampling.C ./NonDSampling.C.4.2.patch
+-patch src/src/NonDLocalReliability.C ./NonDLocalReliability.C.4.2.patch
+-patch src/src/NonDUnilevelRBDO.C ./NonDUnilevelRBDO.C.4.2.patch    #  source not even used?
+-#patch -R src/packages/Pecos/src/LHSDriver.cpp ./LHSDriver.cpp.4.2.patch
++patch src/src/ParallelLibrary.C configs/4.2/ParallelLibrary.C.patch
++patch src/src/ParallelLibrary.H configs/4.2/ParallelLibrary.H.patch
++patch src/src/NIDRProblemDescDB.C configs/4.2/NIDRProblemDescDB.C.patch
++patch src/src/NonDSampling.C configs/4.2/NonDSampling.C.patch
++patch src/src/NonDLocalReliability.C configs/4.2/NonDLocalReliability.C.patch
++patch src/src/NonDUnilevelRBDO.C configs/4.2/NonDUnilevelRBDO.C.patch    #  source not even used?
++#patch -R src/packages/Pecos/src/LHSDriver.cpp configs/4.2/LHSDriver.cpp.patch
+ 
+ #Configure dakota
+ cd src
+Index: ../trunk-jpl/externalpackages/dakota/install-4.2-pleiades.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/install-4.2-pleiades.sh	(revision 14272)
++++ ../trunk-jpl/externalpackages/dakota/install-4.2-pleiades.sh	(revision 14273)
+@@ -18,13 +18,13 @@
+ rm -rf Dakota
+ 
+ #Apply patches
+-patch src/src/ParallelLibrary.C ./ParallelLibrary.C.4.2.patch
+-patch src/src/ParallelLibrary.H ./ParallelLibrary.H.4.2.patch
+-patch src/src/NIDRProblemDescDB.C ./NIDRProblemDescDB.C.4.2.patch
+-patch src/src/NonDSampling.C ./NonDSampling.C.4.2.patch
+-patch src/src/NonDLocalReliability.C ./NonDLocalReliability.C.4.2.patch
+-patch src/src/NonDUnilevelRBDO.C ./NonDUnilevelRBDO.C.4.2.patch    #  source not even used?
+-#patch -R src/packages/Pecos/src/LHSDriver.cpp ./LHSDriver.cpp.4.2.patch
++patch src/src/ParallelLibrary.C configs/4.2/ParallelLibrary.C.patch
++patch src/src/ParallelLibrary.H configs/4.2/ParallelLibrary.H.patch
++patch src/src/NIDRProblemDescDB.C configs/4.2/NIDRProblemDescDB.C.patch
++patch src/src/NonDSampling.C configs/4.2/NonDSampling.C.patch
++patch src/src/NonDLocalReliability.C configs/4.2/NonDLocalReliability.C.patch
++patch src/src/NonDUnilevelRBDO.C configs/4.2/NonDUnilevelRBDO.C.patch    #  source not even used?
++#patch -R src/packages/Pecos/src/LHSDriver.cpp configs/4.2/LHSDriver.cpp.patch
+ 
+ #Configure dakota
+ cd src
+Index: ../trunk-jpl/externalpackages/dakota/configs/4.2/ParallelLibrary.C.patch
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/configs/4.2/ParallelLibrary.C.patch	(revision 0)
++++ ../trunk-jpl/externalpackages/dakota/configs/4.2/ParallelLibrary.C.patch	(revision 14273)
+@@ -0,0 +1,34 @@
++134a135
++>   initialized=0; //we run serially all the time!
++165a167,197
++> /** This constructor is provided for the Issm software, to run serial 
++>  * Dakota in a parallel MPI ring: */
++> ParallelLibrary::ParallelLibrary(char* serial_mode): worldRank(0), worldSize(1),
++>   mpirunFlag(false), ownMPIFlag(false), dryRunFlag(false), dummyFlag(false),
++>   stdOutputFlag(false), stdErrorFlag(false), startClock(0),
++>   stdOutputFilename(NULL), stdErrorFilename(NULL), readRestartFilename(NULL),
++>   writeRestartFilename(NULL), stopRestartEvals(0),
++>   currPLIter(parallelLevels.end()), currPCIter(parallelConfigurations.end())
++> {
++>   startClock   = clock();
++> #ifdef DAKOTA_UTILIB
++>   utilib::exception_mngr::set_mode(utilib::exception_mngr::Abort);
++>   startCPUTime = CPUSeconds();       // see utilib/src/sys/seconds.cpp
++>   startWCTime  = WallClockSeconds(); // see utilib/src/sys/seconds.cpp
++> #endif // DAKOTA_UTILIB
++> 
++>   // do not initialize MPI.  Get worldRank/worldSize if available
++>   ParallelLevel pl;
++> #ifdef HAVE_MPI // mpi available, we still don't want to run in parallel for  Dakota!
++>   pl.serverIntraComm = MPI_COMM_NULL;
++>   Cout << "Running Dakota in serial mode on CPU 0, inside an MPI ring.";
++> #else // mpi not available
++>   pl.serverIntraComm = MPI_COMM_NULL;
++>   Cout << "Running Dakota in serial mode.\n";
++> #endif // HAVE_MPI
++> 
++>   parallelLevels.insert(pl);
++>   currPLIter = parallelLevels.begin();
++>   increment_parallel_configuration();
++> }
++> 
+Index: ../trunk-jpl/externalpackages/dakota/configs/4.2/LHSDriver.cpp.patch
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/configs/4.2/LHSDriver.cpp.patch	(revision 0)
++++ ../trunk-jpl/externalpackages/dakota/configs/4.2/LHSDriver.cpp.patch	(revision 14273)
+@@ -0,0 +1,8 @@
++766c766
++<   /*char output_string[32], message_string[32], title_string[32],
++---
++>   char output_string[32], message_string[32], title_string[32],
++802c802
++<   check_error(err_code, "lhs_files");*/
++---
++>   check_error(err_code, "lhs_files");
+Index: ../trunk-jpl/externalpackages/dakota/configs/4.2/NIDRProblemDescDB.C.patch
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/configs/4.2/NIDRProblemDescDB.C.patch	(revision 0)
++++ ../trunk-jpl/externalpackages/dakota/configs/4.2/NIDRProblemDescDB.C.patch	(revision 14273)
+@@ -0,0 +1,4 @@
++95a96,98
++>   
++>   //close the input file
++>   fclose(nidrin);
+Index: ../trunk-jpl/externalpackages/dakota/configs/4.2/NonDLocalReliability.C.patch
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/configs/4.2/NonDLocalReliability.C.patch	(revision 0)
++++ ../trunk-jpl/externalpackages/dakota/configs/4.2/NonDLocalReliability.C.patch	(revision 14273)
+@@ -0,0 +1,7 @@
++2276a2277
++> 	  // add sensitivity output to importance factors (jes, 8/06/10)
++2280c2281,2282
++< 	    << impFactor[i][j] << '\n';
++---
++> 	    << impFactor[i][j] << "  Sensitivity = " << setw(write_precision+7)
++> 	    << fnGradsMeanX(i, j) << '\n';
+Index: ../trunk-jpl/externalpackages/dakota/configs/4.2/ParallelLibrary.H.patch
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/configs/4.2/ParallelLibrary.H.patch	(revision 0)
++++ ../trunk-jpl/externalpackages/dakota/configs/4.2/ParallelLibrary.H.patch	(revision 14273)
+@@ -0,0 +1,3 @@
++346a347,348
++>   /// library mode constructor, serial mode
++>   ParallelLibrary(char*  serial_mode);
+Index: ../trunk-jpl/externalpackages/dakota/configs/4.2/NonDSampling.C.patch
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/configs/4.2/NonDSampling.C.patch	(revision 0)
++++ ../trunk-jpl/externalpackages/dakota/configs/4.2/NonDSampling.C.patch	(revision 14273)
+@@ -0,0 +1,15 @@
++656a657,658
++> 
++> 
++659a662,663
++>    
++> 	return; //don't compute for now, too expensive.
++705c709
++<   //calculate simple rank correlation coeff
++---
++>   //calculate simple correlation coeff
++710a715
++> 
++1071a1077,1078
++> 
++> 	return; //don't output for now.
+Index: ../trunk-jpl/externalpackages/dakota/configs/4.2/NonDUnilevelRBDO.C.patch
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/configs/4.2/NonDUnilevelRBDO.C.patch	(revision 0)
++++ ../trunk-jpl/externalpackages/dakota/configs/4.2/NonDUnilevelRBDO.C.patch	(revision 14273)
+@@ -0,0 +1,10 @@
++1052,1053c1052,1057
++< 	  s << "  Importance Factor for variable " << setw(11)
++< 	    << uv_labels[j].data() << " = " << impFactor[i][j] << '\n';
++---
++> 	  // add sensitivity output to importance factors (jes, 8/06/10)
++> 	  s << "  Importance Factor for variable " << setiosflags(ios::left)
++> 	    << setw(11) << uv_labels[j].data() << " = "
++> 	    << resetiosflags(ios::adjustfield) << setw(write_precision+7)
++> 	    << impFactor[i][j] << "  Sensitivity = " << setw(write_precision+7)
++> 	    << fnGradsMeanX(i, j) << '\n';
+Index: ../trunk-jpl/externalpackages/dakota/configs/5.2/ParallelLibrary.C.patch
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/configs/5.2/ParallelLibrary.C.patch	(revision 0)
++++ ../trunk-jpl/externalpackages/dakota/configs/5.2/ParallelLibrary.C.patch	(revision 14273)
+@@ -0,0 +1,36 @@
++178a179
++>   initialized=0; //we run serially all the time!
++214a216,248
++> /** This constructor is provided for the Issm software, to run serial
++>  * Dakota in a parallel MPI ring: */
++> ParallelLibrary::ParallelLibrary(char* serial_mode):
++>   worldRank(0), worldSize(1), 
++>   mpirunFlag(false), ownMPIFlag(false), dummyFlag(false),
++>   stdOutputToFile(false), stdErrorToFile(false), checkFlag(false),
++>   preRunFlag(true), runFlag(true), postRunFlag(true), userModesFlag(false), 
++>   startClock(0), stopRestartEvals(0),
++>   currPLIter(parallelLevels.end()), currPCIter(parallelConfigurations.end())
++> {
++>   startClock   = clock();
++> #ifdef DAKOTA_UTILIB
++>   utilib::exception_mngr::set_mode(utilib::exception_mngr::Abort);
++>   startCPUTime = CPUSeconds();       // see utilib/src/sys/seconds.cpp
++>   startWCTime  = WallClockSeconds(); // see utilib/src/sys/seconds.cpp
++> #endif // DAKOTA_UTILIB
++> 
++>   // do not initialize MPI.  Get worldRank/worldSize if available
++>   ParallelLevel pl;
++> #ifdef HAVE_MPI // mpi available, we still don't want to run in parallel for Dakota!
++>   pl.serverIntraComm = MPI_COMM_NULL;
++>   Cout << "Running Dakota 5.2 MPI executable in serial mode on CPU 0 for ISSM.";
++> #else // mpi not available
++>   pl.serverIntraComm = MPI_COMM_NULL;
++>   Cout << "Running Dakota 5.2 serial executable in serial mode for ISSM.\n";
++> #endif // HAVE_MPI
++> 
++>   parallelLevels.push_back(pl);
++>   currPLIter = parallelLevels.begin();
++>   increment_parallel_configuration();
++> }
++> 
++> 
+Index: ../trunk-jpl/externalpackages/dakota/configs/5.2/NIDRProblemDescDB.C.patch
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/configs/5.2/NIDRProblemDescDB.C.patch	(revision 0)
++++ ../trunk-jpl/externalpackages/dakota/configs/5.2/NIDRProblemDescDB.C.patch	(revision 14273)
+@@ -0,0 +1,5 @@
++109a110,113
++> 
++>   //close the input file
++>   fclose(nidrin);
++> 
+Index: ../trunk-jpl/externalpackages/dakota/configs/5.2/NonDLocalReliability.C.patch
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/configs/5.2/NonDLocalReliability.C.patch	(revision 0)
++++ ../trunk-jpl/externalpackages/dakota/configs/5.2/NonDLocalReliability.C.patch	(revision 14273)
+@@ -0,0 +1,9 @@
++2218a2219
++> 	  // add sensitivity output to importance factors (jes, 8/06/10)
++2223c2224,2227
++< 	    << std::setw(width) << impFactor(j,i) << '\n';
++---
++> 	    << std::setw(width) << impFactor(j,i)
++> 	    << "  Sensitivity = "
++> 	    << std::resetiosflags(std::ios::adjustfield)
++> 	    << std::setw(width) << fnGradsMeanX(j,i) << '\n';
+Index: ../trunk-jpl/externalpackages/dakota/configs/5.2/ParallelLibrary.H.patch
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/configs/5.2/ParallelLibrary.H.patch	(revision 0)
++++ ../trunk-jpl/externalpackages/dakota/configs/5.2/ParallelLibrary.H.patch	(revision 14273)
+@@ -0,0 +1,3 @@
++358a359,360
++>   /// library mode constructor, serial mode (for the Issm software)
++>   ParallelLibrary(char*  serial_mode);
+Index: ../trunk-jpl/externalpackages/dakota/configs/5.2/NonDSampling.C.patch
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/configs/5.2/NonDSampling.C.patch	(revision 0)
++++ ../trunk-jpl/externalpackages/dakota/configs/5.2/NonDSampling.C.patch	(revision 14273)
+@@ -0,0 +1,14 @@
++438,439c438,440
++<   if (!subIteratorFlag)
++<     nonDSampCorr.compute_correlations(vars_samples, resp_samples);
++---
++> //don't compute for now, too expensive.
++> //  if (!subIteratorFlag)
++> //    nonDSampCorr.compute_correlations(vars_samples, resp_samples);
++894,895c895,897
++<     nonDSampCorr.print_correlations(s, cv_labels, div_labels, drv_labels,
++<       iteratedModel.response_labels());
++---
++> //don't output for now.
++> //    nonDSampCorr.print_correlations(s, cv_labels, div_labels, drv_labels,
++> //      iteratedModel.response_labels());
+Index: ../trunk-jpl/externalpackages/dakota/configs/5.2/NonDUnilevelRBDO.C.patch
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/configs/5.2/NonDUnilevelRBDO.C.patch	(revision 0)
++++ ../trunk-jpl/externalpackages/dakota/configs/5.2/NonDUnilevelRBDO.C.patch	(revision 14273)
+@@ -0,0 +1,7 @@
++1046a1047
++> 	  // add sensitivity output to importance factors (jes, 8/06/10)
++1048c1049,1050
++< 	    << uv_labels[j].data() << " = " << impFactor[i][j] << '\n';
++---
++> 	    << uv_labels[j].data() << " = " << impFactor[i][j]
++> 	    << "  Sensitivity = " << fnGradsMeanX(i,j) << '\n';
+Index: ../trunk-jpl/externalpackages/dakota/configs/5.2/pecos_global_defs.hpp.patch
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/configs/5.2/pecos_global_defs.hpp.patch	(revision 0)
++++ ../trunk-jpl/externalpackages/dakota/configs/5.2/pecos_global_defs.hpp.patch	(revision 14273)
+@@ -0,0 +1,4 @@
++24a25
++> #ifndef PI
++25a27
++> #endif
+Index: ../trunk-jpl/externalpackages/dakota/install-4.2-altix64-cosmos.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/install-4.2-altix64-cosmos.sh	(revision 14272)
++++ ../trunk-jpl/externalpackages/dakota/install-4.2-altix64-cosmos.sh	(revision 14273)
+@@ -18,13 +18,13 @@
+ rm -rf Dakota
+ 
+ #Apply patches
+-patch src/src/ParallelLibrary.C ./ParallelLibrary.C.4.2.patch
+-patch src/src/ParallelLibrary.H ./ParallelLibrary.H.4.2.patch
+-patch src/src/NIDRProblemDescDB.C ./NIDRProblemDescDB.C.4.2.patch
+-patch src/src/NonDSampling.C ./NonDSampling.C.4.2.patch
+-patch src/src/NonDLocalReliability.C ./NonDLocalReliability.C.4.2.patch
+-patch src/src/NonDUnilevelRBDO.C ./NonDUnilevelRBDO.C.4.2.patch    #  source not even used?
+-#patch -R src/packages/Pecos/src/LHSDriver.cpp ./LHSDriver.cpp.4.2.patch
++patch src/src/ParallelLibrary.C configs/4.2/ParallelLibrary.C.patch
++patch src/src/ParallelLibrary.H configs/4.2/ParallelLibrary.H.patch
++patch src/src/NIDRProblemDescDB.C configs/4.2/NIDRProblemDescDB.C.patch
++patch src/src/NonDSampling.C configs/4.2/NonDSampling.C.patch
++patch src/src/NonDLocalReliability.C configs/4.2/NonDLocalReliability.C.patch
++patch src/src/NonDUnilevelRBDO.C configs/4.2/NonDUnilevelRBDO.C.patch    #  source not even used?
++#patch -R src/packages/Pecos/src/LHSDriver.cpp configs/4.2/LHSDriver.cpp.patch
+ 
+ #Configure dakota
+ cd src
+Index: ../trunk-jpl/externalpackages/dakota/install-4.2-linux64-astrid.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/install-4.2-linux64-astrid.sh	(revision 14272)
++++ ../trunk-jpl/externalpackages/dakota/install-4.2-linux64-astrid.sh	(revision 14273)
+@@ -18,13 +18,13 @@
+ rm -rf Dakota
+ 
+ #Apply patches
+-patch src/src/ParallelLibrary.C ./ParallelLibrary.C.4.2.patch
+-patch src/src/ParallelLibrary.H ./ParallelLibrary.H.4.2.patch
+-patch src/src/NIDRProblemDescDB.C ./NIDRProblemDescDB.C.4.2.patch
+-patch src/src/NonDSampling.C ./NonDSampling.C.4.2.patch
+-patch src/src/NonDLocalReliability.C ./NonDLocalReliability.C.4.2.patch
+-patch src/src/NonDUnilevelRBDO.C ./NonDUnilevelRBDO.C.4.2.patch    #  source not even used?
+-#patch -R src/packages/Pecos/src/LHSDriver.cpp ./LHSDriver.cpp.4.2.patch
++patch src/src/ParallelLibrary.C configs/4.2/ParallelLibrary.C.patch
++patch src/src/ParallelLibrary.H configs/4.2/ParallelLibrary.H.patch
++patch src/src/NIDRProblemDescDB.C configs/4.2/NIDRProblemDescDB.C.patch
++patch src/src/NonDSampling.C configs/4.2/NonDSampling.C.patch
++patch src/src/NonDLocalReliability.C configs/4.2/NonDLocalReliability.C.patch
++patch src/src/NonDUnilevelRBDO.C configs/4.2/NonDUnilevelRBDO.C.patch    #  source not even used?
++#patch -R src/packages/Pecos/src/LHSDriver.cpp configs/4.2/LHSDriver.cpp.patch
+ 
+ #Configure dakota
+ cd src
+Index: ../trunk-jpl/externalpackages/dakota/install-4.2-linux64-cloud.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/install-4.2-linux64-cloud.sh	(revision 14272)
++++ ../trunk-jpl/externalpackages/dakota/install-4.2-linux64-cloud.sh	(revision 14273)
+@@ -18,13 +18,13 @@
+ rm -rf Dakota
+ 
+ #Apply patches
+-patch src/src/ParallelLibrary.C ./ParallelLibrary.C.4.2.patch
+-patch src/src/ParallelLibrary.H ./ParallelLibrary.H.4.2.patch
+-patch src/src/NIDRProblemDescDB.C ./NIDRProblemDescDB.C.4.2.patch
+-patch src/src/NonDSampling.C ./NonDSampling.C.4.2.patch
+-patch src/src/NonDLocalReliability.C ./NonDLocalReliability.C.4.2.patch
+-patch src/src/NonDUnilevelRBDO.C ./NonDUnilevelRBDO.C.4.2.patch    #  source not even used?
+-#patch -R src/packages/Pecos/src/LHSDriver.cpp ./LHSDriver.cpp.4.2.patch
++patch src/src/ParallelLibrary.C configs/4.2/ParallelLibrary.C.patch
++patch src/src/ParallelLibrary.H configs/4.2/ParallelLibrary.H.patch
++patch src/src/NIDRProblemDescDB.C configs/4.2/NIDRProblemDescDB.C.patch
++patch src/src/NonDSampling.C configs/4.2/NonDSampling.C.patch
++patch src/src/NonDLocalReliability.C configs/4.2/NonDLocalReliability.C.patch
++patch src/src/NonDUnilevelRBDO.C configs/4.2/NonDUnilevelRBDO.C.patch    #  source not even used?
++#patch -R src/packages/Pecos/src/LHSDriver.cpp configs/4.2/LHSDriver.cpp.patch
+ 
+ #Configure dakota
+ cd src
+Index: ../trunk-jpl/externalpackages/dakota/install-4.2-linux64-murdo.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/install-4.2-linux64-murdo.sh	(revision 14272)
++++ ../trunk-jpl/externalpackages/dakota/install-4.2-linux64-murdo.sh	(revision 14273)
+@@ -18,13 +18,13 @@
+ rm -rf Dakota
+ 
+ #Apply patches
+-patch src/src/ParallelLibrary.C ./ParallelLibrary.C.4.2.patch
+-patch src/src/ParallelLibrary.H ./ParallelLibrary.H.4.2.patch
+-patch src/src/NIDRProblemDescDB.C ./NIDRProblemDescDB.C.4.2.patch
+-patch src/src/NonDSampling.C ./NonDSampling.C.4.2.patch
+-patch src/src/NonDLocalReliability.C ./NonDLocalReliability.C.4.2.patch
+-patch src/src/NonDUnilevelRBDO.C ./NonDUnilevelRBDO.C.4.2.patch    #  source not even used?
+-#patch -R src/packages/Pecos/src/LHSDriver.cpp ./LHSDriver.cpp.4.2.patch
++patch src/src/ParallelLibrary.C configs/4.2/ParallelLibrary.C.patch
++patch src/src/ParallelLibrary.H configs/4.2/ParallelLibrary.H.patch
++patch src/src/NIDRProblemDescDB.C configs/4.2/NIDRProblemDescDB.C.patch
++patch src/src/NonDSampling.C configs/4.2/NonDSampling.C.patch
++patch src/src/NonDLocalReliability.C configs/4.2/NonDLocalReliability.C.patch
++patch src/src/NonDUnilevelRBDO.C configs/4.2/NonDUnilevelRBDO.C.patch    #  source not even used?
++#patch -R src/packages/Pecos/src/LHSDriver.cpp configs/4.2/LHSDriver.cpp.patch
+ 
+ #Configure dakota
+ cd src
+Index: ../trunk-jpl/externalpackages/dakota/install-4.2-discover.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/install-4.2-discover.sh	(revision 14272)
++++ ../trunk-jpl/externalpackages/dakota/install-4.2-discover.sh	(revision 14273)
+@@ -18,13 +18,13 @@
+ rm -rf Dakota
+ 
+ #Apply patches
+-patch src/src/ParallelLibrary.C ./ParallelLibrary.C.4.2.patch
+-patch src/src/ParallelLibrary.H ./ParallelLibrary.H.4.2.patch
+-patch src/src/NIDRProblemDescDB.C ./NIDRProblemDescDB.C.4.2.patch
+-patch src/src/NonDSampling.C ./NonDSampling.C.4.2.patch
+-patch src/src/NonDLocalReliability.C ./NonDLocalReliability.C.4.2.patch
+-patch src/src/NonDUnilevelRBDO.C ./NonDUnilevelRBDO.C.4.2.patch    #  source not even used?
+-#patch -R src/packages/Pecos/src/LHSDriver.cpp ./LHSDriver.cpp.4.2.patch
++patch src/src/ParallelLibrary.C configs/4.2/ParallelLibrary.C.patch
++patch src/src/ParallelLibrary.H configs/4.2/ParallelLibrary.H.patch
++patch src/src/NIDRProblemDescDB.C configs/4.2/NIDRProblemDescDB.C.patch
++patch src/src/NonDSampling.C configs/4.2/NonDSampling.C.patch
++patch src/src/NonDLocalReliability.C configs/4.2/NonDLocalReliability.C.patch
++patch src/src/NonDUnilevelRBDO.C configs/4.2/NonDUnilevelRBDO.C.patch    #  source not even used?
++#patch -R src/packages/Pecos/src/LHSDriver.cpp configs/4.2/LHSDriver.cpp.patch
+ 
+ #Configure dakota
+ cd src
+Index: ../trunk-jpl/externalpackages/dakota/install-5.2-linux64-astrid.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/install-5.2-linux64-astrid.sh	(revision 14272)
++++ ../trunk-jpl/externalpackages/dakota/install-5.2-linux64-astrid.sh	(revision 14273)
+@@ -18,13 +18,13 @@
+ rm -rf Dakota
+ 
+ #Apply patches
+-patch src/src/ParallelLibrary.C ./ParallelLibrary.C.5.2.patch
+-patch src/src/ParallelLibrary.H ./ParallelLibrary.H.5.2.patch
+-#patch src/src/NIDRProblemDescDB.C ./NIDRProblemDescDB.C.5.2.patch    #  causes segfault in 5.2
+-patch src/src/NonDSampling.C ./NonDSampling.C.5.2.patch
+-patch src/src/NonDLocalReliability.C ./NonDLocalReliability.C.5.2.patch
+-patch src/src/NonDUnilevelRBDO.C ./NonDUnilevelRBDO.C.5.2.patch    #  source not even used?
+-patch src/packages/pecos/src/pecos_global_defs.hpp ./pecos_global_defs.hpp.5.2.patch
++patch src/src/ParallelLibrary.C configs/5.2/ParallelLibrary.C.patch
++patch src/src/ParallelLibrary.H configs/5.2/ParallelLibrary.H.patch
++#patch src/src/NIDRProblemDescDB.C configs/5.2/NIDRProblemDescDB.C.patch    #  causes segfault in 5.2
++patch src/src/NonDSampling.C configs/5.2/NonDSampling.C.patch
++patch src/src/NonDLocalReliability.C configs/5.2/NonDLocalReliability.C.patch
++patch src/src/NonDUnilevelRBDO.C configs/5.2/NonDUnilevelRBDO.C.patch    #  source not even used?
++patch src/packages/pecos/src/pecos_global_defs.hpp configs/5.2/pecos_global_defs.hpp.patch
+ 
+ #Configure dakota
+ cd src
Index: /issm/oecreview/Archive/14064-14311/ISSM-14273-14274.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14273-14274.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14273-14274.diff	(revision 14312)
@@ -0,0 +1,13 @@
+Index: ../trunk-jpl/externalpackages/dakota/install-5.2-linux64-astrid.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/install-5.2-linux64-astrid.sh	(revision 14273)
++++ ../trunk-jpl/externalpackages/dakota/install-5.2-linux64-astrid.sh	(revision 14274)
+@@ -8,7 +8,7 @@
+ mkdir src install 
+ 
+ #Download from ISSM server
+-#$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/Dakota_5_2.src.tar.gz' 'Dakota_5_2.src.tar.gz'
++$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/Dakota_5_2.src.tar.gz' 'Dakota_5_2.src.tar.gz'
+ 
+ #Untar 
+ tar -zxvf Dakota_5_2.src.tar.gz
Index: /issm/oecreview/Archive/14064-14311/ISSM-14274-14275.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14274-14275.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14274-14275.diff	(revision 14312)
@@ -0,0 +1,13 @@
+Index: ../trunk-jpl/src/m/plot/applyoptions.py
+===================================================================
+--- ../trunk-jpl/src/m/plot/applyoptions.py	(revision 14274)
++++ ../trunk-jpl/src/m/plot/applyoptions.py	(revision 14275)
+@@ -157,7 +157,7 @@
+ 	#wrapping
+ 
+ 	#colorbar {{{
+-	if 'on' in options.getfieldvalue('colorbar','off'):
++	if options.getfieldvalue('colorbar','off')==1:
+ 		cb=p.colorbar()
+ 		cb.locator=MaxNLocator(nbins=5) # default 5 ticks
+ 		cb.update_ticks()
Index: /issm/oecreview/Archive/14064-14311/ISSM-14275-14276.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14275-14276.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14275-14276.diff	(revision 14312)
@@ -0,0 +1,20 @@
+Index: ../trunk-jpl/src/m/plot/applyoptions.py
+===================================================================
+--- ../trunk-jpl/src/m/plot/applyoptions.py	(revision 14275)
++++ ../trunk-jpl/src/m/plot/applyoptions.py	(revision 14276)
+@@ -142,7 +142,14 @@
+ 
+ 	#ShowBasins
+ 
+-	#Caxis
++	#clim {{{
++	if options.exist('clim'):
++		lims=options.getfieldvalue('clim')
++		if len(lims)!=2:
++			print 'WARNING: clim should be passed as a list of length 2'
++		else:
++			p.clim(lims[0],lims[1])
++	#}}}
+ 
+ 	#shading
+ 
Index: /issm/oecreview/Archive/14064-14311/ISSM-14276-14277.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14276-14277.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14276-14277.diff	(revision 14312)
@@ -0,0 +1,52 @@
+Index: ../trunk-jpl/m4/issm_options.m4
+===================================================================
+--- ../trunk-jpl/m4/issm_options.m4	(revision 14276)
++++ ../trunk-jpl/m4/issm_options.m4	(revision 14277)
+@@ -181,21 +181,36 @@
+ 		AC_DEFINE_UNQUOTED([DAKOTA_VERSION],"$DAKOTA_VERSION",[Dakota version number])
+ 		case "${host_os}" in
+ 			*cygwin*)
+-			DAKOTALIB="-L$DAKOTA_ROOT/lib -ldakota -lteuchos -lpecos -lfftw3 -llhs -levidence -lsurfpack -lconmin -lddace -lfsudace -ljega -lcport -lopt -lpsuade -lnewmat -lncsuopt -lgsl -lquadrature -lcoliny -lcolin -lpebbl -lutilib -l3po -lnappspack -lappspack -lconveyor -lshared -lcdd -lamplsolver"
++				if      test x$DAKOTA_VERSION = x4.2; then
++					DAKOTALIB="-L$DAKOTA_ROOT/lib -ldakota -lteuchos -lpecos -lfftw3 -llhs -levidence -lsurfpack -lconmin -lddace -lfsudace -ljega -lcport -lopt -lpsuade -lnewmat -lncsuopt -lgsl -lquadrature -lcoliny -lcolin -lpebbl -lutilib -l3po -lnappspack -lappspack -lconveyor -lshared -lcdd -lamplsolver"
++				else if test x$DAKOTA_VERSION = x5.1 || test x$DAKOTA_VERSION = x5.2; then
++					DAKOTALIB="-L$DAKOTA_ROOT/lib -ldakota -lteuchos -lpecos -llhs -lsparsegrid -lsurfpack -lconmin -lddace -lfsudace -ljega -lcport -loptpp -lpsuade -lncsuopt -lcolin -linterfaces -lmomh -lscolib -lpebbl -ltinyxml -lutilib -l3po -lhopspack -lnidr -lamplsolver -lboost_signals -lboost_regex -lboost_filesystem -lboost_system"
++				else
++					AC_MSG_ERROR([Dakota version not found or version ($DAKOTA_VERSION) not supported!]);
++				fi
++				fi
+ 			;;
+ 			*linux*)
+-			if      test x$DAKOTA_VERSION = x4.2; then
+-				DAKOTALIB="-L$DAKOTA_ROOT/lib -ldakota -lteuchos -lpecos -lfftw3 -llhs -levidence -lsurfpack -lconmin -lddace -lfsudace -ljega -lcport -lopt -lpsuade -lnewmat -lncsuopt -lgsl -lquadrature -lcoliny -lcolin -lpebbl -lutilib -l3po -lnappspack -lappspack -lconveyor -lshared -lcdd -lamplsolver"
+-			else if test x$DAKOTA_VERSION = x5.1 || test x$DAKOTA_VERSION = x5.2; then
+-				DAKOTALIB="-L$DAKOTA_ROOT/lib -ldakota -lteuchos -lpecos -llhs -lsparsegrid -lsurfpack -lconmin -lddace -lfsudace -ljega -lcport -loptpp -lpsuade -lncsuopt -lcolin -linterfaces -lmomh -lscolib -lpebbl -ltinyxml -lutilib -l3po -lhopspack -lnidr -lamplsolver -lboost_signals -lboost_regex -lboost_filesystem -lboost_system"
+-			else
+-				AC_MSG_ERROR([Dakota version not found or version ($DAKOTA_VERSION) not supported!]);
+-			fi
+-			fi
++				if      test x$DAKOTA_VERSION = x4.2; then
++					DAKOTALIB="-L$DAKOTA_ROOT/lib -ldakota -lteuchos -lpecos -lfftw3 -llhs -levidence -lsurfpack -lconmin -lddace -lfsudace -ljega -lcport -lopt -lpsuade -lnewmat -lncsuopt -lgsl -lquadrature -lcoliny -lcolin -lpebbl -lutilib -l3po -lnappspack -lappspack -lconveyor -lshared -lcdd -lamplsolver"
++				else if test x$DAKOTA_VERSION = x5.1 || test x$DAKOTA_VERSION = x5.2; then
++					DAKOTALIB="-L$DAKOTA_ROOT/lib -ldakota -lteuchos -lpecos -llhs -lsparsegrid -lsurfpack -lconmin -lddace -lfsudace -ljega -lcport -loptpp -lpsuade -lncsuopt -lcolin -linterfaces -lmomh -lscolib -lpebbl -ltinyxml -lutilib -l3po -lhopspack -lnidr -lamplsolver -lboost_signals -lboost_regex -lboost_filesystem -lboost_system"
++				else
++					AC_MSG_ERROR([Dakota version not found or version ($DAKOTA_VERSION) not supported!]);
++				fi
++				fi
+ 			;;
+ 			*darwin*)
+-			  DAKOTALIB="-L$DAKOTA_ROOT/lib -ldakota -lteuchos -lpecos -lfftw3 -llhs -levidence -lsurfpack -lconmin -lddace -lfsudace -ljega -lcport -lopt -lpsuade -lnewmat -lncsuopt -lgsl -lquadrature -lcoliny -lcolin -lpebbl -lutilib -l3po -lnappspack -lappspack -lconveyor -lshared -lcdd -lamplsolver" 
+-			  dnl DAKOTALIB+= "-lgslcblas -L/usr/lib -lblas -llapack"
++				if      test x$DAKOTA_VERSION = x4.2; then
++					DAKOTALIB="-L$DAKOTA_ROOT/lib -ldakota -lteuchos -lpecos -lfftw3 -llhs -levidence -lsurfpack -lconmin -lddace -lfsudace -ljega -lcport -lopt -lpsuade -lnewmat -lncsuopt -lgsl -lquadrature -lcoliny -lcolin -lpebbl -lutilib -l3po -lnappspack -lappspack -lconveyor -lshared -lcdd -lamplsolver" 
++					dnl DAKOTALIB+= "-lgslcblas -L/usr/lib -lblas -llapack"
++				else if test x$DAKOTA_VERSION = x5.1 || test x$DAKOTA_VERSION = x5.2; then
++					DAKOTALIB="-L$DAKOTA_ROOT/lib -ldakota -lteuchos -lpecos -llhs -lsparsegrid -lsurfpack -lconmin -lddace -lfsudace -ljega -lcport -loptpp -lpsuade -lncsuopt -lcolin -linterfaces -lmomh -lscolib -lpebbl -ltinyxml -lutilib -l3po -lhopspack -lnidr -lamplsolver -lboost_signals -lboost_regex -lboost_filesystem -lboost_system"
++					dnl DAKOTALIB+= "-lgslcblas -L/usr/lib -lblas -llapack"
++				else
++					AC_MSG_ERROR([Dakota version not found or version ($DAKOTA_VERSION) not supported!]);
++				fi
++				fi
+ 			;;
+ 		esac
+ 		AC_DEFINE([_HAVE_DAKOTA_],[1],[with Dakota in ISSM src])
Index: /issm/oecreview/Archive/14064-14311/ISSM-14277-14278.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14277-14278.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14277-14278.diff	(revision 14312)
@@ -0,0 +1,63 @@
+Index: ../trunk-jpl/src/m/classes/organizer.m
+===================================================================
+--- ../trunk-jpl/src/m/classes/organizer.m	(revision 14277)
++++ ../trunk-jpl/src/m/classes/organizer.m	(revision 14278)
+@@ -111,6 +111,32 @@
+ 				error(['Could not find ' path ]);
+ 			end
+ 		end%}}}
++		function md=loaddata(org,string),% {{{
++
++			%Get model path
++			if ~ischar(string), error('argument provided is not a string'); end
++			path=[org.repository '/' org.prefix string];
++
++			%figure out if the data is there, otherwise, we have to use the default path supplied by user.
++			if exist(path,'file') | exist([path '.mat'],'file'),
++				evalin('caller',['load -mat ' path]);
++				return;
++			end
++
++			%If we are here, the data has not been found. Try trunk prefix if provided
++			if ~isempty(org.trunkprefix),
++				path2=[org.repository '/' org.trunkprefix string];
++				if ~exist(path2,'file'),
++					error(['Could find neither ' path ', nor ' path2]);
++				else
++					disp(['--> Branching ' org.prefix ' from trunk ' org.trunkprefix]);
++					evalin('caller',['load -mat ' path2]);
++					return;
++				end
++			else
++				error(['Could not find ' path ]);
++			end
++		end%}}}
+ 		function bool=perform(org,string) % {{{
+ 
+ 			bool=false;
+@@ -158,5 +184,25 @@
+ 			%save model
+ 			save(name,'md','-v7.3');
+ 		end%}}}
++		function savedata(org,varargin) % {{{
++
++			%check
++			if (org.currentstep==0), error('Cannot save data because organizer (org) is empty! Make sure you did not skip any perform call'); end
++			if (org.currentstep>length(org.steps)), error('Cannot save data because organizer (org) is not up to date!'); end
++
++			name=[org.repository '/' org.prefix org.steps(org.currentstep).string ];
++			disp(['saving data in: ' name]);
++
++			%check that md is a model
++			if (org.currentstep>length(org.steps)), error(['organizer error message: element with id ' num2str(org.currentstep) ' not found']); end
++
++			%list of variable names: 
++			variables='';
++			for i=2:nargin, 
++				variables=[variables ',' '''' inputname(i) ''''];
++				eval([inputname(i) '= varargin{' num2str(i-1) '};']);
++			end
++			eval(['save(''' name '''' variables ',''-v7.3'');']);
++		end%}}}
+ 	end
+ end
Index: /issm/oecreview/Archive/14064-14311/ISSM-14278-14279.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14278-14279.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14278-14279.diff	(revision 14312)
@@ -0,0 +1,814 @@
+Index: ../trunk-jpl/src/c/modules/Shp2Expx/Shp2Expx.cpp
+===================================================================
+--- ../trunk-jpl/src/c/modules/Shp2Expx/Shp2Expx.cpp	(revision 0)
++++ ../trunk-jpl/src/c/modules/Shp2Expx/Shp2Expx.cpp	(revision 14279)
+@@ -0,0 +1,553 @@
++/*!\file Shp2Expx
++ * \brief shp to exp conversion routines.
++ */
++
++#include "./Shp2Expx.h"
++#include "../../shared/shared.h"
++#include "../../include/include.h"
++#include "../../io/io.h"
++#include "../../toolkits/toolkits.h"
++#include "../../EnumDefinitions/EnumDefinitions.h"
++#include "../modules.h"
++
++int Shp2Expx(char* filshp,char* filexp,
++			 int sgn){
++
++	#ifdef _HAVE_SHAPELIB_ //only works if Shapelib library has been compiled in.
++
++	double  cm,sp;
++
++	if (sgn)
++		Xy2lldef(&cm,&sp,sgn);
++
++	return(Shp2Expx(filshp,filexp,
++					sgn,cm,sp));
++
++	#else //ifdef _HAVE_SHAPELIB_
++	return 0;
++	#endif
++}
++
++int Shp2Expx(char* filshp,char* filexp,
++			 int sgn,double cm,double sp){
++
++	#ifdef _HAVE_SHAPELIB_ //only works if Shapelib library has been compiled in.
++
++	int     i,j,k,iret=0;
++	int     lwidth=1;
++	double  popac=0.50;
++	int     nshape,ncoord;
++	double  cpsum;
++	int     *pstype = NULL, *pnpart=NULL,**ppstrt=NULL,**pptype=NULL,*pnvert=NULL;
++	double **pshapx = NULL,**pshapy=NULL,**pshapz=NULL,**pshapm=NULL;
++	double  *lat    = NULL, *lon=NULL;
++
++	SHPHandle   hSHP;
++	int     nShapeType, nEntities, iPart, bValidate = 0,nInvalidCount=0;
++	const char  *pszPlus;
++	double  adfMinBound[4], adfMaxBound[4];
++
++	char    indent[81]="";
++	KML_Folder        *kfold  = NULL;
++	KML_Placemark     *kplace = NULL;
++	KML_MultiGeometry *kmulti = NULL;
++	KML_Polygon       *kpoly  = NULL;
++	KML_LinearRing    *kring  = NULL;
++	KML_LineString    *kline  = NULL;
++	KML_Point         *kpoint = NULL;
++	FILE              *fid    = NULL;
++
++	clock_t clock0,clock1;
++	time_t  time0, time1;
++
++	clock0=clock();
++	time0 =time(NULL);
++	_pprintString_("\nShp2Expx Module -- " << ctime(&time0));
++
++/*  note that much of the following code is taken from shpdump.c in shapelib.  */
++
++/*  open shp/shx files  */
++
++	hSHP = SHPOpen( filshp, "rb" );
++	if (!hSHP) _error_("Error opening shp/shx files.");
++
++/*  read header and print out file bounds  */
++
++	SHPGetInfo( hSHP, &nEntities, &nShapeType, adfMinBound, adfMaxBound );
++
++	printf( "Shapefile Type: %s   # of Shapes: %d\n\n",
++			SHPTypeName( nShapeType ), nEntities );
++
++	printf( "File Bounds: (%12.3f,%12.3f,%g,%g)\n"
++			"         to  (%12.3f,%12.3f,%g,%g)\n",
++			adfMinBound[0],
++			adfMinBound[1],
++			adfMinBound[2],
++			adfMinBound[3],
++			adfMaxBound[0],
++			adfMaxBound[1],
++			adfMaxBound[2],
++			adfMaxBound[3] );
++
++	nshape=nEntities;
++	pstype=xNew<int>(nshape);
++	pnpart=xNew<int>(nshape);
++	ppstrt=xNew<int*>(nshape);
++	pptype=xNew<int*>(nshape);
++	pnvert=xNew<int>(nshape);
++	pshapx=xNew<double*>(nshape);
++	pshapy=xNew<double*>(nshape);
++	pshapz=xNew<double*>(nshape);
++	pshapm=xNew<double*>(nshape);
++
++/*  loop over the list of shapes  */
++
++	for( i = 0; i < nEntities; i++ )
++	{
++//	int     j;
++		SHPObject   *psShape;
++
++	psShape = SHPReadObject( hSHP, i );
++
++	printf( "\nShape:%d (%s)  nVertices=%d, nParts=%d\n"
++				"  Bounds:(%12.3f,%12.3f, %g, %g)\n"
++				"      to (%12.3f,%12.3f, %g, %g)\n",
++			i, SHPTypeName(psShape->nSHPType),
++				psShape->nVertices, psShape->nParts,
++				psShape->dfXMin, psShape->dfYMin,
++				psShape->dfZMin, psShape->dfMMin,
++				psShape->dfXMax, psShape->dfYMax,
++				psShape->dfZMax, psShape->dfMMax );
++
++	pstype[i]=psShape->nSHPType;
++	pnpart[i]=psShape->nParts;
++	if (pnpart[i]) {
++		ppstrt[i]=xNew<int>(pnpart[i]);
++		pptype[i]=xNew<int>(pnpart[i]);
++	}
++	else {
++		ppstrt[i]=NULL;
++		pptype[i]=NULL;
++	}
++	pnvert[i]=psShape->nVertices;
++	if (pnvert[i]) {
++		pshapx[i]=xNew<double>(pnvert[i]);
++		pshapy[i]=xNew<double>(pnvert[i]);
++		pshapz[i]=xNew<double>(pnvert[i]);
++		pshapm[i]=xNew<double>(pnvert[i]);
++	}
++	else {
++		pshapx[i]=NULL;
++		pshapy[i]=NULL;
++		pshapz[i]=NULL;
++		pshapm[i]=NULL;
++	}
++
++	for( j = 0, iPart = 1; j < psShape->nVertices; j++ )
++	{
++			const char  *pszPartType = "";
++
++			if( j == 0 && psShape->nParts > 0 )
++			{
++				pszPartType = SHPPartTypeName( psShape->panPartType[0] );
++				ppstrt[i][0]=psShape->panPartStart[0];
++				pptype[i][0]=psShape->panPartType[0];
++			}
++
++		if( iPart < psShape->nParts
++				&& psShape->panPartStart[iPart] == j )
++		{
++				pszPartType = SHPPartTypeName( psShape->panPartType[iPart] );
++				ppstrt[i][iPart]=psShape->panPartStart[iPart];
++				pptype[i][iPart]=psShape->panPartType[iPart];
++		iPart++;
++		pszPlus = "+";
++		}
++		else
++			pszPlus = " ";
++
++//		printf("   %s (%12.3f,%12.3f, %g, %g) %s \n",
++//				   pszPlus,
++//				   psShape->padfX[j],
++//				   psShape->padfY[j],
++//				   psShape->padfZ[j],
++//				   psShape->padfM[j],
++//				   pszPartType );
++
++		pshapx[i][j]=psShape->padfX[j];
++		pshapy[i][j]=psShape->padfY[j];
++		pshapz[i][j]=psShape->padfZ[j];
++		pshapm[i][j]=psShape->padfM[j];
++	}
++
++		if( bValidate )
++		{
++			int nAltered = SHPRewindObject( hSHP, psShape );
++
++			if( nAltered > 0 )
++			{
++				printf( "  %d rings wound in the wrong direction.\n",
++						nAltered );
++				nInvalidCount++;
++			}
++		}
++
++		SHPDestroyObject( psShape );
++	}
++
++/*  close shp/shx files  */
++
++	SHPClose( hSHP );
++
++/*  construct kml folder for shapes  */
++
++	kfold =new KML_Folder();
++	sprintf(kfold->name      ,"Shapefile: %s  Type: %s  nShapes: %d",
++			filshp, SHPTypeName( nShapeType ), nEntities );
++	kfold->open      =1;
++
++/*  loop over the list of shapes  */
++
++	for (i=0; i<nshape; i++) {
++
++/*  null type  */
++
++		if      (pstype[i] == SHPT_NULL) {
++			;
++		}
++
++/*  point types  */
++
++		else if (pstype[i] == SHPT_POINT ||
++			  	 pstype[i] == SHPT_POINTZ ||
++			 	 pstype[i] == SHPT_POINTM) {
++			kplace=new KML_Placemark();
++
++			sprintf(kplace->name      ,"Shape:%d (%s)  nVertices=%d, nParts=%d",
++					i,SHPTypeName(pstype[i]),pnvert[i],pnpart[i]);
++			kplace->visibility=true;
++			sprintf(kplace->styleurl  ,"#RandomLineEmptyPoly");
++
++			if (pnpart[i] > 0)
++				_printf_(true,"Warning -- Shape %d of type \"%s\" should not have %d > 0 parts.\n",
++						 i,SHPTypeName( pstype[i] ),pnpart[i]);
++			if (pnvert[i] > 1)
++				_printf_(true,"Warning -- Shape %d of type \"%s\" should not have %d > 1 vertices.\n",
++						 i,SHPTypeName( pstype[i] ),pnvert[i]);
++
++			kpoint=new KML_Point();
++
++			lat=xNew<double>(pnvert[i]);
++			lon=xNew<double>(pnvert[i]);
++			if (sgn) {
++				Xy2llx(lat,lon,pshapx[i],pshapy[i],pnvert[i],sgn,cm,sp);
++			}
++			else  {
++				memcpy(lon,pshapx[i],pnvert[i]*sizeof(double));
++				memcpy(lat,pshapy[i],pnvert[i]*sizeof(double));
++			}
++
++			kpoint->coords[0]=lon      [0];
++			kpoint->coords[1]=lat      [0];
++			kpoint->coords[2]=pshapz[i][0];
++
++			xDelete<double>(lon);
++			xDelete<double>(lat);
++
++			(kplace->geometry  )->AddObject((Object*)kpoint);
++			kpoint=NULL;
++			(kfold ->feature   )->AddObject((Object*)kplace);
++			kplace=NULL;
++		}
++
++/*  polyline types  */
++
++		else if (pstype[i] == SHPT_ARC ||
++				 pstype[i] == SHPT_ARCZ ||
++				 pstype[i] == SHPT_ARCM) {
++			kplace=new KML_Placemark();
++
++			sprintf(kplace->name      ,"Shape:%d (%s)  nVertices=%d, nParts=%d",
++					i,SHPTypeName(pstype[i]),pnvert[i],pnpart[i]);
++			kplace->visibility=true;
++			sprintf(kplace->styleurl  ,"#RandomLineEmptyPoly");
++
++/*  create a multigeometry to hold all the lines  */
++
++			kmulti=new KML_MultiGeometry();
++
++/*  convert to lat/lon, if necessary  */
++
++			lat=xNew<double>(pnvert[i]);
++			lon=xNew<double>(pnvert[i]);
++			if (sgn) {
++				Xy2llx(lat,lon,pshapx[i],pshapy[i],pnvert[i],sgn,cm,sp);
++			}
++			else  {
++				memcpy(lon,pshapx[i],pnvert[i]*sizeof(double));
++				memcpy(lat,pshapy[i],pnvert[i]*sizeof(double));
++			}
++
++/*  loop over the lines  */
++
++			for (j=0; j<pnpart[i]; j++) {
++				kline =new KML_LineString();
++
++				kline->ncoord    =(j<pnpart[i]-1 ? ppstrt[i][j+1]-ppstrt[i][j] : pnvert[i]-ppstrt[i][j]);
++				kline->coords    =xNew<double>(kline->ncoord*3);
++				for (k=0; k<kline->ncoord; k++) {
++					kline->coords[3*k+0]=lon      [ppstrt[i][j]+k];
++					kline->coords[3*k+1]=lat      [ppstrt[i][j]+k];
++					kline->coords[3*k+2]=pshapz[i][ppstrt[i][j]+k];
++				}
++				(kmulti->geometry  )->AddObject((Object*)kline);
++				kline = NULL;
++			}
++
++			xDelete<double>(lon);
++			xDelete<double>(lat);
++
++			(kplace->geometry)->AddObject((Object*)kmulti);
++			kmulti=NULL;
++			(kfold ->feature )->AddObject((Object*)kplace);
++			kplace=NULL;
++		}
++
++/*  polygon types  */
++
++		else if (pstype[i] == SHPT_POLYGON ||
++				 pstype[i] == SHPT_POLYGONZ ||
++				 pstype[i] == SHPT_POLYGONM) {
++
++/*  the shp format specifies that outer rings are cw, while inner rings are ccw.  there
++	may be multiple outer rings and inner rings in any order.  the kml format specifies
++	all rings are ccw (right-hand rule).  there may be only one outer ring with multiple
++	inner rings, and rings are differentiated by keyword.
++
++	at least for now, assume that each cw ring forms a new kml polygon, and each ccw
++	ring forms an inner ring for the most recent outer ring.  a more elaborate solution
++	would be for each inner ring to search in which outer ring it occurs.  */
++
++			kplace=new KML_Placemark();
++
++			sprintf(kplace->name      ,"Shape:%d (%s)  nVertices=%d, nParts=%d",
++					i,SHPTypeName(pstype[i]),pnvert[i],pnpart[i]);
++			kplace->visibility=true;
++			sprintf(kplace->styleurl  ,"#BlackLineRandomPoly");
++
++/*  create a multigeometry to hold all the polygons  */
++
++			kmulti=new KML_MultiGeometry();
++
++/*  convert to lat/lon, if necessary  */
++
++			lat=xNew<double>(pnvert[i]);
++			lon=xNew<double>(pnvert[i]);
++			if (sgn) {
++				Xy2llx(lat,lon,pshapx[i],pshapy[i],pnvert[i],sgn,cm,sp);
++			}
++			else  {
++				memcpy(lon,pshapx[i],pnvert[i]*sizeof(double));
++				memcpy(lat,pshapy[i],pnvert[i]*sizeof(double));
++			}
++
++/*  loop over the polygons  */
++
++			for (j=0; j<pnpart[i]; j++) {
++
++/*  check if polygon is ccw or cw by computing sum of cross products (twice the area)  */
++
++				ncoord=(j<pnpart[i]-1 ? ppstrt[i][j+1]-ppstrt[i][j] : pnvert[i]-ppstrt[i][j]);
++				cpsum =0.;
++
++				for (k=ppstrt[i][j]; k<ppstrt[i][j]+ncoord-1; k++)
++					cpsum +=pshapx[i][k]*pshapy[i][k+1         ]-pshapy[i][k]*pshapx[i][k+1         ];
++				cpsum +=pshapx[i][k]*pshapy[i][ppstrt[i][j]]-pshapy[i][k]*pshapx[i][ppstrt[i][j]];
++
++/*  outer ring (cw) (allow exception for single-part shapes)  */
++
++				if (cpsum < 0 || pnpart[i] == 1) {
++					if (kpoly) {
++						(kmulti->geometry  )->AddObject((Object*)kpoly);
++						kpoly =NULL;
++					}
++
++/*  create a new polygon from the outer ring (reversing cw to ccw)  */
++
++					kpoly =new KML_Polygon();
++					kring =new KML_LinearRing();
++
++					kring->ncoord    =(j<pnpart[i]-1 ? ppstrt[i][j+1]-ppstrt[i][j] : pnvert[i]-ppstrt[i][j]);
++					kring->coords    =xNew<double>(kring->ncoord*3);
++					if (cpsum < 0)
++						for (k=0; k<kring->ncoord; k++) {
++							kring->coords[3*(kring->ncoord-1-k)+0]=lon      [ppstrt[i][j]+k];
++							kring->coords[3*(kring->ncoord-1-k)+1]=lat      [ppstrt[i][j]+k];
++							kring->coords[3*(kring->ncoord-1-k)+2]=pshapz[i][ppstrt[i][j]+k];
++						}
++					else
++						for (k=0; k<kring->ncoord; k++) {
++							kring->coords[3*k+0]=lon      [ppstrt[i][j]+k];
++							kring->coords[3*k+1]=lat      [ppstrt[i][j]+k];
++							kring->coords[3*k+2]=pshapz[i][ppstrt[i][j]+k];
++						}
++
++					(kpoly ->outer     )->AddObject((Object*)kring);
++					kring =NULL;
++				}
++
++/*  inner ring (ccw)  */
++
++				else {
++					if (!kpoly) {
++						_printf_(true,"Warning -- Shape %d of type \"%s\", part %d, expected to be outer loop (cw).\n",
++								 i,SHPTypeName( pstype[i] ),j);
++						continue;
++					}
++
++/*  add the inner ring to the current polygon  */
++
++					kring =new KML_LinearRing();
++
++					kring->ncoord    =(j<pnpart[i]-1 ? ppstrt[i][j+1]-ppstrt[i][j] : pnvert[i]-ppstrt[i][j]);
++					kring->coords    =xNew<double>(kring->ncoord*3);
++					for (k=0; k<kring->ncoord; k++) {
++						kring->coords[3*k+0]=lon      [ppstrt[i][j]+k];
++						kring->coords[3*k+1]=lat      [ppstrt[i][j]+k];
++						kring->coords[3*k+2]=pshapz[i][ppstrt[i][j]+k];
++					}
++
++					(kpoly ->inner     )->AddObject((Object*)kring);
++					kring =NULL;
++				}
++			}
++
++			if (kpoly) {
++				(kmulti->geometry  )->AddObject((Object*)kpoly);
++				kpoly =NULL;
++			}
++
++			xDelete<double>(lon);
++			xDelete<double>(lat);
++
++			(kplace->geometry  )->AddObject((Object*)kmulti);
++			kmulti=NULL;
++			(kfold ->feature   )->AddObject((Object*)kplace);
++			kplace=NULL;
++		}
++
++/*  multipoint types  */
++
++		else if (pstype[i] == SHPT_MULTIPOINT ||
++				 pstype[i] == SHPT_MULTIPOINTZ ||
++				 pstype[i] == SHPT_MULTIPOINTM) {
++			kplace=new KML_Placemark();
++
++			sprintf(kplace->name      ,"Shape:%d (%s)  nVertices=%d, nParts=%d",
++					i,SHPTypeName(pstype[i]),pnvert[i],pnpart[i]);
++			kplace->visibility=true;
++			sprintf(kplace->styleurl  ,"#RandomLineEmptyPoly");
++
++			if (pnpart[i] > 0)
++				_printf_(true,"Warning -- Shape %d of type \"%s\" should not have %d > 0 parts.\n",
++						 i,SHPTypeName( pstype[i] ),pnpart[i]);
++
++/*  create a multigeometry to hold all the points  */
++
++			kmulti=new KML_MultiGeometry();
++
++/*  convert to lat/lon, if necessary  */
++
++			lat=xNew<double>(pnvert[i]);
++			lon=xNew<double>(pnvert[i]);
++			if (sgn) {
++				Xy2llx(lat,lon,pshapx[i],pshapy[i],pnvert[i],sgn,cm,sp);
++			}
++			else  {
++				memcpy(lon,pshapx[i],pnvert[i]*sizeof(double));
++				memcpy(lat,pshapy[i],pnvert[i]*sizeof(double));
++			}
++
++/*  loop over the points  */
++
++			for (j=0; j<pnvert[i]; j++) {
++				kpoint=new KML_Point();
++
++				kpoint->coords[0]=lon      [j];
++				kpoint->coords[1]=lat      [j];
++				kpoint->coords[2]=pshapz[i][j];
++
++				(kmulti->geometry  )->AddObject((Object*)kpoint);
++				kpoint=NULL;
++			}
++
++			xDelete<double>(lon);
++			xDelete<double>(lat);
++
++			(kplace->geometry  )->AddObject((Object*)kmulti);
++			kmulti=NULL;
++			(kfold ->feature   )->AddObject((Object*)kplace);
++			kplace=NULL;
++		}
++
++/*  multipatch types  */
++
++		else if (pstype[i] == SHPT_MULTIPATCH) {
++			_printf_(true,"Warning -- Shape %d of type \"%s\" will be ignored.\n",
++					 i,SHPTypeName( pstype[i] ));
++			continue;
++		}
++
++/*  unknown type  */
++
++		else {
++			_printf_(true,"Warning -- Shape %d of type \"%s\" will be ignored.\n",
++					 i,SHPTypeName( pstype[i] ));
++		}
++	}
++
++/*  open exp file  */
++
++    _pprintLine_("Writing exp profiles to file.");
++    fid=fopen(filexp,"w");
++
++/*  write the polygons and linestrings  */
++
++    kfold->WriteExp(fid,"",sgn,cm,sp);
++
++/*  close exp file  */
++
++    fclose(fid);
++
++	delete kfold;
++	for (i=nshape-1; i>=0; i--) {
++		xDelete<double>((pshapm[i]));
++		xDelete<double>((pshapz[i]));
++		xDelete<double>((pshapy[i]));
++		xDelete<double>((pshapx[i]));
++	}
++	xDelete<double*>(pshapm);
++	xDelete<double*>(pshapz);
++	xDelete<double*>(pshapy);
++	xDelete<double*>(pshapx);
++	xDelete<int>(pnvert);
++	for (i=nshape-1; i>=0; i--) {
++		xDelete<int>((pptype[i]));
++		xDelete<int>((ppstrt[i]));
++	}
++	xDelete<int*>(pptype);
++	xDelete<int*>(ppstrt);
++	xDelete<int>(pnpart);
++	xDelete<int>(pstype);
++
++	clock1=clock();
++	time1 =time(NULL);
++	_printf_(true,"Shp2Expx Module -- %f CPU seconds; %f elapsed seconds.\n\n",
++			 ((double)(clock1-clock0))/CLOCKS_PER_SEC,difftime(time1,time0));
++
++	return(iret);
++
++	#else //ifdef _HAVE_SHAPELIB_
++	return 0;
++	#endif
++}
+Index: ../trunk-jpl/src/c/modules/Shp2Expx/Shp2Expx.h
+===================================================================
+--- ../trunk-jpl/src/c/modules/Shp2Expx/Shp2Expx.h	(revision 0)
++++ ../trunk-jpl/src/c/modules/Shp2Expx/Shp2Expx.h	(revision 14279)
+@@ -0,0 +1,27 @@
++/*!\file:  Shp2Expx.h
++ * \brief header file for shp to exp conversion routines.
++ */ 
++
++#ifndef _SHP2EXPX_H
++#define _SHP2EXPX_H
++
++#ifdef HAVE_CONFIG_H
++#include <config.h>
++#else
++#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
++#endif
++
++#ifdef _HAVE_SHAPELIB_ //only works if Shapelib library has been compiled in.
++
++#include "shapefil.h"
++
++#endif
++
++#include "../../Container/Container.h"
++#include "../../classes/objects/objects.h"
++
++/* local prototypes: */
++int Shp2Expx(char* filshp,char* filexp, int sgn);
++int Shp2Expx(char* filshp,char* filexp, int sgn,double cm,double sp);
++
++#endif  /* _SHP2EXPX_H */
+Index: ../trunk-jpl/src/c/modules/modules.h
+===================================================================
+--- ../trunk-jpl/src/c/modules/modules.h	(revision 14278)
++++ ../trunk-jpl/src/c/modules/modules.h	(revision 14279)
+@@ -59,7 +59,6 @@
+ #include "./Exp2Kmlx/Exp2Kmlx.h"
+ #include "./Kml2Expx/Kml2Expx.h"
+ #include "./Krigingx/Krigingx.h"
+-#include "./Shp2Kmlx/Shp2Kmlx.h"
+ #include "./Mergesolutionfromftogx/Mergesolutionfromftogx.h"
+ #include "./MeshPartitionx/MeshPartitionx.h"
+ #include "./MeshProfileIntersectionx/MeshProfileIntersectionx.h"
+@@ -86,6 +85,8 @@
+ #include "./ResetCoordinateSystemx/ResetCoordinateSystemx.h"
+ #include "./RheologyBbarAbsGradientx/RheologyBbarAbsGradientx.h"
+ #include "./Scotchx/Scotchx.h"
++#include "./Shp2Expx/Shp2Expx.h"
++#include "./Shp2Kmlx/Shp2Kmlx.h"
+ #include "./SmbGradientsx/SmbGradientsx.h"
+ #include "./Solverx/Solverx.h"
+ #include "./SpcNodesx/SpcNodesx.h"
+Index: ../trunk-jpl/src/c/Makefile.am
+===================================================================
+--- ../trunk-jpl/src/c/Makefile.am	(revision 14278)
++++ ../trunk-jpl/src/c/Makefile.am	(revision 14279)
+@@ -626,6 +626,8 @@
+ 			     ./modules/Exp2Kmlx/Exp2Kmlx.cpp\
+ 			     ./modules/Kml2Expx/Kml2Expx.h\
+ 			     ./modules/Kml2Expx/Kml2Expx.cpp\
++			     ./modules/Shp2Expx/Shp2Expx.h\
++			     ./modules/Shp2Expx/Shp2Expx.cpp\
+ 			     ./modules/Shp2Kmlx/Shp2Kmlx.h\
+ 			     ./modules/Shp2Kmlx/Shp2Kmlx.cpp\
+ 			     ./modules/KMLFileReadx/KMLFileReadx.h\
+Index: ../trunk-jpl/src/wrappers/Shp2Exp/Shp2Exp.h
+===================================================================
+--- ../trunk-jpl/src/wrappers/Shp2Exp/Shp2Exp.h	(revision 0)
++++ ../trunk-jpl/src/wrappers/Shp2Exp/Shp2Exp.h	(revision 14279)
+@@ -0,0 +1,53 @@
++/*!\file Shp2Exp.h
++ * \brief: prototype for shp to exp file conversion mex module.
++ */
++
++#ifndef _SHP2EXP_H
++#define _SHP2EXP_H
++
++#ifdef HAVE_CONFIG_H
++	#include <config.h>
++#else
++	#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
++#endif
++
++/*For python modules: needs to come before header files inclusion*/
++#ifdef _HAVE_PYTHON_
++#define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
++#endif
++
++#include "../../c/include/globals.h"
++#include "../../c/modules/modules.h"
++#include "../../c/Container/Container.h"
++#include "../../c/shared/shared.h"
++#include "../bindings.h"
++
++#undef __FUNCT__ 
++#define __FUNCT__  "Shp2Exp"
++
++#ifdef _HAVE_MATLAB_MODULES_
++/* serial input macros: */
++#define SHP_IN  prhs[0]
++#define EXP_IN  prhs[1]
++#define SGN_IN  prhs[2]
++/* serial output macros: */
++#define RET_OUT (mxArray**)&plhs[0]
++#endif
++
++#ifdef _HAVE_PYTHON_MODULES_
++/* serial input macros: */
++#define SHP_IN PyTuple_GetItem(args,0)
++#define EXP_IN PyTuple_GetItem(args,1)
++#define SGN_IN PyTuple_GetItem(args,2)
++/* serial output macros: */
++#define RET_OUT output,0
++#endif
++
++/* serial arg counts: */
++#undef NRHS
++#define NRHS  3
++#undef NLHS
++#define NLHS  1
++
++#endif
++
+Index: ../trunk-jpl/src/wrappers/Shp2Exp/Shp2Exp.cpp
+===================================================================
+--- ../trunk-jpl/src/wrappers/Shp2Exp/Shp2Exp.cpp	(revision 0)
++++ ../trunk-jpl/src/wrappers/Shp2Exp/Shp2Exp.cpp	(revision 14279)
+@@ -0,0 +1,99 @@
++/*\file Shp2Exp.c
++ *\brief: shp to exp file conversion mex module.
++ */
++
++#ifdef HAVE_CONFIG_H
++#include "config.h"
++#else
++#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
++#endif
++
++#include "./Shp2Exp.h"
++
++void Shp2ExpUsage(void){/*{{{*/
++	_pprintLine_("Shp2Exp - shp to exp file conversion module:");
++	_pprintLine_("");
++	_pprintLine_("   This module converts a file from shp to exp format.");
++	_pprintLine_("");
++	_pprintLine_("   Usage:");
++	_pprintLine_("      [ret]=Shp2Exp(filshp,filexp,sgn,'param name',param,...);");
++	_pprintLine_("");
++	_pprintLine_("      filshp      file name of shp file to be read (char, extension optional)");
++	_pprintLine_("      filexp      file name of exp file to be written (char)");
++	_pprintLine_("      sgn         sign for hemisphere (double, +1 (north); -1 (south); or 0 (no translation))");
++	_pprintLine_("");
++	_pprintLine_("      central_meridian     central meridian (double, optional, but must specify with sp)");
++	_pprintLine_("      standard_parallel    standard parallel (double, optional, but must specify with cm)");
++	_pprintLine_("");
++	_pprintLine_("      ret         return code (non-zero for warning)");
++	_pprintLine_("");
++	_pprintLine_("   Examples:");
++	_pprintLine_("      [ret]=Shp2Exp('file.shp','file.exp', 0);");
++	_pprintLine_("      [ret]=Shp2Exp('file.shp','file.exp', 1,'central_meridian',45,'standard_parallel',70);");
++	_pprintLine_("      [ret]=Shp2Exp('file.shp','file.exp',-1,'central_meridian', 0,'standard_parallel',71);");
++	_pprintLine_("");
++}/*}}}*/
++WRAPPER(Shp2Exp){
++
++	int i,verbose=1;
++
++	/*input: */
++	char    *filshp=NULL,*filexp=NULL;
++	int     sgn;
++	Options* options=NULL;
++	double   cm=0.,sp=0.;
++
++	/* output: */
++	int     iret=0;
++
++	#ifndef _HAVE_SHAPELIB_ //only works if shapelib library has been compiled in.
++	_error_("Shapelib not available! Cannot carry out shp file translation!");
++	#endif
++
++	/*Boot module: */
++	MODULEBOOT();
++
++	/*checks on arguments on the matlab side: */
++	if (nlhs > NLHS) {
++		Shp2ExpUsage(); _error_("Shp2Exp usage error");
++	}
++	if (nrhs < NRHS) {
++		Shp2ExpUsage(); _error_("Shp2Exp usage error");
++	}
++
++	/*Input datasets: */
++	FetchData(&filshp,SHP_IN);
++	FetchData(&filexp,EXP_IN);
++	FetchData(&sgn,SGN_IN);
++	FetchData(&options,NRHS,nrhs,prhs);
++
++	/*  defaults are in Xy2lldef, so don't duplicate them here, and only use user values if both have been specified  */
++	if (options->GetOption("central_meridian") || options->GetOption("standard_parallel")) {
++		options->Get(&cm,"central_meridian");
++		if (verbose) _printLine_("  cm=" << cm);
++		options->Get(&sp,"standard_parallel");
++		if (verbose) _printLine_("  sp=" << sp);
++	}
++
++	/*some checks*/
++	if (sgn < -1 || sgn > +1) _error_("Hemisphere sgn=" << sgn << " must be +1 (north), -1 (south), or 0 (no translation).");
++	if (fabs(cm)      > 180.) _error_("Central meridian cm=" << cm << " must be between -180 (west) and +180 (east) degrees.");
++	if (sp < 0. || sp >  90.) _error_("Standard parallel sp=" << sp << " must be between 0 and 90 degrees (in specified hemisphere).");
++
++	/* Run core computations: */
++	if (options->GetOption("central_meridian") && options->GetOption("standard_parallel"))
++		iret=Shp2Expx(filshp,filexp,sgn,cm,sp);
++	else
++		iret=Shp2Expx(filshp,filexp,sgn);
++
++	/*Write data: */
++	WriteData(RET_OUT,iret);
++
++	/*Clean-up*/
++	delete options;
++	xDelete<char>(filexp);
++	xDelete<char>(filshp);
++
++	/*end module: */
++	MODULEEND();
++}
+Index: ../trunk-jpl/src/wrappers/matlab/Makefile.am
+===================================================================
+--- ../trunk-jpl/src/wrappers/matlab/Makefile.am	(revision 14278)
++++ ../trunk-jpl/src/wrappers/matlab/Makefile.am	(revision 14279)
+@@ -75,9 +75,10 @@
+ lib_LTLIBRARIES +=  KMLFileRead.la\
+ 				   KMLMeshWrite.la\
+ 				   KMLOverlay.la\
+-				   Shp2Kml.la\
+ 				   Exp2Kml.la\
+-				   Kml2Exp.la
++				   Kml2Exp.la\
++				   Shp2Exp.la\
++				   Shp2Kml.la
+ endif
+ endif 
+ #}}}
+@@ -245,6 +246,10 @@
+ 						  ../Scotch/Scotch.h
+ Scotch_la_LIBADD = ${deps} $(SCOTCHLIB) $(MPILIB)
+ 
++Shp2Exp_la_SOURCES = ../Shp2Exp/Shp2Exp.cpp\
++							../Shp2Exp/Shp2Exp.h
++Shp2Exp_la_LIBADD = ${deps} $(SHAPELIBLIB) $(MPILIB) $(PETSCLIB)
++
+ Shp2Kml_la_SOURCES = ../Shp2Kml/Shp2Kml.cpp\
+ 							../Shp2Kml/Shp2Kml.h
+ Shp2Kml_la_LIBADD = ${deps} $(SHAPELIBLIB) $(MPILIB) $(PETSCLIB)
Index: /issm/oecreview/Archive/14064-14311/ISSM-14279-14280.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14279-14280.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14279-14280.diff	(revision 14312)
@@ -0,0 +1,25 @@
+Index: ../trunk-jpl/src/c/classes/bamg/Mesh.cpp
+===================================================================
+--- ../trunk-jpl/src/c/classes/bamg/Mesh.cpp	(revision 14279)
++++ ../trunk-jpl/src/c/classes/bamg/Mesh.cpp	(revision 14280)
+@@ -898,10 +898,11 @@
+ 			if (connectivitysize_2[i]>connectivitymax_2) connectivitymax_2=connectivitysize_2[i];
+ 		}
+ 		//Build output
++		connectivitymax_2++;//add last column for size
+ 		bamgmesh->NodalConnectivitySize[0]=nbv;
+ 		bamgmesh->NodalConnectivitySize[1]=connectivitymax_2;
+ 		bamgmesh->NodalConnectivity=xNew<double>(connectivitymax_2*nbv);
+-		for (i=0;i<connectivitymax_2*nbv;i++) bamgmesh->NodalConnectivity[i]=NAN;
++		for (i=0;i<connectivitymax_2*nbv;i++) bamgmesh->NodalConnectivity[i]=0;
+ 		for (i=0;i<nbv;i++){
+ 			k=0;
+ 			for(j=head_2[i];j!=-1;j=next_2[j]){
+@@ -916,6 +917,7 @@
+ 				}
+ 				k++;
+ 			}
++			bamgmesh->NodalConnectivity[connectivitymax_2*(i+1)-1]=k;
+ 		}
+ 
+ 		/*Cracked vertices*/
Index: /issm/oecreview/Archive/14064-14311/ISSM-14280-14281.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14280-14281.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14280-14281.diff	(revision 14312)
@@ -0,0 +1,108 @@
+Index: ../trunk-jpl/src/c/modules/Shp2Expx/Shp2Expx.cpp
+===================================================================
+--- ../trunk-jpl/src/c/modules/Shp2Expx/Shp2Expx.cpp	(revision 14280)
++++ ../trunk-jpl/src/c/modules/Shp2Expx/Shp2Expx.cpp	(revision 14281)
+@@ -48,6 +48,11 @@
+ 	double  adfMinBound[4], adfMaxBound[4];
+ 
+ 	char    indent[81]="";
++	KML_File          *kfile  = NULL;
++	KML_Document      *kdoc   = NULL;
++	KML_Style         *kstyle = NULL;
++	KML_LineStyle     *klsty  = NULL;
++	KML_PolyStyle     *kpsty  = NULL;
+ 	KML_Folder        *kfold  = NULL;
+ 	KML_Placemark     *kplace = NULL;
+ 	KML_MultiGeometry *kmulti = NULL;
+@@ -199,6 +204,58 @@
+ 
+ 	SHPClose( hSHP );
+ 
++/*  construct kml file  */
++
++	kfile =new KML_File();
++	kfile->AddAttrib("xmlns","http://www.opengis.net/kml/2.2");
++
++/*  construct kml document  */
++
++	kdoc  =new KML_Document();
++	sprintf(kdoc->name      ,"Shp2Kmlx Module -- %s",ctime(&time0));
++	kdoc->open      =1;
++
++/*  construct style templates for defaults  */
++
++	klsty =new KML_LineStyle();
++	sprintf(klsty->color     ,"ff000000");
++	sprintf(klsty->colormode ,"normal");
++	klsty->width     =lwidth;
++	kpsty =new KML_PolyStyle();
++	sprintf(kpsty->color     ,"%02xffffff",(int)floor(popac*255+0.5));
++	sprintf(kpsty->colormode ,"random");
++	kstyle=new KML_Style();
++	kstyle->AddAttrib("id","BlackLineRandomPoly");
++	kstyle->line      =klsty;
++	kstyle->poly      =kpsty;
++	(kdoc->style     )->AddObject((Object*)kstyle);
++
++	klsty =new KML_LineStyle();
++	sprintf(klsty->color     ,"ff000000");
++	sprintf(klsty->colormode ,"normal");
++	klsty->width     ,lwidth;
++	kpsty =new KML_PolyStyle();
++	sprintf(kpsty->color     ,"00ffffff");
++	sprintf(kpsty->colormode ,"random");
++	kstyle=new KML_Style();
++	kstyle->AddAttrib("id","BlackLineEmptyPoly");
++	kstyle->line      =klsty;
++	kstyle->poly      =kpsty;
++	(kdoc->style     )->AddObject((Object*)kstyle);
++
++	klsty =new KML_LineStyle();
++	sprintf(klsty->color     ,"%02xffffff",(int)floor(popac*255+0.5));
++	sprintf(klsty->colormode ,"random");
++	klsty->width     =lwidth*2;
++	kpsty =new KML_PolyStyle();
++	sprintf(kpsty->color     ,"00ffffff");
++	sprintf(kpsty->colormode ,"random");
++	kstyle=new KML_Style();
++	kstyle->AddAttrib("id","RandomLineEmptyPoly");
++	kstyle->line      =klsty;
++	kstyle->poly      =kpsty;
++	(kdoc->style     )->AddObject((Object*)kstyle);
++
+ /*  construct kml folder for shapes  */
+ 
+ 	kfold =new KML_Folder();
+@@ -506,20 +563,27 @@
+ 		}
+ 	}
+ 
++/*  assemble the rest of the kml hierarchy  */
++
++	(kdoc ->feature   )->AddObject((Object*)kfold);
++	kfold=NULL;
++	(kfile->kmlobj    )->AddObject((Object*)kdoc);
++	kdoc =NULL;
++
+ /*  open exp file  */
+ 
+-    _pprintLine_("Writing exp profiles to file.");
+-    fid=fopen(filexp,"w");
++	_pprintLine_("Writing exp profiles to file.");
++	fid=fopen(filexp,"w");
+ 
+ /*  write the polygons and linestrings  */
+ 
+-    kfold->WriteExp(fid,"",sgn,cm,sp);
++	kfile->WriteExp(fid,"",sgn,cm,sp);
+ 
+ /*  close exp file  */
+ 
+-    fclose(fid);
++	fclose(fid);
+ 
+-	delete kfold;
++	delete kfile;
+ 	for (i=nshape-1; i>=0; i--) {
+ 		xDelete<double>((pshapm[i]));
+ 		xDelete<double>((pshapz[i]));
Index: /issm/oecreview/Archive/14064-14311/ISSM-14281-14282.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14281-14282.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14281-14282.diff	(revision 14312)
@@ -0,0 +1,57 @@
+Index: ../trunk-jpl/src/c/classes/objects/KML/KML_Point.cpp
+===================================================================
+--- ../trunk-jpl/src/c/classes/objects/KML/KML_Point.cpp	(revision 14281)
++++ ../trunk-jpl/src/c/classes/objects/KML/KML_Point.cpp	(revision 14282)
+@@ -165,7 +165,13 @@
+ 
+ /*  convert latitude and longitude to x and y  */
+ 
+-	Ll2xyx(&x,&y,&lat,&lon,1,sgn,cm,sp);
++	if (sgn) {
++		Ll2xyx(&x,&y,&lat,&lon,1,sgn,cm,sp);
++	}
++	else {
++		memcpy(&x,&lon,1*sizeof(IssmDouble));
++		memcpy(&y,&lat,1*sizeof(IssmDouble));
++	}
+ 
+ /*  write header  */
+ 
+Index: ../trunk-jpl/src/c/classes/objects/KML/KML_LinearRing.cpp
+===================================================================
+--- ../trunk-jpl/src/c/classes/objects/KML/KML_LinearRing.cpp	(revision 14281)
++++ ../trunk-jpl/src/c/classes/objects/KML/KML_LinearRing.cpp	(revision 14282)
+@@ -185,7 +185,13 @@
+ 
+ 	x  =xNew<IssmDouble>(ncoord);
+ 	y  =xNew<IssmDouble>(ncoord);
+-	Ll2xyx(x,y,lat,lon,ncoord,sgn,cm,sp);
++	if (sgn) {
++		Ll2xyx(x,y,lat,lon,ncoord,sgn,cm,sp);
++	}
++	else {
++		memcpy(x,lon,ncoord*sizeof(IssmDouble));
++		memcpy(y,lat,ncoord*sizeof(IssmDouble));
++	}
+ 
+ /*  write header  */
+ 
+Index: ../trunk-jpl/src/c/classes/objects/KML/KML_LineString.cpp
+===================================================================
+--- ../trunk-jpl/src/c/classes/objects/KML/KML_LineString.cpp	(revision 14281)
++++ ../trunk-jpl/src/c/classes/objects/KML/KML_LineString.cpp	(revision 14282)
+@@ -196,7 +196,13 @@
+ 
+ 	x  =xNew<IssmDouble>(ncoord);
+ 	y  =xNew<IssmDouble>(ncoord);
+-	Ll2xyx(x,y,lat,lon,ncoord,sgn,cm,sp);
++	if (sgn) {
++		Ll2xyx(x,y,lat,lon,ncoord,sgn,cm,sp);
++	}
++	else {
++		memcpy(x,lon,ncoord*sizeof(IssmDouble));
++		memcpy(y,lat,ncoord*sizeof(IssmDouble));
++	}
+ 
+ /*  write header  */
+ 
Index: /issm/oecreview/Archive/14064-14311/ISSM-14282-14283.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14282-14283.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14282-14283.diff	(revision 14312)
@@ -0,0 +1,131 @@
+Index: ../trunk-jpl/src/c/modules/Shp2Expx/Shp2Expx.cpp
+===================================================================
+--- ../trunk-jpl/src/c/modules/Shp2Expx/Shp2Expx.cpp	(revision 14282)
++++ ../trunk-jpl/src/c/modules/Shp2Expx/Shp2Expx.cpp	(revision 14283)
+@@ -10,6 +10,18 @@
+ #include "../../EnumDefinitions/EnumDefinitions.h"
+ #include "../modules.h"
+ 
++int Shp2Expx(char* filshp,char* filexp){
++
++	#ifdef _HAVE_SHAPELIB_ //only works if Shapelib library has been compiled in.
++
++	return(Shp2Expx(filshp,filexp,
++					0));
++
++	#else //ifdef _HAVE_SHAPELIB_
++	return 0;
++	#endif
++}
++
+ int Shp2Expx(char* filshp,char* filexp,
+ 			 int sgn){
+ 
+Index: ../trunk-jpl/src/c/modules/Shp2Expx/Shp2Expx.h
+===================================================================
+--- ../trunk-jpl/src/c/modules/Shp2Expx/Shp2Expx.h	(revision 14282)
++++ ../trunk-jpl/src/c/modules/Shp2Expx/Shp2Expx.h	(revision 14283)
+@@ -21,6 +21,7 @@
+ #include "../../classes/objects/objects.h"
+ 
+ /* local prototypes: */
++int Shp2Expx(char* filshp,char* filexp);
+ int Shp2Expx(char* filshp,char* filexp, int sgn);
+ int Shp2Expx(char* filshp,char* filexp, int sgn,double cm,double sp);
+ 
+Index: ../trunk-jpl/src/wrappers/Shp2Exp/Shp2Exp.h
+===================================================================
+--- ../trunk-jpl/src/wrappers/Shp2Exp/Shp2Exp.h	(revision 14282)
++++ ../trunk-jpl/src/wrappers/Shp2Exp/Shp2Exp.h	(revision 14283)
+@@ -29,7 +29,6 @@
+ /* serial input macros: */
+ #define SHP_IN  prhs[0]
+ #define EXP_IN  prhs[1]
+-#define SGN_IN  prhs[2]
+ /* serial output macros: */
+ #define RET_OUT (mxArray**)&plhs[0]
+ #endif
+@@ -38,14 +37,13 @@
+ /* serial input macros: */
+ #define SHP_IN PyTuple_GetItem(args,0)
+ #define EXP_IN PyTuple_GetItem(args,1)
+-#define SGN_IN PyTuple_GetItem(args,2)
+ /* serial output macros: */
+ #define RET_OUT output,0
+ #endif
+ 
+ /* serial arg counts: */
+ #undef NRHS
+-#define NRHS  3
++#define NRHS  2
+ #undef NLHS
+ #define NLHS  1
+ 
+Index: ../trunk-jpl/src/wrappers/Shp2Exp/Shp2Exp.cpp
+===================================================================
+--- ../trunk-jpl/src/wrappers/Shp2Exp/Shp2Exp.cpp	(revision 14282)
++++ ../trunk-jpl/src/wrappers/Shp2Exp/Shp2Exp.cpp	(revision 14283)
+@@ -20,17 +20,11 @@
+ 	_pprintLine_("");
+ 	_pprintLine_("      filshp      file name of shp file to be read (char, extension optional)");
+ 	_pprintLine_("      filexp      file name of exp file to be written (char)");
+-	_pprintLine_("      sgn         sign for hemisphere (double, +1 (north); -1 (south); or 0 (no translation))");
+ 	_pprintLine_("");
+-	_pprintLine_("      central_meridian     central meridian (double, optional, but must specify with sp)");
+-	_pprintLine_("      standard_parallel    standard parallel (double, optional, but must specify with cm)");
+-	_pprintLine_("");
+ 	_pprintLine_("      ret         return code (non-zero for warning)");
+ 	_pprintLine_("");
+ 	_pprintLine_("   Examples:");
+-	_pprintLine_("      [ret]=Shp2Exp('file.shp','file.exp', 0);");
+-	_pprintLine_("      [ret]=Shp2Exp('file.shp','file.exp', 1,'central_meridian',45,'standard_parallel',70);");
+-	_pprintLine_("      [ret]=Shp2Exp('file.shp','file.exp',-1,'central_meridian', 0,'standard_parallel',71);");
++	_pprintLine_("      [ret]=Shp2Exp('file.shp','file.exp');");
+ 	_pprintLine_("");
+ }/*}}}*/
+ WRAPPER(Shp2Exp){
+@@ -39,9 +33,6 @@
+ 
+ 	/*input: */
+ 	char    *filshp=NULL,*filexp=NULL;
+-	int     sgn;
+-	Options* options=NULL;
+-	double   cm=0.,sp=0.;
+ 
+ 	/* output: */
+ 	int     iret=0;
+@@ -64,33 +55,14 @@
+ 	/*Input datasets: */
+ 	FetchData(&filshp,SHP_IN);
+ 	FetchData(&filexp,EXP_IN);
+-	FetchData(&sgn,SGN_IN);
+-	FetchData(&options,NRHS,nrhs,prhs);
+ 
+-	/*  defaults are in Xy2lldef, so don't duplicate them here, and only use user values if both have been specified  */
+-	if (options->GetOption("central_meridian") || options->GetOption("standard_parallel")) {
+-		options->Get(&cm,"central_meridian");
+-		if (verbose) _printLine_("  cm=" << cm);
+-		options->Get(&sp,"standard_parallel");
+-		if (verbose) _printLine_("  sp=" << sp);
+-	}
+-
+-	/*some checks*/
+-	if (sgn < -1 || sgn > +1) _error_("Hemisphere sgn=" << sgn << " must be +1 (north), -1 (south), or 0 (no translation).");
+-	if (fabs(cm)      > 180.) _error_("Central meridian cm=" << cm << " must be between -180 (west) and +180 (east) degrees.");
+-	if (sp < 0. || sp >  90.) _error_("Standard parallel sp=" << sp << " must be between 0 and 90 degrees (in specified hemisphere).");
+-
+ 	/* Run core computations: */
+-	if (options->GetOption("central_meridian") && options->GetOption("standard_parallel"))
+-		iret=Shp2Expx(filshp,filexp,sgn,cm,sp);
+-	else
+-		iret=Shp2Expx(filshp,filexp,sgn);
++	iret=Shp2Expx(filshp,filexp);
+ 
+ 	/*Write data: */
+ 	WriteData(RET_OUT,iret);
+ 
+ 	/*Clean-up*/
+-	delete options;
+ 	xDelete<char>(filexp);
+ 	xDelete<char>(filshp);
+ 
Index: /issm/oecreview/Archive/14064-14311/ISSM-14283-14284.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14283-14284.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14283-14284.diff	(revision 14312)
@@ -0,0 +1,2396 @@
+Index: ../trunk-jpl/src/c/solutions/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/solutions/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/solutions/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,61 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/solutions)
++# }}}
++# CORE_SOURCES {{{
++set(CORE_SOURCES $ENV{ISSM_DIR}/src/c/solutions/ad_core.cpp
++   $ENV{ISSM_DIR}/src/c/solutions/AnalysisConfiguration.cpp
++             $ENV{ISSM_DIR}/src/c/solutions/convergence.cpp
++$ENV{ISSM_DIR}/src/c/solutions/CorePointerFromSolutionEnum.cpp
++     $ENV{ISSM_DIR}/src/c/solutions/EnvironmentFinalize.cpp
++         $ENV{ISSM_DIR}/src/c/solutions/EnvironmentInit.cpp
++        $ENV{ISSM_DIR}/src/c/solutions/ProcessArguments.cpp
++ $ENV{ISSM_DIR}/src/c/solutions/ResetBoundaryConditions.cpp
++$ENV{ISSM_DIR}/src/c/solutions/WrapperCorePointerFromSolutionEnum.cpp PARENT_SCOPE)
++# }}}
++# DAKOTA_SOURCES {{{
++set(DAKOTA_SOURCES $ENV{ISSM_DIR}/src/c/solutions/dakota_core.cpp
++               $ENV{ISSM_DIR}/src/c/solutions/DakotaSpawnCore.cpp PARENT_SCOPE)
++# }}}
++# TRANSIENT_SOURCES {{{
++set(TRANSIENT_SOURCES $ENV{ISSM_DIR}/src/c/solutions/transient_core.cpp PARENT_SCOPE)
++# }}}
++# STEADYSTATE_SOURCES {{{
++set(STEADYSTATE_SOURCES $ENV{ISSM_DIR}/src/c/solutions/steadystate_core.cpp
++                  $ENV{ISSM_DIR}/src/c/solutions/steadystateconvergence.cpp PARENT_SCOPE)
++# }}}
++# PROGNOSTIC_SOURCES {{{
++set(PROGNOSTIC_SOURCES $ENV{ISSM_DIR}/src/c/solutions/prognostic_core.cpp PARENT_SCOPE)
++# }}}
++# THERMAL_SOURCES {{{
++set(THERMAL_SOURCES $ENV{ISSM_DIR}/src/c/solutions/enthalpy_core.cpp
++                     $ENV{ISSM_DIR}/src/c/solutions/thermal_core.cpp PARENT_SCOPE)
++# }}}
++# HYDROLOGY_SOURCES {{{
++set(HYDROLOGY_SOURCES $ENV{ISSM_DIR}/src/c/solutions/hydrology_core.cpp
++                 $ENV{ISSM_DIR}/src/c/solutions/hydrology_core_step.cpp PARENT_SCOPE)
++# }}}
++# DIAGNOSTIC_SOURCES {{{
++set(DIAGNOSTIC_SOURCES $ENV{ISSM_DIR}/src/c/solutions/diagnostic_core.cpp PARENT_SCOPE)
++# }}}
++# BALANCED_SOURCES {{{
++set(BALANCED_SOURCES $ENV{ISSM_DIR}/src/c/solutions/balancethickness_core.cpp
++                                $ENV{ISSM_DIR}/src/c/solutions/dummy_core.cpp PARENT_SCOPE)
++# }}}
++# SLOPE_SOURCES {{{
++set(SLOPE_SOURCES $ENV{ISSM_DIR}/src/c/solutions/bedslope_core.cpp
++              $ENV{ISSM_DIR}/src/c/solutions/surfaceslope_core.cpp PARENT_SCOPE)
++# }}}
++# LIBISSM_LA_SOURCES {{{
++set(LIBISSM_LA_SOURCES $ENV{ISSM_DIR}/src/c/solutions/issm.cpp PARENT_SCOPE)
++# }}}
++# ISSM_SOURCES {{{
++set(ISSM_SOURCES $ENV{ISSM_DIR}/src/c/solutions/issm.cpp PARENT_SCOPE)
++# }}}
++# KRIGING_SOURCES {{{
++set(KRIGING_SOURCES $ENV{ISSM_DIR}/src/c/solutions/kriging.cpp PARENT_SCOPE)
++# }}}
++# ISSMROSE_EXE_SOURCES {{{
++set(ISSMROSE_EXE_SOURCES $ENV{ISSM_DIR}/src/c/solutions/issm.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/EnumDefinitions/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/EnumDefinitions/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/EnumDefinitions/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,5 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/EnumDefinitions)
++# }}}
+Index: ../trunk-jpl/src/c/Container/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/Container/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/Container/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,24 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/Container)
++# }}}
++# CORE_SOURCES {{{
++set(CORE_SOURCES $ENV{ISSM_DIR}/src/c/Container/Constraints.cpp
++                     $ENV{ISSM_DIR}/src/c/Container/DataSet.cpp
++                    $ENV{ISSM_DIR}/src/c/Container/Elements.cpp
++                      $ENV{ISSM_DIR}/src/c/Container/Inputs.cpp
++                       $ENV{ISSM_DIR}/src/c/Container/Loads.cpp
++                   $ENV{ISSM_DIR}/src/c/Container/Materials.cpp
++                       $ENV{ISSM_DIR}/src/c/Container/Nodes.cpp
++                     $ENV{ISSM_DIR}/src/c/Container/Options.cpp
++                  $ENV{ISSM_DIR}/src/c/Container/Parameters.cpp
++                     $ENV{ISSM_DIR}/src/c/Container/Results.cpp
++                    $ENV{ISSM_DIR}/src/c/Container/Vertices.cpp PARENT_SCOPE)
++# }}}
++# KRIGING_SOURCES {{{
++set(KRIGING_SOURCES $ENV{ISSM_DIR}/src/c/Container/Observations.cpp PARENT_SCOPE)
++# }}}
++# PKRIGING_SOURCES {{{
++set(PKRIGING_SOURCES $ENV{ISSM_DIR}/src/c/Container/Observations.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/include/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/include/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/include/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,5 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/include)
++# }}}
+Index: ../trunk-jpl/src/c/shared/MemOps/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/shared/MemOps/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/shared/MemOps/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,5 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/shared/MemOps)
++# }}}
+Index: ../trunk-jpl/src/c/shared/Exceptions/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/shared/Exceptions/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/shared/Exceptions/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,9 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/shared/Exceptions)
++# }}}
++# CORE_SOURCES {{{
++set(CORE_SOURCES $ENV{ISSM_DIR}/src/c/shared/Exceptions/Exceptions.cpp
++                   $ENV{ISSM_DIR}/src/c/shared/Exceptions/exprintf.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/shared/Matrix/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/shared/Matrix/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/shared/Matrix/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/shared/Matrix)
++# }}}
++# CORE_SOURCES {{{
++set(CORE_SOURCES $ENV{ISSM_DIR}/src/c/shared/Matrix/MatrixUtils.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/shared/Numerics/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/shared/Numerics/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/shared/Numerics/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,17 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/shared/Numerics)
++# }}}
++# CORE_SOURCES {{{
++set(CORE_SOURCES $ENV{ISSM_DIR}/src/c/shared/Numerics/cross.cpp
++                 $ENV{ISSM_DIR}/src/c/shared/Numerics/cubic.cpp
++               $ENV{ISSM_DIR}/src/c/shared/Numerics/extrema.cpp
++           $ENV{ISSM_DIR}/src/c/shared/Numerics/GaussPoints.cpp
++      $ENV{ISSM_DIR}/src/c/shared/Numerics/IsInputConverged.cpp
++                 $ENV{ISSM_DIR}/src/c/shared/Numerics/isnan.cpp
++   $ENV{ISSM_DIR}/src/c/shared/Numerics/OptionsFromAnalysis.cpp
++        $ENV{ISSM_DIR}/src/c/shared/Numerics/UnitConversion.cpp
++             $ENV{ISSM_DIR}/src/c/shared/Numerics/Verbosity.cpp
++$ENV{ISSM_DIR}/src/c/shared/Numerics/XZvectorsToCoordinateSystem.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/shared/Sorting/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/shared/Sorting/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/shared/Sorting/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/shared/Sorting)
++# }}}
++# CORE_SOURCES {{{
++set(CORE_SOURCES $ENV{ISSM_DIR}/src/c/shared/Sorting/binary_search.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/shared/Bamg/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/shared/Bamg/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/shared/Bamg/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/shared/Bamg)
++# }}}
++# BAMG_SOURCES {{{
++set(BAMG_SOURCES $ENV{ISSM_DIR}/src/c/shared/Bamg/BigPrimeNumber.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/shared/String/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/shared/String/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/shared/String/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/shared/String)
++# }}}
++# CORE_SOURCES {{{
++set(CORE_SOURCES $ENV{ISSM_DIR}/src/c/shared/String/DescriptorIndex.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/shared/Alloc/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/shared/Alloc/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/shared/Alloc/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/shared/Alloc)
++# }}}
++# CORE_SOURCES {{{
++set(CORE_SOURCES $ENV{ISSM_DIR}/src/c/shared/Alloc/alloc.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/shared/Threads/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/shared/Threads/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/shared/Threads/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,5 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/shared/Threads)
++# }}}
+Index: ../trunk-jpl/src/c/shared/TriMesh/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/shared/TriMesh/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/shared/TriMesh/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,5 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/shared/TriMesh)
++# }}}
+Index: ../trunk-jpl/src/c/shared/Elements/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/shared/Elements/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/shared/Elements/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,23 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/shared/Elements)
++# }}}
++# CORE_SOURCES {{{
++set(CORE_SOURCES $ENV{ISSM_DIR}/src/c/shared/Elements/Arrhenius.cpp
++$ENV{ISSM_DIR}/src/c/shared/Elements/ComputeDelta18oTemperaturePrecipitation.cpp
++          $ENV{ISSM_DIR}/src/c/shared/Elements/GetGlobalDofList.cpp
++           $ENV{ISSM_DIR}/src/c/shared/Elements/GetLocalDofList.cpp
++           $ENV{ISSM_DIR}/src/c/shared/Elements/GetNumberOfDofs.cpp
++    $ENV{ISSM_DIR}/src/c/shared/Elements/GetVerticesCoordinates.cpp
++                  $ENV{ISSM_DIR}/src/c/shared/Elements/Paterson.cpp
++     $ENV{ISSM_DIR}/src/c/shared/Elements/PddSurfaceMassBalance.cpp
++               $ENV{ISSM_DIR}/src/c/shared/Elements/PrintArrays.cpp PARENT_SCOPE)
++# }}}
++# DIAGNOSTIC_SOURCES {{{
++set(DIAGNOSTIC_SOURCES $ENV{ISSM_DIR}/src/c/shared/Elements/CoordinateSystemTransform.cpp
++                $ENV{ISSM_DIR}/src/c/shared/Elements/TransformInvStiffnessMatrixCoord.cpp
++                        $ENV{ISSM_DIR}/src/c/shared/Elements/TransformLoadVectorCoord.cpp
++                          $ENV{ISSM_DIR}/src/c/shared/Elements/TransformSolutionCoord.cpp
++                   $ENV{ISSM_DIR}/src/c/shared/Elements/TransformStiffnessMatrixCoord.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/shared/Exp/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/shared/Exp/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/shared/Exp/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,5 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/shared/Exp)
++# }}}
+Index: ../trunk-jpl/src/c/shared/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/shared/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/shared/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,17 @@
++# Subdirectories {{{
++add_subdirectory(Alloc)
++add_subdirectory(Bamg)
++add_subdirectory(Elements)
++add_subdirectory(Exceptions)
++add_subdirectory(Exp)
++add_subdirectory(Matrix)
++add_subdirectory(MemOps)
++add_subdirectory(Numerics)
++add_subdirectory(Sorting)
++add_subdirectory(String)
++add_subdirectory(Threads)
++add_subdirectory(TriMesh)
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/shared)
++# }}}
+Index: ../trunk-jpl/src/c/io/Disk/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/io/Disk/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/io/Disk/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,10 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/io/Disk)
++# }}}
++# CORE_SOURCES {{{
++set(CORE_SOURCES $ENV{ISSM_DIR}/src/c/io/Disk/pfclose.cpp
++                  $ENV{ISSM_DIR}/src/c/io/Disk/pfopen.cpp
++           $ENV{ISSM_DIR}/src/c/io/Disk/WriteLockFile.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/io/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/io/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/io/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,9 @@
++# Subdirectories {{{
++add_subdirectory(Disk)
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/io)
++# }}}
++# CORE_SOURCES {{{
++set(CORE_SOURCES $ENV{ISSM_DIR}/src/c/io/PrintfFunction.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/InterpFromMesh2dx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/InterpFromMesh2dx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/InterpFromMesh2dx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,5 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/InterpFromMesh2dx)
++# }}}
+Index: ../trunk-jpl/src/c/modules/Shp2Expx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/Shp2Expx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/Shp2Expx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/Shp2Expx)
++# }}}
++# KML_SOURCES {{{
++set(KML_SOURCES $ENV{ISSM_DIR}/src/c/modules/Shp2Expx/Shp2Expx.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/ControlInputSetGradientx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/ControlInputSetGradientx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/ControlInputSetGradientx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,5 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/ControlInputSetGradientx)
++# }}}
+Index: ../trunk-jpl/src/c/modules/StringToEnumx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/StringToEnumx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/StringToEnumx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/StringToEnumx)
++# }}}
++# CORE_SOURCES {{{
++set(CORE_SOURCES $ENV{ISSM_DIR}/src/c/modules/StringToEnumx/StringToEnumx.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/EnumToStringx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/EnumToStringx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/EnumToStringx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/EnumToStringx)
++# }}}
++# CORE_SOURCES {{{
++set(CORE_SOURCES $ENV{ISSM_DIR}/src/c/modules/EnumToStringx/EnumToStringx.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/InputUpdateFromMatrixDakotax/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/InputUpdateFromMatrixDakotax/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/InputUpdateFromMatrixDakotax/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/InputUpdateFromMatrixDakotax)
++# }}}
++# DAKOTA_SOURCES {{{
++set(DAKOTA_SOURCES $ENV{ISSM_DIR}/src/c/modules/InputUpdateFromMatrixDakotax/InputUpdateFromMatrixDakotax.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/AverageOntoPartitionx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/AverageOntoPartitionx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/AverageOntoPartitionx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/AverageOntoPartitionx)
++# }}}
++# DAKOTA_SOURCES {{{
++set(DAKOTA_SOURCES $ENV{ISSM_DIR}/src/c/modules/AverageOntoPartitionx/AverageOntoPartitionx.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/InterpFromMeshToMesh2dx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/InterpFromMeshToMesh2dx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/InterpFromMeshToMesh2dx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,5 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/InterpFromMeshToMesh2dx)
++# }}}
+Index: ../trunk-jpl/src/c/modules/InputUpdateFromVectorx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/InputUpdateFromVectorx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/InputUpdateFromVectorx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/InputUpdateFromVectorx)
++# }}}
++# CORE_SOURCES {{{
++set(CORE_SOURCES $ENV{ISSM_DIR}/src/c/modules/InputUpdateFromVectorx/InputUpdateFromVectorx.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/Xy2llx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/Xy2llx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/Xy2llx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,5 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/Xy2llx)
++# }}}
+Index: ../trunk-jpl/src/c/modules/Reducevectorgtofx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/Reducevectorgtofx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/Reducevectorgtofx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/Reducevectorgtofx)
++# }}}
++# CORE_SOURCES {{{
++set(CORE_SOURCES $ENV{ISSM_DIR}/src/c/modules/Reducevectorgtofx/Reducevectorgtofx.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/InterpFromMeshToGridx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/InterpFromMeshToGridx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/InterpFromMeshToGridx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,5 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/InterpFromMeshToGridx)
++# }}}
+Index: ../trunk-jpl/src/c/modules/GroundinglineMigrationx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/GroundinglineMigrationx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/GroundinglineMigrationx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,5 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/GroundinglineMigrationx)
++# }}}
+Index: ../trunk-jpl/src/c/modules/SmbGradientsx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/SmbGradientsx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/SmbGradientsx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/SmbGradientsx)
++# }}}
++# CORE_SOURCES {{{
++set(CORE_SOURCES $ENV{ISSM_DIR}/src/c/modules/SmbGradientsx/SmbGradientsx.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/BamgConvertMeshx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/BamgConvertMeshx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/BamgConvertMeshx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/BamgConvertMeshx)
++# }}}
++# BAMG_SOURCES {{{
++set(BAMG_SOURCES $ENV{ISSM_DIR}/src/c/modules/BamgConvertMeshx/BamgConvertMeshx.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/GetVectorFromControlInputsx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/GetVectorFromControlInputsx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/GetVectorFromControlInputsx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,5 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/GetVectorFromControlInputsx)
++# }}}
+Index: ../trunk-jpl/src/c/modules/InputDuplicatex/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/InputDuplicatex/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/InputDuplicatex/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/InputDuplicatex)
++# }}}
++# CORE_SOURCES {{{
++set(CORE_SOURCES $ENV{ISSM_DIR}/src/c/modules/InputDuplicatex/InputDuplicatex.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/GetSolutionFromInputsx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/GetSolutionFromInputsx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/GetSolutionFromInputsx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/GetSolutionFromInputsx)
++# }}}
++# CORE_SOURCES {{{
++set(CORE_SOURCES $ENV{ISSM_DIR}/src/c/modules/GetSolutionFromInputsx/GetSolutionFromInputsx.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/MeshProfileIntersectionx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/MeshProfileIntersectionx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/MeshProfileIntersectionx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,5 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/MeshProfileIntersectionx)
++# }}}
+Index: ../trunk-jpl/src/c/modules/SurfaceAverageVelMisfitx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/SurfaceAverageVelMisfitx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/SurfaceAverageVelMisfitx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,5 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/SurfaceAverageVelMisfitx)
++# }}}
+Index: ../trunk-jpl/src/c/modules/InputScalex/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/InputScalex/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/InputScalex/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/InputScalex)
++# }}}
++# CORE_SOURCES {{{
++set(CORE_SOURCES $ENV{ISSM_DIR}/src/c/modules/InputScalex/InputScalex.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/Reduceloadx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/Reduceloadx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/Reduceloadx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/Reduceloadx)
++# }}}
++# CORE_SOURCES {{{
++set(CORE_SOURCES $ENV{ISSM_DIR}/src/c/modules/Reduceloadx/Reduceloadx.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/OutputRiftsx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/OutputRiftsx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/OutputRiftsx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,5 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/OutputRiftsx)
++# }}}
+Index: ../trunk-jpl/src/c/modules/ComputeStrainRatex/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/ComputeStrainRatex/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/ComputeStrainRatex/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/ComputeStrainRatex)
++# }}}
++# CORE_SOURCES {{{
++set(CORE_SOURCES $ENV{ISSM_DIR}/src/c/modules/ComputeStrainRatex/ComputeStrainRatex.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/Ll2xyx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/Ll2xyx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/Ll2xyx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,5 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/Ll2xyx)
++# }}}
+Index: ../trunk-jpl/src/c/modules/InputUpdateFromDakotax/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/InputUpdateFromDakotax/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/InputUpdateFromDakotax/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/InputUpdateFromDakotax)
++# }}}
++# DAKOTA_SOURCES {{{
++set(DAKOTA_SOURCES $ENV{ISSM_DIR}/src/c/modules/InputUpdateFromDakotax/InputUpdateFromDakotax.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/ResetConstraintsx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/ResetConstraintsx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/ResetConstraintsx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,11 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/ResetConstraintsx)
++# }}}
++# CORE_SOURCES {{{
++set(CORE_SOURCES $ENV{ISSM_DIR}/src/c/modules/ResetConstraintsx/ResetConstraintsx.cpp PARENT_SCOPE)
++# }}}
++# THERMAL_SOURCES {{{
++set(THERMAL_SOURCES $ENV{ISSM_DIR}/src/c/modules/ResetConstraintsx/ThermalConstraintsReset.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/PositiveDegreeDayx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/PositiveDegreeDayx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/PositiveDegreeDayx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/PositiveDegreeDayx)
++# }}}
++# CORE_SOURCES {{{
++set(CORE_SOURCES $ENV{ISSM_DIR}/src/c/modules/PositiveDegreeDayx/PositiveDegreeDayx.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/Chacox/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/Chacox/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/Chacox/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,5 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/Chacox)
++# }}}
+Index: ../trunk-jpl/src/c/modules/SpcNodesx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/SpcNodesx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/SpcNodesx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/SpcNodesx)
++# }}}
++# CORE_SOURCES {{{
++set(CORE_SOURCES $ENV{ISSM_DIR}/src/c/modules/SpcNodesx/SpcNodesx.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/AverageFilterx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/AverageFilterx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/AverageFilterx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,5 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/AverageFilterx)
++# }}}
+Index: ../trunk-jpl/src/c/modules/SurfaceAreax/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/SurfaceAreax/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/SurfaceAreax/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/SurfaceAreax)
++# }}}
++# CORE_SOURCES {{{
++set(CORE_SOURCES $ENV{ISSM_DIR}/src/c/modules/SurfaceAreax/SurfaceAreax.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/PropagateFlagsFromConnectivityx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/PropagateFlagsFromConnectivityx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/PropagateFlagsFromConnectivityx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,5 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/PropagateFlagsFromConnectivityx)
++# }}}
+Index: ../trunk-jpl/src/c/modules/Exp2Kmlx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/Exp2Kmlx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/Exp2Kmlx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/Exp2Kmlx)
++# }}}
++# KML_SOURCES {{{
++set(KML_SOURCES $ENV{ISSM_DIR}/src/c/modules/Exp2Kmlx/Exp2Kmlx.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/Kml2Expx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/Kml2Expx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/Kml2Expx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/Kml2Expx)
++# }}}
++# KML_SOURCES {{{
++set(KML_SOURCES $ENV{ISSM_DIR}/src/c/modules/Kml2Expx/Kml2Expx.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/OutputResultsx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/OutputResultsx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/OutputResultsx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/OutputResultsx)
++# }}}
++# CORE_SOURCES {{{
++set(CORE_SOURCES $ENV{ISSM_DIR}/src/c/modules/OutputResultsx/OutputResultsx.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/Scotchx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/Scotchx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/Scotchx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,5 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/Scotchx)
++# }}}
+Index: ../trunk-jpl/src/c/modules/ComputeBasalStressx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/ComputeBasalStressx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/ComputeBasalStressx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/ComputeBasalStressx)
++# }}}
++# CORE_SOURCES {{{
++set(CORE_SOURCES $ENV{ISSM_DIR}/src/c/modules/ComputeBasalStressx/ComputeBasalStressx.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/InputUpdateFromSolutionx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/InputUpdateFromSolutionx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/InputUpdateFromSolutionx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/InputUpdateFromSolutionx)
++# }}}
++# CORE_SOURCES {{{
++set(CORE_SOURCES $ENV{ISSM_DIR}/src/c/modules/InputUpdateFromSolutionx/InputUpdateFromSolutionx.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/HoleFillerx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/HoleFillerx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/HoleFillerx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,5 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/HoleFillerx)
++# }}}
+Index: ../trunk-jpl/src/c/modules/ContourToNodesx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/ContourToNodesx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/ContourToNodesx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,5 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/ContourToNodesx)
++# }}}
+Index: ../trunk-jpl/src/c/modules/KMLOverlayx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/KMLOverlayx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/KMLOverlayx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/KMLOverlayx)
++# }}}
++# KML_SOURCES {{{
++set(KML_SOURCES $ENV{ISSM_DIR}/src/c/modules/KMLOverlayx/KMLOverlayx.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/MeshPartitionx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/MeshPartitionx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/MeshPartitionx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,5 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/MeshPartitionx)
++# }}}
+Index: ../trunk-jpl/src/c/modules/Reducevectorgtosx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/Reducevectorgtosx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/Reducevectorgtosx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,5 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/Reducevectorgtosx)
++# }}}
+Index: ../trunk-jpl/src/c/modules/ElementConnectivityx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/ElementConnectivityx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/ElementConnectivityx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,5 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/ElementConnectivityx)
++# }}}
+Index: ../trunk-jpl/src/c/modules/GetVectorFromInputsx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/GetVectorFromInputsx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/GetVectorFromInputsx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/GetVectorFromInputsx)
++# }}}
++# CORE_SOURCES {{{
++set(CORE_SOURCES $ENV{ISSM_DIR}/src/c/modules/GetVectorFromInputsx/GetVectorFromInputsx.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/ThicknessAlongGradientx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/ThicknessAlongGradientx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/ThicknessAlongGradientx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,5 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/ThicknessAlongGradientx)
++# }}}
+Index: ../trunk-jpl/src/c/modules/Krigingx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/Krigingx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/Krigingx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,11 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/Krigingx)
++# }}}
++# KRIGING_SOURCES {{{
++set(KRIGING_SOURCES $ENV{ISSM_DIR}/src/c/modules/Krigingx/Krigingx.cpp PARENT_SCOPE)
++# }}}
++# PKRIGING_SOURCES {{{
++set(PKRIGING_SOURCES $ENV{ISSM_DIR}/src/c/modules/Krigingx/pKrigingx.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/NodalValuex/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/NodalValuex/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/NodalValuex/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/NodalValuex)
++# }}}
++# CORE_SOURCES {{{
++set(CORE_SOURCES $ENV{ISSM_DIR}/src/c/modules/NodalValuex/NodalValuex.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/ConfigureObjectsx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/ConfigureObjectsx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/ConfigureObjectsx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/ConfigureObjectsx)
++# }}}
++# CORE_SOURCES {{{
++set(CORE_SOURCES $ENV{ISSM_DIR}/src/c/modules/ConfigureObjectsx/ConfigureObjectsx.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/ThicknessAbsMisfitx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/ThicknessAbsMisfitx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/ThicknessAbsMisfitx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,5 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/ThicknessAbsMisfitx)
++# }}}
+Index: ../trunk-jpl/src/c/modules/InputUpdateFromVectorDakotax/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/InputUpdateFromVectorDakotax/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/InputUpdateFromVectorDakotax/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/InputUpdateFromVectorDakotax)
++# }}}
++# DAKOTA_SOURCES {{{
++set(DAKOTA_SOURCES $ENV{ISSM_DIR}/src/c/modules/InputUpdateFromVectorDakotax/InputUpdateFromVectorDakotax.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/ModelProcessorx/Hydrology/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/ModelProcessorx/Hydrology/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/ModelProcessorx/Hydrology/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# HYDROLOGY_SOURCES {{{
++set(HYDROLOGY_SOURCES $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/Hydrology/CreateConstraintsHydrology.cpp
++                            $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/Hydrology/CreateLoadsHydrology.cpp
++                            $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/Hydrology/CreateNodesHydrology.cpp
++                         $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/Hydrology/UpdateElementsHydrology.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/ModelProcessorx/Control/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/ModelProcessorx/Control/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/ModelProcessorx/Control/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,2 @@
++# Subdirectories {{{
++# }}}
+Index: ../trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHutter/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHutter/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHutter/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# DIAGNOSTIC_SOURCES {{{
++set(DIAGNOSTIC_SOURCES $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/DiagnosticHutter/CreateConstraintsDiagnosticHutter.cpp
++                             $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/DiagnosticHutter/CreateLoadsDiagnosticHutter.cpp
++                             $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/DiagnosticHutter/CreateNodesDiagnosticHutter.cpp
++                          $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/DiagnosticHutter/UpdateElementsDiagnosticHutter.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/ModelProcessorx/Enthalpy/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/ModelProcessorx/Enthalpy/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/ModelProcessorx/Enthalpy/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# THERMAL_SOURCES {{{
++set(THERMAL_SOURCES $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/Enthalpy/CreateConstraintsEnthalpy.cpp
++                          $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/Enthalpy/CreateLoadsEnthalpy.cpp
++                          $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/Enthalpy/CreateNodesEnthalpy.cpp
++                       $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/Enthalpy/UpdateElementsEnthalpy.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticVert/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticVert/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticVert/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# DIAGNOSTIC_SOURCES {{{
++set(DIAGNOSTIC_SOURCES $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/DiagnosticVert/CreateConstraintsDiagnosticVert.cpp
++                             $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/DiagnosticVert/CreateLoadsDiagnosticVert.cpp
++                             $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/DiagnosticVert/CreateNodesDiagnosticVert.cpp
++                          $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/DiagnosticVert/UpdateElementsDiagnosticVert.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/ModelProcessorx/Prognostic/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/ModelProcessorx/Prognostic/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/ModelProcessorx/Prognostic/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# PROGNOSTIC_SOURCES {{{
++set(PROGNOSTIC_SOURCES $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/Prognostic/CreateConstraintsPrognostic.cpp
++                             $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/Prognostic/CreateLoadsPrognostic.cpp
++                             $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/Prognostic/CreateNodesPrognostic.cpp
++                          $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/Prognostic/UpdateElementsPrognostic.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/ModelProcessorx/SurfaceSlope/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/ModelProcessorx/SurfaceSlope/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/ModelProcessorx/SurfaceSlope/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# SLOPE_SOURCES {{{
++set(SLOPE_SOURCES $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/SurfaceSlope/CreateConstraintsSurfaceSlope.cpp
++                        $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/SurfaceSlope/CreateLoadsSurfaceSlope.cpp
++                        $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/SurfaceSlope/CreateNodesSurfaceSlope.cpp
++                     $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/SurfaceSlope/UpdateElementsSurfaceSlope.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/ModelProcessorx/Thermal/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/ModelProcessorx/Thermal/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/ModelProcessorx/Thermal/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# THERMAL_SOURCES {{{
++set(THERMAL_SOURCES $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/Thermal/CreateConstraintsThermal.cpp
++                          $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/Thermal/CreateLoadsThermal.cpp
++                          $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/Thermal/CreateNodesThermal.cpp
++                       $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/Thermal/UpdateElementsThermal.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/ModelProcessorx/BedSlope/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/ModelProcessorx/BedSlope/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/ModelProcessorx/BedSlope/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# SLOPE_SOURCES {{{
++set(SLOPE_SOURCES $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/BedSlope/CreateConstraintsBedSlope.cpp
++                        $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/BedSlope/CreateLoadsBedSlope.cpp
++                        $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/BedSlope/CreateNodesBedSlope.cpp
++                     $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/BedSlope/UpdateElementsBedSlope.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/ModelProcessorx/Melting/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/ModelProcessorx/Melting/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/ModelProcessorx/Melting/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# THERMAL_SOURCES {{{
++set(THERMAL_SOURCES $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/Melting/CreateConstraintsMelting.cpp
++                          $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/Melting/CreateLoadsMelting.cpp
++                          $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/Melting/CreateNodesMelting.cpp
++                       $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/Melting/UpdateElementsMelting.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# DIAGNOSTIC_SOURCES {{{
++set(DIAGNOSTIC_SOURCES $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateConstraintsDiagnosticHoriz.cpp
++                             $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateLoadsDiagnosticHoriz.cpp
++                             $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateNodesDiagnosticHoriz.cpp
++                          $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/DiagnosticHoriz/UpdateElementsDiagnosticHoriz.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/ModelProcessorx/Balancethickness/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/ModelProcessorx/Balancethickness/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/ModelProcessorx/Balancethickness/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# BALANCED_SOURCES {{{
++set(BALANCED_SOURCES $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/Balancethickness/CreateConstraintsBalancethickness.cpp
++                           $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/Balancethickness/CreateLoadsBalancethickness.cpp
++                           $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/Balancethickness/CreateNodesBalancethickness.cpp
++                        $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/Balancethickness/UpdateElementsBalancethickness.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/ModelProcessorx/Autodiff/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/ModelProcessorx/Autodiff/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/ModelProcessorx/Autodiff/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,5 @@
++# Subdirectories {{{
++# }}}
++# CORE_SOURCES {{{
++set(CORE_SOURCES $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/Autodiff/CreateParametersAutodiff.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/ModelProcessorx/Dakota/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/ModelProcessorx/Dakota/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/ModelProcessorx/Dakota/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,5 @@
++# Subdirectories {{{
++# }}}
++# DAKOTA_SOURCES {{{
++set(DAKOTA_SOURCES $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/Dakota/CreateParametersDakota.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/ModelProcessorx/Transient/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/ModelProcessorx/Transient/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/ModelProcessorx/Transient/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,5 @@
++# Subdirectories {{{
++# }}}
++# TRANSIENT_SOURCES {{{
++set(TRANSIENT_SOURCES $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/Transient/UpdateElementsTransient.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/ModelProcessorx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/ModelProcessorx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/ModelProcessorx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,33 @@
++# Subdirectories {{{
++add_subdirectory(Autodiff)
++add_subdirectory(Balancethickness)
++add_subdirectory(BedSlope)
++add_subdirectory(Control)
++add_subdirectory(Dakota)
++add_subdirectory(DiagnosticHoriz)
++add_subdirectory(DiagnosticHutter)
++add_subdirectory(DiagnosticVert)
++add_subdirectory(Enthalpy)
++add_subdirectory(Hydrology)
++add_subdirectory(Melting)
++add_subdirectory(Prognostic)
++add_subdirectory(SurfaceSlope)
++add_subdirectory(Thermal)
++add_subdirectory(Transient)
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx)
++# }}}
++# CORE_SOURCES {{{
++set(CORE_SOURCES $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/CreateDataSets.cpp
++$ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp
++$ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/CreateNumberNodeToElementConnectivity.cpp
++               $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/CreateParameters.cpp
++$ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/CreateSingleNodeToElementConnectivity.cpp
++              $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/DistributeNumDofs.cpp
++$ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/ElementsAndVerticesPartitioning.cpp
++                $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/ModelProcessorx.cpp
++              $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/NodesPartitioning.cpp
++                   $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/SortDataSets.cpp
++                 $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/UpdateCounters.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/InputToResultx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/InputToResultx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/InputToResultx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/InputToResultx)
++# }}}
++# CORE_SOURCES {{{
++set(CORE_SOURCES $ENV{ISSM_DIR}/src/c/modules/InputToResultx/InputToResultx.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/NodesDofx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/NodesDofx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/NodesDofx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/NodesDofx)
++# }}}
++# CORE_SOURCES {{{
++set(CORE_SOURCES $ENV{ISSM_DIR}/src/c/modules/NodesDofx/NodesDofx.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/SurfaceLogVxVyMisfitx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/SurfaceLogVxVyMisfitx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/SurfaceLogVxVyMisfitx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,5 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/SurfaceLogVxVyMisfitx)
++# }}}
+Index: ../trunk-jpl/src/c/modules/InputControlUpdatex/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/InputControlUpdatex/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/InputControlUpdatex/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,5 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/InputControlUpdatex)
++# }}}
+Index: ../trunk-jpl/src/c/modules/SetControlInputsFromVectorx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/SetControlInputsFromVectorx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/SetControlInputsFromVectorx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,5 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/SetControlInputsFromVectorx)
++# }}}
+Index: ../trunk-jpl/src/c/modules/BamgTriangulatex/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/BamgTriangulatex/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/BamgTriangulatex/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/BamgTriangulatex)
++# }}}
++# BAMG_SOURCES {{{
++set(BAMG_SOURCES $ENV{ISSM_DIR}/src/c/modules/BamgTriangulatex/BamgTriangulatex.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/ConstraintsStatex/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/ConstraintsStatex/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/ConstraintsStatex/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,15 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/ConstraintsStatex)
++# }}}
++# CORE_SOURCES {{{
++set(CORE_SOURCES $ENV{ISSM_DIR}/src/c/modules/ConstraintsStatex/ConstraintsStatex.cpp PARENT_SCOPE)
++# }}}
++# THERMAL_SOURCES {{{
++set(THERMAL_SOURCES $ENV{ISSM_DIR}/src/c/modules/ConstraintsStatex/ThermalConstraintsState.cpp
++                           $ENV{ISSM_DIR}/src/c/modules/ConstraintsStatex/ThermalIsPresent.cpp PARENT_SCOPE)
++# }}}
++# RIFTS_SOURCES {{{
++set(RIFTS_SOURCES $ENV{ISSM_DIR}/src/c/modules/ConstraintsStatex/RiftConstraintsState.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/InterpFromMeshToMesh3dx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/InterpFromMeshToMesh3dx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/InterpFromMeshToMesh3dx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,5 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/InterpFromMeshToMesh3dx)
++# }}}
+Index: ../trunk-jpl/src/c/modules/Solverx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/Solverx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/Solverx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,9 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/Solverx)
++# }}}
++# CORE_SOURCES {{{
++set(CORE_SOURCES $ENV{ISSM_DIR}/src/c/modules/Solverx/Solverx.cpp
++              $ENV{ISSM_DIR}/src/c/modules/Solverx/SolverxSeq.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/InterpFromGridToMeshx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/InterpFromGridToMeshx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/InterpFromGridToMeshx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,5 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/InterpFromGridToMeshx)
++# }}}
+Index: ../trunk-jpl/src/c/modules/Orthx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/Orthx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/Orthx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,5 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/Orthx)
++# }}}
+Index: ../trunk-jpl/src/c/modules/SurfaceLogVelMisfitx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/SurfaceLogVelMisfitx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/SurfaceLogVelMisfitx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,5 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/SurfaceLogVelMisfitx)
++# }}}
+Index: ../trunk-jpl/src/c/modules/VerticesDofx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/VerticesDofx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/VerticesDofx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/VerticesDofx)
++# }}}
++# CORE_SOURCES {{{
++set(CORE_SOURCES $ENV{ISSM_DIR}/src/c/modules/VerticesDofx/VerticesDofx.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/InputConvergencex/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/InputConvergencex/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/InputConvergencex/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/InputConvergencex)
++# }}}
++# CORE_SOURCES {{{
++set(CORE_SOURCES $ENV{ISSM_DIR}/src/c/modules/InputConvergencex/InputConvergencex.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/SurfaceRelVelMisfitx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/SurfaceRelVelMisfitx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/SurfaceRelVelMisfitx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,5 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/SurfaceRelVelMisfitx)
++# }}}
+Index: ../trunk-jpl/src/c/modules/KMLFileReadx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/KMLFileReadx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/KMLFileReadx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/KMLFileReadx)
++# }}}
++# KML_SOURCES {{{
++set(KML_SOURCES $ENV{ISSM_DIR}/src/c/modules/KMLFileReadx/KMLFileReadx.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/Delta18oParameterizationx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/Delta18oParameterizationx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/Delta18oParameterizationx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/Delta18oParameterizationx)
++# }}}
++# CORE_SOURCES {{{
++set(CORE_SOURCES $ENV{ISSM_DIR}/src/c/modules/Delta18oParameterizationx/Delta18oParameterizationx.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/NodeConnectivityx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/NodeConnectivityx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/NodeConnectivityx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,5 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/NodeConnectivityx)
++# }}}
+Index: ../trunk-jpl/src/c/modules/ParsePetscOptionsx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/ParsePetscOptionsx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/ParsePetscOptionsx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/ParsePetscOptionsx)
++# }}}
++# CORE_SOURCES {{{
++set(CORE_SOURCES $ENV{ISSM_DIR}/src/c/modules/ParsePetscOptionsx/ParsePetscOptionsx.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,100 @@
++# Subdirectories {{{
++add_subdirectory(AverageFilterx)
++add_subdirectory(AverageOntoPartitionx)
++add_subdirectory(BamgConvertMeshx)
++add_subdirectory(BamgTriangulatex)
++add_subdirectory(Bamgx)
++add_subdirectory(Chacox)
++add_subdirectory(ComputeBasalStressx)
++add_subdirectory(ComputeStrainRatex)
++add_subdirectory(ConfigureObjectsx)
++add_subdirectory(ConstraintsStatex)
++add_subdirectory(ContourToMeshx)
++add_subdirectory(ContourToNodesx)
++add_subdirectory(ControlInputGetGradientx)
++add_subdirectory(ControlInputScaleGradientx)
++add_subdirectory(ControlInputSetGradientx)
++add_subdirectory(CreateNodalConstraintsx)
++add_subdirectory(Delta18oParameterizationx)
++add_subdirectory(DragCoefficientAbsGradientx)
++add_subdirectory(ElementConnectivityx)
++add_subdirectory(EnumToStringx)
++add_subdirectory(Exp2Kmlx)
++add_subdirectory(GetSolutionFromInputsx)
++add_subdirectory(GetVectorFromControlInputsx)
++add_subdirectory(GetVectorFromInputsx)
++add_subdirectory(Gradjx)
++add_subdirectory(GroundinglineMigrationx)
++add_subdirectory(HoleFillerx)
++add_subdirectory(InputArtificialNoisex)
++add_subdirectory(InputControlUpdatex)
++add_subdirectory(InputConvergencex)
++add_subdirectory(InputDuplicatex)
++add_subdirectory(InputScalex)
++add_subdirectory(InputToResultx)
++add_subdirectory(InputUpdateFromConstantx)
++add_subdirectory(InputUpdateFromDakotax)
++add_subdirectory(InputUpdateFromMatrixDakotax)
++add_subdirectory(InputUpdateFromSolutionx)
++add_subdirectory(InputUpdateFromVectorDakotax)
++add_subdirectory(InputUpdateFromVectorx)
++add_subdirectory(InterpFromGridToMeshx)
++add_subdirectory(InterpFromMesh2dx)
++add_subdirectory(InterpFromMeshToGridx)
++add_subdirectory(InterpFromMeshToMesh2dx)
++add_subdirectory(InterpFromMeshToMesh3dx)
++add_subdirectory(IoModelToConstraintsx)
++add_subdirectory(Kml2Expx)
++add_subdirectory(KMLFileReadx)
++add_subdirectory(KMLMeshWritex)
++add_subdirectory(KMLOverlayx)
++add_subdirectory(Krigingx)
++add_subdirectory(Ll2xyx)
++add_subdirectory(Mergesolutionfromftogx)
++add_subdirectory(MeshPartitionx)
++add_subdirectory(MeshProfileIntersectionx)
++add_subdirectory(ModelProcessorx)
++add_subdirectory(NodalValuex)
++add_subdirectory(NodeConnectivityx)
++add_subdirectory(NodesDofx)
++add_subdirectory(Orthx)
++add_subdirectory(OutputResultsx)
++add_subdirectory(OutputRiftsx)
++add_subdirectory(ParsePetscOptionsx)
++add_subdirectory(PointCloudFindNeighborsx)
++add_subdirectory(PositiveDegreeDayx)
++add_subdirectory(PropagateFlagsFromConnectivityx)
++add_subdirectory(Reduceloadx)
++add_subdirectory(Reducevectorgtofx)
++add_subdirectory(Reducevectorgtosx)
++add_subdirectory(ResetConstraintsx)
++add_subdirectory(ResetCoordinateSystemx)
++add_subdirectory(RheologyBbarAbsGradientx)
++add_subdirectory(Scotchx)
++add_subdirectory(SetControlInputsFromVectorx)
++add_subdirectory(Shp2Expx)
++add_subdirectory(Shp2Kmlx)
++add_subdirectory(SmbGradientsx)
++add_subdirectory(Solverx)
++add_subdirectory(SpcNodesx)
++add_subdirectory(StringToEnumx)
++add_subdirectory(SurfaceAbsVelMisfitx)
++add_subdirectory(SurfaceAreax)
++add_subdirectory(SurfaceAverageVelMisfitx)
++add_subdirectory(SurfaceLogVelMisfitx)
++add_subdirectory(SurfaceLogVxVyMisfitx)
++add_subdirectory(SurfaceRelVelMisfitx)
++add_subdirectory(ThicknessAbsMisfitx)
++add_subdirectory(ThicknessAcrossGradientx)
++add_subdirectory(ThicknessAlongGradientx)
++add_subdirectory(TriaSearchx)
++add_subdirectory(TriMeshProcessRiftsx)
++add_subdirectory(TriMeshx)
++add_subdirectory(UpdateDynamicConstraintsx)
++add_subdirectory(VecMergex)
++add_subdirectory(VerticesDofx)
++add_subdirectory(Xy2llx)
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules)
++# }}}
+Index: ../trunk-jpl/src/c/modules/TriaSearchx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/TriaSearchx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/TriaSearchx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,5 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/TriaSearchx)
++# }}}
+Index: ../trunk-jpl/src/c/modules/Gradjx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/Gradjx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/Gradjx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,5 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/Gradjx)
++# }}}
+Index: ../trunk-jpl/src/c/modules/VecMergex/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/VecMergex/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/VecMergex/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/VecMergex)
++# }}}
++# CORE_SOURCES {{{
++set(CORE_SOURCES $ENV{ISSM_DIR}/src/c/modules/VecMergex/VecMergex.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/ResetCoordinateSystemx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/ResetCoordinateSystemx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/ResetCoordinateSystemx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/ResetCoordinateSystemx)
++# }}}
++# CORE_SOURCES {{{
++set(CORE_SOURCES $ENV{ISSM_DIR}/src/c/modules/ResetCoordinateSystemx/ResetCoordinateSystemx.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/Mergesolutionfromftogx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/Mergesolutionfromftogx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/Mergesolutionfromftogx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/Mergesolutionfromftogx)
++# }}}
++# CORE_SOURCES {{{
++set(CORE_SOURCES $ENV{ISSM_DIR}/src/c/modules/Mergesolutionfromftogx/Mergesolutionfromftogx.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/InputUpdateFromConstantx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/InputUpdateFromConstantx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/InputUpdateFromConstantx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/InputUpdateFromConstantx)
++# }}}
++# CORE_SOURCES {{{
++set(CORE_SOURCES $ENV{ISSM_DIR}/src/c/modules/InputUpdateFromConstantx/InputUpdateFromConstantx.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/SurfaceAbsVelMisfitx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/SurfaceAbsVelMisfitx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/SurfaceAbsVelMisfitx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,5 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/SurfaceAbsVelMisfitx)
++# }}}
+Index: ../trunk-jpl/src/c/modules/Bamgx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/Bamgx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/Bamgx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/Bamgx)
++# }}}
++# BAMG_SOURCES {{{
++set(BAMG_SOURCES $ENV{ISSM_DIR}/src/c/modules/Bamgx/Bamgx.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/ContourToMeshx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/ContourToMeshx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/ContourToMeshx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,5 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/ContourToMeshx)
++# }}}
+Index: ../trunk-jpl/src/c/modules/CreateNodalConstraintsx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/CreateNodalConstraintsx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/CreateNodalConstraintsx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/CreateNodalConstraintsx)
++# }}}
++# CORE_SOURCES {{{
++set(CORE_SOURCES $ENV{ISSM_DIR}/src/c/modules/CreateNodalConstraintsx/CreateNodalConstraintsx.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/KMLMeshWritex/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/KMLMeshWritex/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/KMLMeshWritex/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/KMLMeshWritex)
++# }}}
++# KML_SOURCES {{{
++set(KML_SOURCES $ENV{ISSM_DIR}/src/c/modules/KMLMeshWritex/KMLMeshWritex.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/TriMeshx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/TriMeshx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/TriMeshx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,5 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/TriMeshx)
++# }}}
+Index: ../trunk-jpl/src/c/modules/ControlInputGetGradientx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/ControlInputGetGradientx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/ControlInputGetGradientx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,5 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/ControlInputGetGradientx)
++# }}}
+Index: ../trunk-jpl/src/c/modules/UpdateDynamicConstraintsx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/UpdateDynamicConstraintsx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/UpdateDynamicConstraintsx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/UpdateDynamicConstraintsx)
++# }}}
++# CORE_SOURCES {{{
++set(CORE_SOURCES $ENV{ISSM_DIR}/src/c/modules/UpdateDynamicConstraintsx/UpdateDynamicConstraintsx.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/DragCoefficientAbsGradientx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/DragCoefficientAbsGradientx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/DragCoefficientAbsGradientx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,5 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/DragCoefficientAbsGradientx)
++# }}}
+Index: ../trunk-jpl/src/c/modules/Shp2Kmlx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/Shp2Kmlx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/Shp2Kmlx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/Shp2Kmlx)
++# }}}
++# KML_SOURCES {{{
++set(KML_SOURCES $ENV{ISSM_DIR}/src/c/modules/Shp2Kmlx/Shp2Kmlx.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/PointCloudFindNeighborsx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/PointCloudFindNeighborsx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/PointCloudFindNeighborsx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,5 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/PointCloudFindNeighborsx)
++# }}}
+Index: ../trunk-jpl/src/c/modules/TriMeshProcessRiftsx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/TriMeshProcessRiftsx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/TriMeshProcessRiftsx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,5 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/TriMeshProcessRiftsx)
++# }}}
+Index: ../trunk-jpl/src/c/modules/IoModelToConstraintsx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/IoModelToConstraintsx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/IoModelToConstraintsx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/IoModelToConstraintsx)
++# }}}
++# CORE_SOURCES {{{
++set(CORE_SOURCES $ENV{ISSM_DIR}/src/c/modules/IoModelToConstraintsx/IoModelToConstraintsx.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/RheologyBbarAbsGradientx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/RheologyBbarAbsGradientx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/RheologyBbarAbsGradientx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,5 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/RheologyBbarAbsGradientx)
++# }}}
+Index: ../trunk-jpl/src/c/modules/ThicknessAcrossGradientx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/ThicknessAcrossGradientx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/ThicknessAcrossGradientx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,5 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/ThicknessAcrossGradientx)
++# }}}
+Index: ../trunk-jpl/src/c/modules/InputArtificialNoisex/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/InputArtificialNoisex/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/InputArtificialNoisex/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/InputArtificialNoisex)
++# }}}
++# CORE_SOURCES {{{
++set(CORE_SOURCES $ENV{ISSM_DIR}/src/c/modules/InputArtificialNoisex/InputArtificialNoisex.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/modules/ControlInputScaleGradientx/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/modules/ControlInputScaleGradientx/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/modules/ControlInputScaleGradientx/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,5 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/modules/ControlInputScaleGradientx)
++# }}}
+Index: ../trunk-jpl/src/c/toolkits/metis/patches/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/toolkits/metis/patches/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/toolkits/metis/patches/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,5 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/toolkits/metis/patches)
++# }}}
+Index: ../trunk-jpl/src/c/toolkits/metis/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/toolkits/metis/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/toolkits/metis/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,6 @@
++# Subdirectories {{{
++add_subdirectory(patches)
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/toolkits/metis)
++# }}}
+Index: ../trunk-jpl/src/c/toolkits/scalapack/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/toolkits/scalapack/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/toolkits/scalapack/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,5 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/toolkits/scalapack)
++# }}}
+Index: ../trunk-jpl/src/c/toolkits/mpi/patches/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/toolkits/mpi/patches/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/toolkits/mpi/patches/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,5 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/toolkits/mpi/patches)
++# }}}
+Index: ../trunk-jpl/src/c/toolkits/mpi/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/toolkits/mpi/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/toolkits/mpi/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,6 @@
++# Subdirectories {{{
++add_subdirectory(patches)
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/toolkits/mpi)
++# }}}
+Index: ../trunk-jpl/src/c/toolkits/triangle/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/toolkits/triangle/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/toolkits/triangle/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,5 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/toolkits/triangle)
++# }}}
+Index: ../trunk-jpl/src/c/toolkits/issm/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/toolkits/issm/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/toolkits/issm/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,5 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/toolkits/issm)
++# }}}
+Index: ../trunk-jpl/src/c/toolkits/plapack/patches/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/toolkits/plapack/patches/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/toolkits/plapack/patches/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,5 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/toolkits/plapack/patches)
++# }}}
+Index: ../trunk-jpl/src/c/toolkits/plapack/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/toolkits/plapack/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/toolkits/plapack/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,6 @@
++# Subdirectories {{{
++add_subdirectory(patches)
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/toolkits/plapack)
++# }}}
+Index: ../trunk-jpl/src/c/toolkits/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/toolkits/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/toolkits/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,12 @@
++# Subdirectories {{{
++add_subdirectory(issm)
++add_subdirectory(metis)
++add_subdirectory(mpi)
++add_subdirectory(petsc)
++add_subdirectory(plapack)
++add_subdirectory(scalapack)
++add_subdirectory(triangle)
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/toolkits)
++# }}}
+Index: ../trunk-jpl/src/c/toolkits/petsc/patches/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/toolkits/petsc/patches/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/toolkits/petsc/patches/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,5 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/toolkits/petsc/patches)
++# }}}
+Index: ../trunk-jpl/src/c/toolkits/petsc/objects/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/toolkits/petsc/objects/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/toolkits/petsc/objects/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,5 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/toolkits/petsc/objects)
++# }}}
+Index: ../trunk-jpl/src/c/toolkits/petsc/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/toolkits/petsc/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/toolkits/petsc/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,7 @@
++# Subdirectories {{{
++add_subdirectory(objects)
++add_subdirectory(patches)
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/toolkits/petsc)
++# }}}
+Index: ../trunk-jpl/src/c/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,15 @@
++# Subdirectories {{{
++add_subdirectory(classes)
++add_subdirectory(Container)
++add_subdirectory(EnumDefinitions)
++add_subdirectory(include)
++add_subdirectory(io)
++add_subdirectory(modules)
++add_subdirectory(shared)
++add_subdirectory(solutions)
++add_subdirectory(solvers)
++add_subdirectory(toolkits)
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c)
++# }}}
+Index: ../trunk-jpl/src/c/classes/gauss/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/classes/gauss/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/classes/gauss/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,11 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/classes/gauss)
++# }}}
++# CORE_SOURCES {{{
++set(CORE_SOURCES $ENV{ISSM_DIR}/src/c/classes/gauss/GaussTria.cpp PARENT_SCOPE)
++# }}}
++# THREED_SOURCES {{{
++set(THREED_SOURCES $ENV{ISSM_DIR}/src/c/classes/gauss/GaussPenta.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/classes/objects/Materials/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/classes/objects/Materials/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/classes/objects/Materials/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,10 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/classes/objects/Materials)
++# }}}
++# CORE_SOURCES {{{
++set(CORE_SOURCES $ENV{ISSM_DIR}/src/c/classes/objects/Materials/Matdamageice.cpp
++                       $ENV{ISSM_DIR}/src/c/classes/objects/Materials/Matice.cpp
++                       $ENV{ISSM_DIR}/src/c/classes/objects/Materials/Matpar.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/classes/objects/Inputs/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/classes/objects/Inputs/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/classes/objects/Inputs/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,16 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/classes/objects/Inputs)
++# }}}
++# CORE_SOURCES {{{
++set(CORE_SOURCES $ENV{ISSM_DIR}/src/c/classes/objects/Inputs/BoolInput.cpp
++              $ENV{ISSM_DIR}/src/c/classes/objects/Inputs/DatasetInput.cpp
++               $ENV{ISSM_DIR}/src/c/classes/objects/Inputs/DoubleInput.cpp
++                  $ENV{ISSM_DIR}/src/c/classes/objects/Inputs/IntInput.cpp
++            $ENV{ISSM_DIR}/src/c/classes/objects/Inputs/TransientInput.cpp
++               $ENV{ISSM_DIR}/src/c/classes/objects/Inputs/TriaP1Input.cpp PARENT_SCOPE)
++# }}}
++# THREED_SOURCES {{{
++set(THREED_SOURCES $ENV{ISSM_DIR}/src/c/classes/objects/Inputs/PentaP1Input.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/classes/objects/Params/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/classes/objects/Params/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/classes/objects/Params/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,23 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/classes/objects/Params)
++# }}}
++# CORE_SOURCES {{{
++set(CORE_SOURCES $ENV{ISSM_DIR}/src/c/classes/objects/Params/BoolParam.cpp
++              $ENV{ISSM_DIR}/src/c/classes/objects/Params/DataSetParam.cpp
++       $ENV{ISSM_DIR}/src/c/classes/objects/Params/DoubleMatArrayParam.cpp
++            $ENV{ISSM_DIR}/src/c/classes/objects/Params/DoubleMatParam.cpp
++               $ENV{ISSM_DIR}/src/c/classes/objects/Params/DoubleParam.cpp
++   $ENV{ISSM_DIR}/src/c/classes/objects/Params/DoubleTransientMatParam.cpp
++            $ENV{ISSM_DIR}/src/c/classes/objects/Params/DoubleVecParam.cpp
++                 $ENV{ISSM_DIR}/src/c/classes/objects/Params/FileParam.cpp
++               $ENV{ISSM_DIR}/src/c/classes/objects/Params/IntMatParam.cpp
++                  $ENV{ISSM_DIR}/src/c/classes/objects/Params/IntParam.cpp
++               $ENV{ISSM_DIR}/src/c/classes/objects/Params/IntVecParam.cpp
++               $ENV{ISSM_DIR}/src/c/classes/objects/Params/MatrixParam.cpp
++          $ENV{ISSM_DIR}/src/c/classes/objects/Params/StringArrayParam.cpp
++               $ENV{ISSM_DIR}/src/c/classes/objects/Params/StringParam.cpp
++            $ENV{ISSM_DIR}/src/c/classes/objects/Params/TransientParam.cpp
++               $ENV{ISSM_DIR}/src/c/classes/objects/Params/VectorParam.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/classes/objects/KML/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/classes/objects/KML/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/classes/objects/KML/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,34 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/classes/objects/KML)
++# }}}
++# KML_SOURCES {{{
++set(KML_SOURCES $ENV{ISSM_DIR}/src/c/classes/objects/KML/KML_Attribute.cpp
++               $ENV{ISSM_DIR}/src/c/classes/objects/KML/KML_ColorStyle.cpp
++                  $ENV{ISSM_DIR}/src/c/classes/objects/KML/KML_Comment.cpp
++                $ENV{ISSM_DIR}/src/c/classes/objects/KML/KML_Container.cpp
++                 $ENV{ISSM_DIR}/src/c/classes/objects/KML/KML_Document.cpp
++                  $ENV{ISSM_DIR}/src/c/classes/objects/KML/KML_Feature.cpp
++                     $ENV{ISSM_DIR}/src/c/classes/objects/KML/KML_File.cpp
++                   $ENV{ISSM_DIR}/src/c/classes/objects/KML/KML_Folder.cpp
++                 $ENV{ISSM_DIR}/src/c/classes/objects/KML/KML_Geometry.cpp
++            $ENV{ISSM_DIR}/src/c/classes/objects/KML/KML_GroundOverlay.cpp
++                     $ENV{ISSM_DIR}/src/c/classes/objects/KML/KML_Icon.cpp
++                $ENV{ISSM_DIR}/src/c/classes/objects/KML/KML_LatLonBox.cpp
++               $ENV{ISSM_DIR}/src/c/classes/objects/KML/KML_LinearRing.cpp
++               $ENV{ISSM_DIR}/src/c/classes/objects/KML/KML_LineString.cpp
++                $ENV{ISSM_DIR}/src/c/classes/objects/KML/KML_LineStyle.cpp
++            $ENV{ISSM_DIR}/src/c/classes/objects/KML/KML_MultiGeometry.cpp
++                   $ENV{ISSM_DIR}/src/c/classes/objects/KML/KML_Object.cpp
++                  $ENV{ISSM_DIR}/src/c/classes/objects/KML/KML_Overlay.cpp
++                $ENV{ISSM_DIR}/src/c/classes/objects/KML/KML_Placemark.cpp
++                    $ENV{ISSM_DIR}/src/c/classes/objects/KML/KML_Point.cpp
++                  $ENV{ISSM_DIR}/src/c/classes/objects/KML/KML_Polygon.cpp
++                $ENV{ISSM_DIR}/src/c/classes/objects/KML/KML_PolyStyle.cpp
++                    $ENV{ISSM_DIR}/src/c/classes/objects/KML/KML_Style.cpp
++            $ENV{ISSM_DIR}/src/c/classes/objects/KML/KML_StyleSelector.cpp
++                 $ENV{ISSM_DIR}/src/c/classes/objects/KML/KML_SubStyle.cpp
++                  $ENV{ISSM_DIR}/src/c/classes/objects/KML/KML_Unknown.cpp
++             $ENV{ISSM_DIR}/src/c/classes/objects/KML/KMLFileReadUtils.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/classes/objects/Options/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/classes/objects/Options/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/classes/objects/Options/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/classes/objects/Options)
++# }}}
++# CORE_SOURCES {{{
++set(CORE_SOURCES $ENV{ISSM_DIR}/src/c/classes/objects/Options/OptionUtilities.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/classes/objects/Loads/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/classes/objects/Loads/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/classes/objects/Loads/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,15 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/classes/objects/Loads)
++# }}}
++# CORE_SOURCES {{{
++set(CORE_SOURCES $ENV{ISSM_DIR}/src/c/classes/objects/Loads/Friction.cpp
++                 $ENV{ISSM_DIR}/src/c/classes/objects/Loads/Icefront.cpp
++            $ENV{ISSM_DIR}/src/c/classes/objects/Loads/Numericalflux.cpp
++                  $ENV{ISSM_DIR}/src/c/classes/objects/Loads/Pengrid.cpp
++                  $ENV{ISSM_DIR}/src/c/classes/objects/Loads/Penpair.cpp PARENT_SCOPE)
++# }}}
++# RIFTS_SOURCES {{{
++set(RIFTS_SOURCES $ENV{ISSM_DIR}/src/c/classes/objects/Loads/Riftfront.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/classes/objects/ExternalResults/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/classes/objects/ExternalResults/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/classes/objects/ExternalResults/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,5 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/classes/objects/ExternalResults)
++# }}}
+Index: ../trunk-jpl/src/c/classes/objects/Constraints/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/classes/objects/Constraints/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/classes/objects/Constraints/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,10 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/classes/objects/Constraints)
++# }}}
++# CORE_SOURCES {{{
++set(CORE_SOURCES $ENV{ISSM_DIR}/src/c/classes/objects/Constraints/SpcDynamic.cpp
++                  $ENV{ISSM_DIR}/src/c/classes/objects/Constraints/SpcStatic.cpp
++               $ENV{ISSM_DIR}/src/c/classes/objects/Constraints/SpcTransient.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/classes/objects/ElementResults/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/classes/objects/ElementResults/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/classes/objects/ElementResults/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,13 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/classes/objects/ElementResults)
++# }}}
++# CORE_SOURCES {{{
++set(CORE_SOURCES $ENV{ISSM_DIR}/src/c/classes/objects/ElementResults/BoolElementResult.cpp
++               $ENV{ISSM_DIR}/src/c/classes/objects/ElementResults/DoubleElementResult.cpp
++               $ENV{ISSM_DIR}/src/c/classes/objects/ElementResults/TriaP1ElementResult.cpp PARENT_SCOPE)
++# }}}
++# THREED_SOURCES {{{
++set(THREED_SOURCES $ENV{ISSM_DIR}/src/c/classes/objects/ElementResults/PentaP1ElementResult.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/classes/objects/Elements/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/classes/objects/Elements/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/classes/objects/Elements/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,15 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/classes/objects/Elements)
++# }}}
++# CORE_SOURCES {{{
++set(CORE_SOURCES $ENV{ISSM_DIR}/src/c/classes/objects/Elements/Tria.cpp
++             $ENV{ISSM_DIR}/src/c/classes/objects/Elements/TriaHook.cpp
++              $ENV{ISSM_DIR}/src/c/classes/objects/Elements/TriaRef.cpp PARENT_SCOPE)
++# }}}
++# THREED_SOURCES {{{
++set(THREED_SOURCES $ENV{ISSM_DIR}/src/c/classes/objects/Elements/Penta.cpp
++               $ENV{ISSM_DIR}/src/c/classes/objects/Elements/PentaHook.cpp
++                $ENV{ISSM_DIR}/src/c/classes/objects/Elements/PentaRef.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/classes/objects/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/classes/objects/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/classes/objects/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,22 @@
++# Subdirectories {{{
++add_subdirectory(Constraints)
++add_subdirectory(ElementResults)
++add_subdirectory(Elements)
++add_subdirectory(ExternalResults)
++add_subdirectory(Inputs)
++add_subdirectory(KML)
++add_subdirectory(Loads)
++add_subdirectory(Materials)
++add_subdirectory(Options)
++add_subdirectory(Params)
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/classes/objects)
++# }}}
++# CORE_SOURCES {{{
++set(CORE_SOURCES $ENV{ISSM_DIR}/src/c/classes/objects/DependentObject.cpp
++               $ENV{ISSM_DIR}/src/c/classes/objects/IndependentObject.cpp
++                            $ENV{ISSM_DIR}/src/c/classes/objects/Node.cpp
++                        $ENV{ISSM_DIR}/src/c/classes/objects/Profiler.cpp
++                          $ENV{ISSM_DIR}/src/c/classes/objects/Vertex.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/classes/kriging/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/classes/kriging/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/classes/kriging/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,21 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/classes/kriging)
++# }}}
++# KRIGING_SOURCES {{{
++set(KRIGING_SOURCES $ENV{ISSM_DIR}/src/c/classes/kriging/ExponentialVariogram.cpp
++                       $ENV{ISSM_DIR}/src/c/classes/kriging/GaussianVariogram.cpp
++                             $ENV{ISSM_DIR}/src/c/classes/kriging/Observation.cpp
++                          $ENV{ISSM_DIR}/src/c/classes/kriging/PowerVariogram.cpp
++                                $ENV{ISSM_DIR}/src/c/classes/kriging/Quadtree.cpp
++                      $ENV{ISSM_DIR}/src/c/classes/kriging/SphericalVariogram.cpp PARENT_SCOPE)
++# }}}
++# PKRIGING_SOURCES {{{
++set(PKRIGING_SOURCES $ENV{ISSM_DIR}/src/c/classes/kriging/ExponentialVariogram.cpp
++                        $ENV{ISSM_DIR}/src/c/classes/kriging/GaussianVariogram.cpp
++                              $ENV{ISSM_DIR}/src/c/classes/kriging/Observation.cpp
++                           $ENV{ISSM_DIR}/src/c/classes/kriging/PowerVariogram.cpp
++                                 $ENV{ISSM_DIR}/src/c/classes/kriging/Quadtree.cpp
++                       $ENV{ISSM_DIR}/src/c/classes/kriging/SphericalVariogram.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/classes/dakota/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/classes/dakota/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/classes/dakota/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/classes/dakota)
++# }}}
++# DAKOTA_SOURCES {{{
++set(DAKOTA_SOURCES $ENV{ISSM_DIR}/src/c/classes/dakota/DakotaPlugin.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/classes/matrix/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/classes/matrix/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/classes/matrix/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,9 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/classes/matrix)
++# }}}
++# CORE_SOURCES {{{
++set(CORE_SOURCES $ENV{ISSM_DIR}/src/c/classes/matrix/ElementMatrix.cpp
++                 $ENV{ISSM_DIR}/src/c/classes/matrix/ElementVector.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/classes/bamg/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/classes/bamg/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/classes/bamg/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,31 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/classes/bamg)
++# }}}
++# BAMG_SOURCES {{{
++set(BAMG_SOURCES $ENV{ISSM_DIR}/src/c/classes/bamg/AdjacentTriangle.cpp
++                         $ENV{ISSM_DIR}/src/c/classes/bamg/BamgGeom.cpp
++                         $ENV{ISSM_DIR}/src/c/classes/bamg/BamgMesh.cpp
++                         $ENV{ISSM_DIR}/src/c/classes/bamg/BamgOpts.cpp
++                     $ENV{ISSM_DIR}/src/c/classes/bamg/BamgQuadtree.cpp
++                       $ENV{ISSM_DIR}/src/c/classes/bamg/BamgVertex.cpp
++                      $ENV{ISSM_DIR}/src/c/classes/bamg/CrackedEdge.cpp
++                            $ENV{ISSM_DIR}/src/c/classes/bamg/Curve.cpp
++                        $ENV{ISSM_DIR}/src/c/classes/bamg/Direction.cpp
++                             $ENV{ISSM_DIR}/src/c/classes/bamg/Edge.cpp
++                      $ENV{ISSM_DIR}/src/c/classes/bamg/EigenMetric.cpp
++                         $ENV{ISSM_DIR}/src/c/classes/bamg/GeomEdge.cpp
++                         $ENV{ISSM_DIR}/src/c/classes/bamg/Geometry.cpp
++                    $ENV{ISSM_DIR}/src/c/classes/bamg/GeomSubDomain.cpp
++                       $ENV{ISSM_DIR}/src/c/classes/bamg/GeomVertex.cpp
++      $ENV{ISSM_DIR}/src/c/classes/bamg/ListofIntersectionTriangles.cpp
++                             $ENV{ISSM_DIR}/src/c/classes/bamg/Mesh.cpp
++                           $ENV{ISSM_DIR}/src/c/classes/bamg/Metric.cpp
++                          $ENV{ISSM_DIR}/src/c/classes/bamg/SetOfE4.cpp
++                        $ENV{ISSM_DIR}/src/c/classes/bamg/SubDomain.cpp
++                         $ENV{ISSM_DIR}/src/c/classes/bamg/Triangle.cpp
++                     $ENV{ISSM_DIR}/src/c/classes/bamg/VertexOnEdge.cpp
++                     $ENV{ISSM_DIR}/src/c/classes/bamg/VertexOnGeom.cpp
++                   $ENV{ISSM_DIR}/src/c/classes/bamg/VertexOnVertex.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/classes/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/classes/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/classes/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,20 @@
++# Subdirectories {{{
++add_subdirectory(bamg)
++add_subdirectory(dakota)
++add_subdirectory(gauss)
++add_subdirectory(kriging)
++add_subdirectory(matrix)
++add_subdirectory(objects)
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/classes)
++# }}}
++# CORE_SOURCES {{{
++set(CORE_SOURCES $ENV{ISSM_DIR}/src/c/classes/DofIndexing.cpp
++                    $ENV{ISSM_DIR}/src/c/classes/FemModel.cpp
++                        $ENV{ISSM_DIR}/src/c/classes/Hook.cpp
++                     $ENV{ISSM_DIR}/src/c/classes/IoModel.cpp
++                    $ENV{ISSM_DIR}/src/c/classes/IssmComm.cpp
++                       $ENV{ISSM_DIR}/src/c/classes/Patch.cpp
++                  $ENV{ISSM_DIR}/src/c/classes/RiftStruct.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/c/solvers/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/c/solvers/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/c/solvers/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,16 @@
++# Subdirectories {{{
++# }}}
++# Include Directory {{{
++include_directories(AFTER $ENV{ISSM_DIR}/src/c/solvers)
++# }}}
++# CORE_SOURCES {{{
++set(CORE_SOURCES $ENV{ISSM_DIR}/src/c/solvers/solver_linear.cpp
++                 $ENV{ISSM_DIR}/src/c/solvers/solver_newton.cpp
++              $ENV{ISSM_DIR}/src/c/solvers/solver_nonlinear.cpp PARENT_SCOPE)
++# }}}
++# THERMAL_SOURCES {{{
++set(THERMAL_SOURCES $ENV{ISSM_DIR}/src/c/solvers/solver_thermal_nonlinear.cpp PARENT_SCOPE)
++# }}}
++# DIAGNOSTIC_SOURCES {{{
++set(DIAGNOSTIC_SOURCES $ENV{ISSM_DIR}/src/c/solvers/solver_stokescoupling_nonlinear.cpp PARENT_SCOPE)
++# }}}
+Index: ../trunk-jpl/src/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/src/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/src/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,8 @@
++# Subdirectories {{{
++add_subdirectory(c)
++#add_subdirectory(m)
++#add_subdirectory(wrappers)
++#Android Dir {{{
++# add_subdirectory(android)
++#}}}
++# }}}
+Index: ../trunk-jpl/CMakeLists.txt
+===================================================================
+--- ../trunk-jpl/CMakeLists.txt	(revision 0)
++++ ../trunk-jpl/CMakeLists.txt	(revision 14284)
+@@ -0,0 +1,74 @@
++# CMake version check. Version 2.6 is considered standard.
++cmake_minimum_required (VERSION 2.6) 
++
++# Project Information {{{
++# Project Name
++project(ISSM) 
++set(ISSM_VERSION_MAJOR 4)
++set(ISSM_VERSION_MINOR 1)
++# }}}
++# Contact Information {{{
++set(ISSM_EMAIL "issm@jpl.nasa.gov")
++set(ISSM_WEBSITE "http://issm.jpl.nasa.gov")
++# }}}
++
++# Environment Variables {{{
++# Out of source build can be done here.
++set(CMAKE_BINARY_DIR ${ISSM_DIR})
++# }}}
++
++# Install Targets {{{
++# Install 'issm.exe'
++#install(TARGETS issm RUNTIME)
++
++# Install 'libISSMCore.a' and 'libISSMOverload.a'
++# install(TARGETS ISSMCore
++#                ISSMOverload
++#        ARCHIVE)
++# }}}
++# Optional Install {{{
++#if(${SHARED_LIBS} IS ON)
++#   install(TARGETS ISSMCore
++#                   ISSMOverload
++#           LIBRARY)
++#endif(${SHARED_LIBS} IS ON)
++# }}}
++
++# Language Checks {{{
++
++# 'C' language check.
++include(CheckLanguage)
++
++check_language(C)
++if(CMAKE_C_COMPILER)
++   enable_language(C)
++else(CMAKE_C_COMPILER)
++   message(FATAL_ERROR "No C support found!")
++endif(CMAKE_C_COMPILER)
++
++# 'C++' language check.
++check_language(CXX)
++if(CMAKE_CXX_COMPILER)
++   enable_language(CXX)
++else(CMAKE_CXX_COMPILER)
++   message(FATA_ERROR "No C++ support found!")
++endif(CMAKE_CXX_COMPILER)
++
++# 'Fortran' language check.
++#check_language(Fortran)
++#if(CMAKE_Fortran_COMPILER)
++#   enable_language(Fortran)
++#else(CMAKE_Fortran_COMPILER)
++#   message(FATA_ERROR "No Fortran support")
++#endif(CMAKE_Fortran_COMPILER)
++# }}}
++
++# Subdirectories {{{
++add_subdirectory(src) 
++# }}}
++
++# Options {{{
++option(SHARED_LIBS "Set whether to produce shared libraries, or not. Default is no."
++       OFF)
++# Questionable whether all options should be contained within this file or included from some other file.
++# }}}
Index: /issm/oecreview/Archive/14064-14311/ISSM-14284-14285.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14284-14285.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14284-14285.diff	(revision 14312)
@@ -0,0 +1,26 @@
+Index: ../trunk-jpl/externalpackages/adolc/install-dev.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/adolc/install-dev.sh	(revision 14284)
++++ ../trunk-jpl/externalpackages/adolc/install-dev.sh	(revision 14285)
+@@ -5,7 +5,7 @@
+ rm -rf install adolc*issm
+ 
+ git clone -b 2.3.x_ISSM  git://git.mcs.anl.gov/adol-c.git adolc_issm
+-git reset --hard b254b2a001a1b7a024a9184cd087ae06eb975cad
++#git reset --hard b254b2a001a1b7a024a9184cd087ae06eb975cad
+ 
+ #Compile ADOL-C
+ cd adolc_issm
+Index: ../trunk-jpl/externalpackages/adolc/install-update-dev.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/adolc/install-update-dev.sh	(revision 14284)
++++ ../trunk-jpl/externalpackages/adolc/install-update-dev.sh	(revision 14285)
+@@ -14,7 +14,7 @@
+ #update and compile
+ cd adolc_issm
+ git pull
+-git reset --hard b254b2a001a1b7a024a9184cd087ae06eb975cad
++#git reset --hard b254b2a001a1b7a024a9184cd087ae06eb975cad
+ 
+ autoreconf -f -i 
+ ./configure --prefix=$ISSM_DIR/externalpackages/adolc/install 
Index: /issm/oecreview/Archive/14064-14311/ISSM-14285-14286.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14285-14286.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14285-14286.diff	(revision 14312)
@@ -0,0 +1,62 @@
+Index: ../trunk-jpl/src/m/plot/plot_BC.m
+===================================================================
+--- ../trunk-jpl/src/m/plot/plot_BC.m	(revision 14285)
++++ ../trunk-jpl/src/m/plot/plot_BC.m	(revision 14286)
+@@ -6,31 +6,36 @@
+ hold on
+ 
+ %plot dirichlets
+-h1=plot3(...
+-	md.mesh.x(find(~isnan(md.diagnostic.spcvx(1:md.mesh.numberofvertices,1)))),...
+-	md.mesh.y(find(~isnan(md.diagnostic.spcvx(1:md.mesh.numberofvertices,1)))),...
+-	md.mesh.z(find(~isnan(md.diagnostic.spcvx(1:md.mesh.numberofvertices,1)))),...
+-	'ro','MarkerSize',14,'MarkerFaceColor','r');
+-h2=plot3(...
+-	md.mesh.x(find(~isnan(md.diagnostic.spcvy(1:md.mesh.numberofvertices,1)))),...
+-	md.mesh.y(find(~isnan(md.diagnostic.spcvy(1:md.mesh.numberofvertices,1)))),...
+-	md.mesh.z(find(~isnan(md.diagnostic.spcvy(1:md.mesh.numberofvertices,1)))),...
+-	'bo','MarkerSize',10,'MarkerFaceColor','b');
+-h3=plot3(...
+-	md.mesh.x(find(~isnan(md.diagnostic.spcvz(1:md.mesh.numberofvertices,1)))),...
+-	md.mesh.y(find(~isnan(md.diagnostic.spcvz(1:md.mesh.numberofvertices,1)))),...
+-	md.mesh.z(find(~isnan(md.diagnostic.spcvz(1:md.mesh.numberofvertices,1)))),...
+-	'yo','MarkerSize',6 ,'MarkerFaceColor','y');
++dirichleton=getfieldvalue(options,'dirichlet','on');
++if strcmpi(dirichleton,'on'),
++	h1=plot3(...
++		md.mesh.x(find(~isnan(md.diagnostic.spcvx(1:md.mesh.numberofvertices,1)))),...
++		md.mesh.y(find(~isnan(md.diagnostic.spcvx(1:md.mesh.numberofvertices,1)))),...
++		md.mesh.z(find(~isnan(md.diagnostic.spcvx(1:md.mesh.numberofvertices,1)))),...
++		'ro','MarkerSize',14,'MarkerFaceColor','r');
++	h2=plot3(...
++		md.mesh.x(find(~isnan(md.diagnostic.spcvy(1:md.mesh.numberofvertices,1)))),...
++		md.mesh.y(find(~isnan(md.diagnostic.spcvy(1:md.mesh.numberofvertices,1)))),...
++		md.mesh.z(find(~isnan(md.diagnostic.spcvy(1:md.mesh.numberofvertices,1)))),...
++		'bo','MarkerSize',10,'MarkerFaceColor','b');
++	h3=plot3(...
++		md.mesh.x(find(~isnan(md.diagnostic.spcvz(1:md.mesh.numberofvertices,1)))),...
++		md.mesh.y(find(~isnan(md.diagnostic.spcvz(1:md.mesh.numberofvertices,1)))),...
++		md.mesh.z(find(~isnan(md.diagnostic.spcvz(1:md.mesh.numberofvertices,1)))),...
++		'yo','MarkerSize',6 ,'MarkerFaceColor','y');
++end
+ 
+ %update legend
+ [legend_h,object_h,plot_h,text_strings]=legend();
+ legend('off');
+-text_strings{end+1}='vx Dirichlet';
+-text_strings{end+1}='vy Dirichlet';
+-if h3, text_strings{end+1}='vz Dirichlet'; end
+-plot_h(end+1)=h1;
+-plot_h(end+1)=h2;
+-if h3, plot_h(end+1)=h3; end
++if strcmpi(dirichleton,'on'),
++	text_strings{end+1}='vx Dirichlet';
++	text_strings{end+1}='vy Dirichlet';
++	if h3, text_strings{end+1}='vz Dirichlet'; end
++	plot_h(end+1)=h1;
++	plot_h(end+1)=h2;
++	if h3, plot_h(end+1)=h3; end
++end
+ legend(plot_h,text_strings,'location','NorthEast')
+ 
+ hold off
Index: /issm/oecreview/Archive/14064-14311/ISSM-14286-14287.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14286-14287.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14286-14287.diff	(revision 14312)
@@ -0,0 +1,30 @@
+Index: ../trunk-jpl/src/c/classes/IssmComm.cpp
+===================================================================
+--- ../trunk-jpl/src/c/classes/IssmComm.cpp	(revision 14286)
++++ ../trunk-jpl/src/c/classes/IssmComm.cpp	(revision 14287)
+@@ -20,11 +20,12 @@
+ int IssmComm::GetRank(){  /*{{{*/
+ 	int my_rank = 0;
+ 
++	
++	#ifdef _HAVE_MPI_
++	MPI_Comm_rank(comm,&my_rank);
++	#else
+ 	/*for matlab and python modules, comm == -1*/
+ 	if((int)comm==-1) return my_rank;
+-
+-	#ifdef _HAVE_MPI_
+-	MPI_Comm_rank(comm,&my_rank);
+ 	#endif
+ 
+ 	return my_rank;
+@@ -34,9 +35,6 @@
+ 
+ 	int size = 1;
+ 
+-	/*for matlab and python modules, comm == -1*/
+-	if((int)comm==-1) return size;
+-
+ 	#ifdef _HAVE_MPI_
+ 	MPI_Comm_size(comm,&size);
+ 	#endif
Index: /issm/oecreview/Archive/14064-14311/ISSM-14287-14288.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14287-14288.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14287-14288.diff	(revision 14312)
@@ -0,0 +1,716 @@
+Index: ../trunk-jpl/externalpackages/metis/install-4.0-hoffman2.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/metis/install-4.0-hoffman2.sh	(revision 0)
++++ ../trunk-jpl/externalpackages/metis/install-4.0-hoffman2.sh	(revision 14288)
+@@ -0,0 +1,24 @@
++#!/bin/bash
++set -eu
++
++#Some cleanup
++rm -rf install metis-4.0
++mkdir install
++
++#Download from ISSM server
++$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/metis-4.0.tar.gz' 'metis-4.0.tar.gz'
++
++#Untar 
++tar -zxvf  metis-4.0.tar.gz
++
++#Move metis into install directory
++mv metis-4.0/* install
++rm -rf metis-4.0
++
++#Apply patches
++cd install 
++patch -p1 < ../metis-4.0.patch
++patch Makefile.in ../configs/4.0/pleiades/Makefile.in.patch
++
++#Compile
++make
+
+Property changes on: ../trunk-jpl/externalpackages/metis/install-4.0-hoffman2.sh
+___________________________________________________________________
+Added: svn:executable
+## -0,0 +1 ##
++*
+Index: ../trunk-jpl/externalpackages/howatmask/enviread.m
+===================================================================
+--- ../trunk-jpl/externalpackages/howatmask/enviread.m	(revision 0)
++++ ../trunk-jpl/externalpackages/howatmask/enviread.m	(revision 14288)
+@@ -0,0 +1,323 @@
++function I=enviread(varargin)
++%enviread: Read binary image files using ENVI header information
++%
++%I=enviread('filename') where the header file is named filename.hdr
++%and exists in the same directory. Otherwise use 
++%
++%I=enviread('filename','hdrfilename')
++%
++%The output structure I contains fields I.x, I.y, I.z and I.info
++%containing the x-coordinate vector, y-coordinate vector,
++%images data and header info, respectively. I.z will be in whatever
++%number format (double, int, etc.) as in the envi file.
++%
++%Original version by Ian Howat, Ohio State Universtiy, ihowat@gmail.com
++%Thanks to Yushin Ahn and Ray Jung
++%
++%% Current version 3 - adding subsetting feature to read only parts of
++%% files.
++
++file=varargin{1};
++hdrfile=[deblank(file),'.hdr'];
++info=read_envihdr(hdrfile);
++sub = [1, info.samples, 1, info.lines];
++if nargin==2
++    if varargin{2}=='date'
++        [pathstr, name, ext, versn] = fileparts(file);
++        info.hdrname=hdrfile;
++        info.ipath=pathstr;
++        info.iname=name;
++        info.ipname=file;
++        info.year =name(1:4);
++        info.month=name(5:6);
++        info.day  =name(7:8);
++        info.date =name(1:8);
++        info.sfname=name(1:14);
++        info.datenum=datenum(str2double(info.year),...
++            str2double(info.month),str2double(info.day));
++    end
++end
++
++% subset
++if nargin == 3;
++    if strcmp(varargin{2},'pixel_subset');
++        sub = varargin{3};
++    elseif strcmp(varargin{2},'map_subset');
++        sub = varargin{3};
++        subx = (sub(1:2)-info.map_info.mapx)./info.map_info.dx;
++        suby = (info.map_info.mapy - sub(3:4))./info.map_info.dy;
++        subx = round(subx);
++        suby = round(suby);
++        
++        subx(subx < 1) = 1;
++        suby(suby < 1) = 1;
++        subx(subx > info.samples) = info.samples;
++        suby(suby > info.lines)   = info.lines;
++      
++        sub  = [subx,suby];
++    end
++end
++
++sub(1:2) = sort(sub(1:2));
++sub(3:4) = sort(sub(3:4));
++
++
++%% Make geo-location vectors
++if isfield(info.map_info,'mapx') && isfield(info.map_info,'mapy')
++    xi = info.map_info.image_coords(1);
++    yi = info.map_info.image_coords(2);
++    xm = info.map_info.mapx;
++    ym = info.map_info.mapy;
++    %adjust points to corner (1.5,1.5)
++    if yi > 1.5
++        ym =  ym + ((yi*info.map_info.dy)-info.map_info.dy);
++    end
++    if xi > 1.5
++        xm = xm - ((xi*info.map_info.dy)-info.map_info.dx);
++    end
++
++    I.x = xm + ((0:info.samples-1).*info.map_info.dx);
++    I.y = ym - ((0:info.lines-1).*  info.map_info.dy);
++    %I.x = xm + (subE(1):subE(2)-1).*info.map_info.dx;
++    %I.y = ym - (subE(3):subE(4)-1).*info.map_info.dy;
++end
++
++
++I.x = I.x(sub(1):sub(2));
++I.y = I.y(sub(3):sub(4));
++
++
++%% Set binary format parameters
++switch info.byte_order
++    case {0}
++        machine = 'ieee-le';
++    case {1}
++        machine = 'ieee-be';
++    otherwise
++        machine = 'n';
++end
++switch info.data_type
++    case {1}
++        format = 'uint8';
++    case {2}
++        format= 'int16';
++    case{3}
++        format= 'int32';
++    case {4}
++        format= 'single';
++    case {5}
++        format= 'double';
++    case {6}
++        disp('>> Sorry, Complex (2x32 bits)data currently not supported');
++        disp('>> Importing as double-precision instead');
++        format= 'double';
++    case {9}
++        error('Sorry, double-precision complex (2x64 bits) data currently not supported');
++    case {12}
++        format= 'uint16';
++    case {13}
++        format= 'uint32';
++    case {14}
++        format= 'int64';
++    case {15}
++        format= 'uint64';
++    otherwise
++        error(['File type number: ',num2str(dtype),' not supported']);
++end
++
++%% file read
++% Version 2 code by Yushin Ahn - replaces resize calls with loops (except
++% for BIP formats) to work on big arrays.
++
++        %tmp=zeros(info.lines, info.samples,info.bands,format);
++        tmp=zeros(sub(4)-sub(3)+1,sub(2)-sub(1)+1,info.bands,format);
++        fid=fopen(file,'r');
++
++switch lower(info.interleave)
++
++    case {'bsq'}
++        % Format:
++        % [Band 1]       
++        % R1: C1, C2, C3, ...
++        % R2: C1, C2, C3, ...
++        %  ...
++        % RN: C1, C2, C3, ...
++        %
++        % [Band 2]
++        %  ...
++        % [Band N]
++
++%% Old Script w/out subsetting
++%         for b=1:info.bands
++%             for i=1:info.lines
++%                 t=fread(fid,info.samples,format);
++%                 tmp(i,:,b)=t;    
++%             end
++%         end
++        
++%% New Subsetting script - IMH
++        offset1=(sub(3)-1)*info.samples;
++        fseek(fid,offset1,'bof');
++        for b=1:info.bands
++            for i=sub(3):sub(4)
++                t=fread(fid,info.samples,format);
++                %if i >=  sub(3) && i <= sub(4)
++                    tmp(i-sub(3)+1,:,b)=t(sub(1):sub(2));
++                %end
++            end
++            offset2 = info.samples*info.lines*b+offset1;
++            fseek(fid,offset2,'bof');
++        end
++
++    case {'bil'}
++        % Format:        
++        % [Row 1]      
++        % B1: C1, C2, C3, ...
++        % B2: C1, C2, C3, ...
++        %
++        %  ...
++        % [Row N]
++
++%         for i=1:info.lines
++%             for b=1:info.bands
++%                  t=fread(fid,info.samples,format);
++%                 tmp(i,:,b)=t;       
++%             end
++%         end
++      
++%% New Subsetting script - IMH
++        for i=1:sub(4) 
++            for b=1:info.bands
++                t=fread(fid,info.samples,format);
++                if i >=  sub(3) && i <= sub(4) 
++                    tmp(i-sub(3)+1,:,b)=t(sub(1):sub(2));    
++                end
++            end
++        end
++
++
++
++    case {'bip'}
++    
++        % Row 1
++        % C1: B1 B2 B3, ...
++        % C2: B1 B2 B3, ...
++        % ...
++        % Row N
++        %This section authored by Ray Jung, APL-Johns Hopkins
++        Z = fread(fid,info.samples*info.lines*info.bands,format,0,machine);  
++        Z = reshape(Z, [info.bands, info.samples, info.lines]);
++
++        for k=1:info.bands
++            tmp(:,:,k) = squeeze(Z(k,:,:))';
++        end     
++end
++fclose(fid);
++
++% tmp2=zeros(subE(4)-subE(3)+1,subE(2)-subE(1)+1,info.bands,format);
++% [a,b]=size(tmp);
++% for i=1:info.bands
++%     tmp2(xoff+1:a,yoff+1:b,1)=tmp(1:a,1:b,1);
++% end
++I.z=tmp;
++I.info =info;
++
++
++
++%% sub function
++function info = read_envihdr(hdrfile)
++% READ_ENVIHDR read and return ENVI image file header information.
++%   INFO = READ_ENVIHDR('HDR_FILE') reads the ASCII ENVI-generated image
++%   header file and returns all the information in a structure of
++%   parameters.
++%
++%   Example:
++%   >> info = read_envihdr('my_envi_image.hdr')
++%   info =
++%          description: [1x101 char]
++%              samples: 658
++%                lines: 749
++%                bands: 3
++%        header_offset: 0
++%            file_type: 'ENVI Standard'
++%            data_type: 4
++%           interleave: 'bsq'
++%          sensor_type: 'Unknown'
++%           byte_order: 0
++%             map_info: [1x1 struct]
++%      projection_info: [1x102 char]
++%     wavelength_units: 'Unknown'
++%           pixel_size: [1x1 struct]
++%           band_names: [1x154 char]
++%
++%   NOTE: This function is used by ENVIREAD to import data.
++% Ian M. Howat, Applied Physics Lab, University of Washington
++% ihowat@apl.washington.edu
++% Version 1: 19-Jul-2007 00:50:57
++fid = fopen(hdrfile);
++while fid;
++    line = fgetl(fid);
++    if line == -1
++        break
++    else
++        eqsn = findstr(line,'=');
++        if ~isempty(eqsn)
++            param = strtrim(line(1:eqsn-1));
++            param(findstr(param,' ')) = '_';
++            value = strtrim(line(eqsn+1:end));
++            if isempty(str2num(value))
++                if ~isempty(findstr(value,'{')) && isempty(findstr(value,'}'))
++                    while isempty(findstr(value,'}'))
++                        line = fgetl(fid);
++                        value = [value,strtrim(line)];
++                    end
++                end
++                eval(['info.',param,' = ''',value,''';'])
++            else
++                eval(['info.',param,' = ',value,';'])
++            end
++        end
++    end
++end
++fclose(fid);
++
++if isfield(info,'map_info')
++    line = info.map_info;
++    line(line == '{' | line == '}') = [];
++    line = strtrim(split(line,','));
++    info.map_info = [];
++    info.map_info.projection = line{1};
++    info.map_info.image_coords = [str2num(line{2}),str2num(line{3})];
++    info.map_info.mapx = str2num(line{4});
++    info.map_info.mapy = str2num(line{5});
++    info.map_info.dx  = str2num(line{6});
++    info.map_info.dy  = str2num(line{7});
++    if length(line) == 9
++        info.map_info.datum  = line{8};
++        info.map_info.units  = line{9}(7:end);
++    elseif length(line) == 11
++        info.map_info.zone  = str2num(line{8});
++        info.map_info.hemi  = line{9};
++        info.map_info.datum  = line{10};
++        info.map_info.units  = line{11}(7:end);
++    end
++end
++
++if isfield(info,'pixel_size')
++    line = info.pixel_size;
++    line(line == '{' | line == '}') = [];
++    line = strtrim(split(line,','));
++    info.pixel_size = [];
++    info.pixel_size.x = str2num(line{1});
++    info.pixel_size.y = str2num(line{2});
++    info.pixel_size.units = line{3}(7:end);
++end
++
++%%
++function A = split(s,d)
++%This function by Gerald Dalley (dalleyg@mit.edu), 2004
++A = {};
++while (length(s) > 0)
++    [t,s] = strtok(s,d);
++    A = {A{:}, t};
++end
+Index: ../trunk-jpl/externalpackages/howatmask/subsetGimpIceMask.m
+===================================================================
+--- ../trunk-jpl/externalpackages/howatmask/subsetGimpIceMask.m	(revision 0)
++++ ../trunk-jpl/externalpackages/howatmask/subsetGimpIceMask.m	(revision 14288)
+@@ -0,0 +1,282 @@
++function [M,Mx,My] = subsetGimpIceMask(x0,x1,y0,y1)
++% subsetGimpIceMask samples mask tiles for a given coordinate range
++%
++%   [M,Mx,My] = subsetGimpIceMask(x0,x1,y0,y1) returns the mask in array M
++%   with map vectors Mx and My within the bounding box specified by
++%   coordinate ranges x0 < x1 and y0 < y1. The function finds tiles
++%   overlappimg the box, samples the tiles and mosaics the samples into one
++%   array.
++%
++% 	Example: Specify the following coordinate range and map the result.
++%   >> x0 = 260000; x1 = 377900;  y0 = -2609400; y1 = -2543000;
++%   >> [M,Mx,My] = subsetGimpIceMask(x0,x1,y0,y1);
++%   >> imagesc(Mx,My,M); axis equal xy; colormap gray;
++%
++%   Ian Howat, Ohio State University, ihowat@gmail.com
++%   The Greenland Ice Mapping Project is funded by NASA.
++%   $Revision: 0 $  $Date: 09-Nov-2011 14:48:24$
++%
++
++%make coordinate index
++nt = 6;
++ps = 15;
++xn0 = -640000 ; %xn1 = 857550;
++yn0 =  -3313350; %yn1 = -665450;
++
++c = 16640;
++r = 29420;
++
++x = xn0:ps:xn0 + c.*ps.*nt;
++y = yn0:ps:yn0 + r.*ps.*nt;
++
++X = cell(1,nt);
++Y = cell(nt,1);
++i=1;
++for i=1:nt;
++    
++    X{i} = [x((i-1)*c+1),x(i*c)];
++    Y{i} = [y((i-1)*r+1),y(i*r)];
++    
++end
++
++X = repmat(X,[nt,1]);
++Y = repmat(Y,[1,nt]);
++N = cell(size(X));
++
++
++i=1;
++for i=1:numel(X)
++    N{i} = [[X{i}(1),Y{i}(2)];...
++        [X{i}(2),Y{i}(2)];...
++        [X{i}(2),Y{i}(1)];...
++        [X{i}(1),Y{i}(1)]];
++end
++
++
++%% find overlapping tiles
++p = [[x0,y1];[x1,y1];[x1,y0];[x0,y0]];
++
++n = zeros(size(N));
++
++i=1;
++for i=1:numel(N)
++    n(i) = any(inpolygon(p(:,1),p(:,2),N{i}(:,1),N{i}(:,2)));
++end
++i=1;
++for i=1:size(n,1)
++    n(i,find(n(i,:),1,'first'):find(n(i,:),1,'last')) = 1;
++end
++i=1;
++for i=1:size(n,2)
++    n(find(n(:,i),1,'first'):find(n(:,i),1,'last'),i) = 1;
++end
++
++[i,j] = find(n);
++row = (min(i):max(i))';
++col = min(j):max(j);
++col = repmat(col,[length(row),1])-1;
++row = repmat(row,[1,size(col,2)])-1;
++
++% make output cells
++M = cell(size(row));
++Mx = M;
++My = M;
++
++% read each overlapping file and populate output cell
++j=1;
++for j=1:size(col,2)
++    i=1;
++    for i=1:size(row,1);
++        m = enviread(['GimpIceMask_15m_tile',num2str(col(i,j)),'_',...
++            num2str(row(i,j))],'map_subset',[x0 x1 y0 y1]);
++        M{end-i+1,j} = m.z;
++        Mx{end-i+1,j} = m.x;
++        My{end-i+1,j} = m.y';
++        
++        
++    end
++end
++
++% put together cells
++M = cell2mat(M);
++Mx =cell2mat(Mx(1,:));
++My =cell2mat(My(:,1));
++
++
++function I=enviread(varargin)
++
++file=varargin{1};
++hdrfile=[deblank(file),'.hdr'];
++info=read_envihdr(hdrfile);
++sub = [1, info.samples, 1, info.lines];
++
++sub = varargin{3};
++subx = (sub(1:2)-info.map_info.mapx)./info.map_info.dx;
++suby = (info.map_info.mapy - sub(3:4))./info.map_info.dy;
++subx = round(subx);
++suby = round(suby);
++
++subx(subx < 1) = 1;
++suby(suby < 1) = 1;
++subx(subx > info.samples) = info.samples;
++suby(suby > info.lines)   = info.lines;
++
++sub  = [subx,suby];
++
++sub(1:2) = sort(sub(1:2));
++sub(3:4) = sort(sub(3:4));
++
++%% Make geo-location vectors
++if isfield(info.map_info,'mapx') && isfield(info.map_info,'mapy')
++    xi = info.map_info.image_coords(1);
++    yi = info.map_info.image_coords(2);
++    xm = info.map_info.mapx;
++    ym = info.map_info.mapy;
++    %adjust points to corner (1.5,1.5)
++    if yi > 1.5
++        ym =  ym + ((yi*info.map_info.dy)-info.map_info.dy);
++    end
++    if xi > 1.5
++        xm = xm - ((xi*info.map_info.dy)-info.map_info.dx);
++    end
++    
++    I.x = xm + ((0:info.samples-1).*info.map_info.dx);
++    I.y = ym - ((0:info.lines-1).*  info.map_info.dy);
++    
++end
++
++I.x = I.x(sub(1):sub(2));
++I.y = I.y(sub(3):sub(4));
++
++%% Set binary format parameters
++switch info.byte_order
++    case {0}
++        machine = 'ieee-le';
++    case {1}
++        machine = 'ieee-be';
++    otherwise
++        machine = 'n';
++end
++
++format = 'uint8';
++
++tmp=zeros(sub(4)-sub(3)+1,sub(2)-sub(1)+1,info.bands,format);
++fid=fopen(file,'r');
++
++offset1=(sub(3)-1)*info.samples;
++fseek(fid,offset1,'bof');
++for b=1:info.bands
++    for i=sub(3):sub(4)
++        t=fread(fid,info.samples,format);
++        tmp(i-sub(3)+1,:,b)=t(sub(1):sub(2));
++    end
++    offset2 = info.samples*info.lines*b+offset1;
++    fseek(fid,offset2,'bof');
++end
++
++fclose(fid);
++
++I.z=tmp;
++I.info =info;
++
++%% sub function
++function info = read_envihdr(hdrfile)
++% READ_ENVIHDR read and return ENVI image file header information.
++%   INFO = READ_ENVIHDR('HDR_FILE') reads the ASCII ENVI-generated image
++%   header file and returns all the information in a structure of
++%   parameters.
++%
++%   Example:
++%   >> info = read_envihdr('my_envi_image.hdr')
++%   info =
++%          description: [1x101 char]
++%              samples: 658
++%                lines: 749
++%                bands: 3
++%        header_offset: 0
++%            file_type: 'ENVI Standard'
++%            data_type: 4
++%           interleave: 'bsq'
++%          sensor_type: 'Unknown'
++%           byte_order: 0
++%             map_info: [1x1 struct]
++%      projection_info: [1x102 char]
++%     wavelength_units: 'Unknown'
++%           pixel_size: [1x1 struct]
++%           band_names: [1x154 char]
++%
++%   NOTE: This function is used by ENVIREAD to import data.
++% Ian M. Howat, Applied Physics Lab, University of Washington
++% ihowat@apl.washington.edu
++% Version 1: 19-Jul-2007 00:50:57
++fid = fopen(hdrfile);
++while fid;
++    line = fgetl(fid);
++    if line == -1
++        break
++    else
++        eqsn = findstr(line,'=');
++        if ~isempty(eqsn)
++            param = strtrim(line(1:eqsn-1));
++            param(findstr(param,' ')) = '_';
++            value = strtrim(line(eqsn+1:end));
++            if isempty(str2num(value))
++                if ~isempty(findstr(value,'{')) && isempty(findstr(value,'}'))
++                    while isempty(findstr(value,'}'))
++                        line = fgetl(fid);
++                        value = [value,strtrim(line)];
++                    end
++                end
++                eval(['info.',param,' = ''',value,''';'])
++            else
++                eval(['info.',param,' = ',value,';'])
++            end
++        end
++    end
++end
++fclose(fid);
++
++if isfield(info,'map_info')
++    line = info.map_info;
++    line(line == '{' | line == '}') = [];
++    line = strtrim(split(line,','));
++    info.map_info = [];
++    info.map_info.projection = line{1};
++    info.map_info.image_coords = [str2num(line{2}),str2num(line{3})];
++    info.map_info.mapx = str2num(line{4});
++    info.map_info.mapy = str2num(line{5});
++    info.map_info.dx  = str2num(line{6});
++    info.map_info.dy  = str2num(line{7});
++    if length(line) == 9
++        info.map_info.datum  = line{8};
++        info.map_info.units  = line{9}(7:end);
++    elseif length(line) == 11
++        info.map_info.zone  = str2num(line{8});
++        info.map_info.hemi  = line{9};
++        info.map_info.datum  = line{10};
++        info.map_info.units  = line{11}(7:end);
++    end
++end
++
++if isfield(info,'pixel_size')
++    line = info.pixel_size;
++    line(line == '{' | line == '}') = [];
++    line = strtrim(split(line,','));
++    info.pixel_size = [];
++    info.pixel_size.x = str2num(line{1});
++    info.pixel_size.y = str2num(line{2});
++    info.pixel_size.units = line{3}(7:end);
++end
++
++%%
++function A = split(s,d)
++%This function by Gerald Dalley (dalleyg@mit.edu), 2004
++A = {};
++while (length(s) > 0)
++    [t,s] = strtok(s,d);
++    A = {A{:}, t};
++end
++
++
++
++
+Index: ../trunk-jpl/externalpackages/petsc/install-3.2-hoffman2.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/petsc/install-3.2-hoffman2.sh	(revision 0)
++++ ../trunk-jpl/externalpackages/petsc/install-3.2-hoffman2.sh	(revision 14288)
+@@ -0,0 +1,35 @@
++#!/bin/bash
++set -eu
++
++#Some cleanup
++rm -rf install petsc-3.2-p3 src
++mkdir install src
++
++#Download from ISSM server
++$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-3.2-p3.tar.gz' 'petsc-3.2-p3.tar.gz'
++
++#Untar and move petsc to install directory
++tar -zxvf  petsc-3.2-p3.tar.gz
++mv petsc-3.2-p3/* src/
++rm -rf petsc-3.2-p3
++
++#configure
++cd src
++./config/configure.py \
++	--prefix="$ISSM_DIR/externalpackages/petsc/install" \
++	--with-mpi=1 \
++	--PETSC_ARCH=linux-gnu-amd64 \
++	--PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
++	--with-debugging=0 \
++	--download-mumps=yes \
++	--download-scalapack=yes \
++	--download-blacs=yes \
++	--download-blas=yes \
++	--download-f-blas-lapack=yes \
++	--download-plapack=yes \
++	--download-parmetis=yes \
++	--with-pic=1
++
++#Compile petsc and install it
++make
++make install
+
+Property changes on: ../trunk-jpl/externalpackages/petsc/install-3.2-hoffman2.sh
+___________________________________________________________________
+Added: svn:executable
+## -0,0 +1 ##
++*
+Index: ../trunk-jpl/externalpackages/gsl/install-android.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/gsl/install-android.sh	(revision 14287)
++++ ../trunk-jpl/externalpackages/gsl/install-android.sh	(revision 14288)
+@@ -27,13 +27,12 @@
+     mv ./../Makefile.am.patch ./
+     patch Makefile.am < Makefile.am.patch
+ 
+-    autoreconf -iv --force -I $ISSM_DIR/externalpackages/autotools/install/share/aclocal
++    autoreconf -i
+ 
+     ./configure \
+         --build="i386-apple-darwin10.8.0" \
+         --host=$host_triplet \
+-	    --prefix="$ISSM_DIR/externalpackages/gsl/install/" \
+-        --disable-static
++	    --prefix="$ISSM_DIR/externalpackages/gsl/install"
+ fi
+ 
+ #Compile gsl
Index: /issm/oecreview/Archive/14064-14311/ISSM-14288-14289.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14288-14289.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14288-14289.diff	(revision 14312)
@@ -0,0 +1,29 @@
+Index: ../trunk-jpl/configs/config-hoffman2.sh
+===================================================================
+--- ../trunk-jpl/configs/config-hoffman2.sh	(revision 0)
++++ ../trunk-jpl/configs/config-hoffman2.sh	(revision 14289)
+@@ -0,0 +1,18 @@
++#!/bin/csh
++
++./configure \
++ --prefix=$ISSM_DIR \
++ --with-wrappers=no \
++ --with-metis-dir=$ISSM_DIR/externalpackages/metis/install \
++ --with-petsc-dir=$ISSM_DIR/externalpackages/petsc/install \
++ --with-mpi-include=/u/local/intel/11.1/openmpi/1.4.5/include \
++ --with-mpi-lib="-L/u/local/intel/11.1/openmpi/1.4.5/include -lmpi" \
++ --with-petsc-arch=$ISSM_ARCH \
++ --with-plapack-lib="-L$ISSM_DIR/externalpackages/petsc/install/ -lPLAPACK" \
++ --with-plapack-include="-I$ISSM_DIR/externalpackages/petsc/install/externalpackages/PLAPACKR32-hg/INCLUDE" \
++ --with-mumps-dir=$ISSM_DIR/externalpackages/petsc/install/ \
++ --with-blas-lapack-dir=$ISSM_DIR/externalpackages/petsc/install \
++ --with-scalapack-dir=$ISSM_DIR/externalpackages/petsc/install/ \
++ --with-blacs-dir=$ISSM_DIR/externalpackages/petsc/install/ \
++ --with-graphics-lib=/usr/lib64/libX11.so \
++ --with-cxxoptflags="-O3 -L/u/local/intel/11.1/openmpi/1.4.5/lib -lmpi -lmpi_f77 -lmpi_cxx"
+
+Property changes on: ../trunk-jpl/configs/config-hoffman2.sh
+___________________________________________________________________
+Added: svn:executable
+## -0,0 +1 ##
++*
Index: /issm/oecreview/Archive/14064-14311/ISSM-14289-14290.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14289-14290.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14289-14290.diff	(revision 14312)
@@ -0,0 +1,74 @@
+Index: ../trunk-jpl/src/c/classes/IssmComm.cpp
+===================================================================
+--- ../trunk-jpl/src/c/classes/IssmComm.cpp	(revision 14289)
++++ ../trunk-jpl/src/c/classes/IssmComm.cpp	(revision 14290)
+@@ -12,20 +12,32 @@
+ #include "../include/types.h"
+ 
+ void IssmComm::SetComm(COMM incomm){ /*{{{*/
+-	comm=incomm;
++
++	/*A comm is provided, we are running in parallel (this is not a module)*/
++	parallel = true;
++	comm     = incomm;
++
+ }/*}}}*/
++void IssmComm::SetComm(void){ /*{{{*/
++
++	/*no comm provided, This is a matlab/python module*/
++	parallel = true;
++	comm     = incomm;
++
++}/*}}}*/
+ COMM IssmComm::GetComm(){  /*{{{*/
++	if(!parallel) _error_("Cannot return comm in serial mode");
+ 	return comm;
+ }/*}}}*/
+ int IssmComm::GetRank(){  /*{{{*/
++
+ 	int my_rank = 0;
++	
++	/*for matlab and python modules*/
++	if(!parallel) return my_rank;
+ 
+-	
+ 	#ifdef _HAVE_MPI_
+ 	MPI_Comm_rank(comm,&my_rank);
+-	#else
+-	/*for matlab and python modules, comm == -1*/
+-	if((int)comm==-1) return my_rank;
+ 	#endif
+ 
+ 	return my_rank;
+@@ -35,6 +47,9 @@
+ 
+ 	int size = 1;
+ 
++	/*for matlab and python modules*/
++	if(!parallel) return size;
++
+ 	#ifdef _HAVE_MPI_
+ 	MPI_Comm_size(comm,&size);
+ 	#endif
+Index: ../trunk-jpl/src/c/classes/IssmComm.h
+===================================================================
+--- ../trunk-jpl/src/c/classes/IssmComm.h	(revision 14289)
++++ ../trunk-jpl/src/c/classes/IssmComm.h	(revision 14290)
+@@ -20,12 +20,14 @@
+ 
+ 	private:
+ 		static COMM comm;
++		static bool parallel;
+ 
+ 	public:
+ 		static void SetComm(COMM incomm);
+-		static COMM GetComm();
+-		static int GetRank();
+-		static int GetSize();
++		static void SetComm(void);
++		static COMM GetComm(void);
++		static int GetRank(void);
++		static int GetSize(void);
+ };
+ 
+ #endif  /* _ISSM_COMM_H */
Index: /issm/oecreview/Archive/14064-14311/ISSM-14290-14291.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14290-14291.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14290-14291.diff	(revision 14312)
@@ -0,0 +1,26 @@
+Index: ../trunk-jpl/src/wrappers/python/include/wrapper_macros.h
+===================================================================
+--- ../trunk-jpl/src/wrappers/python/include/wrapper_macros.h	(revision 14290)
++++ ../trunk-jpl/src/wrappers/python/include/wrapper_macros.h	(revision 14291)
+@@ -22,7 +22,7 @@
+ 	int       nrhs   = (int)PyTuple_Size(args);  \
+ 	if(!output) return NULL;\
+ 	try{ \
+-	IssmComm::SetComm(-1);
++	IssmComm::SetComm();
+ 
+ #define MODULEEND(); }\
+   catch(ErrorException &exception){\
+Index: ../trunk-jpl/src/wrappers/matlab/include/wrapper_macros.h
+===================================================================
+--- ../trunk-jpl/src/wrappers/matlab/include/wrapper_macros.h	(revision 14290)
++++ ../trunk-jpl/src/wrappers/matlab/include/wrapper_macros.h	(revision 14291)
+@@ -18,7 +18,7 @@
+  * MODULEBOOT(); and MODULEEND(); at the beginning and end of a module, and c++ exceptions 
+  * will be trapped*/
+ #define MODULEBOOT(); try{ \
+-	IssmComm::SetComm(-1);
++	IssmComm::SetComm();
+ 
+ #define MODULEEND(); }\
+ 	catch(ErrorException &exception){\
Index: /issm/oecreview/Archive/14064-14311/ISSM-14291-14292.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14291-14292.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14291-14292.diff	(revision 14312)
@@ -0,0 +1,37 @@
+Index: ../trunk-jpl/src/c/include/globals.h
+===================================================================
+--- ../trunk-jpl/src/c/include/globals.h	(revision 14291)
++++ ../trunk-jpl/src/c/include/globals.h	(revision 14292)
+@@ -9,5 +9,6 @@
+ #include "../classes/IssmComm.h"
+ 
+ COMM IssmComm::comm;
++bool IssmComm::parallel;
+ 
+ #endif
+Index: ../trunk-jpl/src/c/classes/IssmComm.cpp
+===================================================================
+--- ../trunk-jpl/src/c/classes/IssmComm.cpp	(revision 14291)
++++ ../trunk-jpl/src/c/classes/IssmComm.cpp	(revision 14292)
+@@ -10,6 +10,8 @@
+ 
+ #include "./IssmComm.h"
+ #include "../include/types.h"
++#include "../include/macros.h"
++#include "../shared/Exceptions/exceptions.h"
+ 
+ void IssmComm::SetComm(COMM incomm){ /*{{{*/
+ 
+@@ -21,9 +23,10 @@
+ void IssmComm::SetComm(void){ /*{{{*/
+ 
+ 	/*no comm provided, This is a matlab/python module*/
+-	parallel = true;
+-	comm     = incomm;
++	parallel = false;
+ 
++	/*No need to initialise comm*/
++
+ }/*}}}*/
+ COMM IssmComm::GetComm(){  /*{{{*/
+ 	if(!parallel) _error_("Cannot return comm in serial mode");
Index: /issm/oecreview/Archive/14064-14311/ISSM-14292-14293.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14292-14293.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14292-14293.diff	(revision 14312)
@@ -0,0 +1,202 @@
+Index: ../trunk-jpl/src/c/shared/Elements/PrintArrays.cpp
+===================================================================
+--- ../trunk-jpl/src/c/shared/Elements/PrintArrays.cpp	(revision 14292)
++++ ../trunk-jpl/src/c/shared/Elements/PrintArrays.cpp	(revision 14293)
+@@ -38,6 +38,15 @@
+ 	}  
+ 	_printLine_("");
+ }
++void printarray(bool* array,int lines,int cols){
++	_printLine_("");
++	for(int i=0;i<lines;i++){  
++		_printString_("   [ ");
++		for(int j=0;j<cols;j++) _printString_( " " << array[i*cols+j]?1:0);
++		_printLine_(" ]");
++	}  
++	_printLine_("");
++}
+ void printbinary(int n){
+ 	unsigned int i=1L<<(sizeof(n)*8-1);
+ 	while (i>0) {
+Index: ../trunk-jpl/src/c/shared/Elements/elements.h
+===================================================================
+--- ../trunk-jpl/src/c/shared/Elements/elements.h	(revision 14292)
++++ ../trunk-jpl/src/c/shared/Elements/elements.h	(revision 14293)
+@@ -39,6 +39,7 @@
+ /*Print arrays*/
+ void printarray(IssmPDouble* array,int lines,int cols=1);
+ void printarray(int* array,int lines,int cols=1);
++void printarray(bool* array,int lines,int cols=1);
+ void printsparsity(IssmPDouble* array,int lines,int cols=1);
+ void printbinary(int n);
+ #endif //ifndef _SHARED_ELEMENTS_H_
+Index: ../trunk-jpl/src/c/shared/Exp/DomainOutlineWrite.cpp
+===================================================================
+--- ../trunk-jpl/src/c/shared/Exp/DomainOutlineWrite.cpp	(revision 14292)
++++ ../trunk-jpl/src/c/shared/Exp/DomainOutlineWrite.cpp	(revision 14293)
+@@ -1,56 +0,0 @@
+-/*!\file:  DomainOutlineWrite.cpp
+- * \brief DomainOutlineWrite.c: write the vertex coordinates defined in a domain 
+- * outline from Argus (.exp file). The first contour in the file is for 
+- * the outside domain outline. The following contours represent holes in
+- * the domain.
+- */
+-
+-#include <stdio.h>
+-#include "../Alloc/alloc.h"
+-#include "../../include/include.h"
+-#include "../Exceptions/exceptions.h"
+-
+-int DomainOutlineWrite(int nprof,int* profnvertices,double** pprofx,double** pprofy,bool* closed,char* domainname){
+-
+-	/*Error management: */
+-	int noerr=1;
+-	int i,counter;
+-
+-	/*I/O: */
+-	FILE* fid=NULL;
+-
+-	/*open domain outline file for writing: */
+-	if ((fid=fopen(domainname,"w"))==NULL){
+-		_error_("could not open domain file " << domainname); 
+-		noerr=0; goto cleanupandreturn;
+-	}
+-
+-	/*Start writing profiles: */
+-	for(counter=0;counter<nprof;counter++){
+-
+-		/*Write header: */
+-		fprintf(fid,"%s %s\n","##","Name:");
+-		fprintf(fid,"%s %s\n","##","Icon:0");
+-		fprintf(fid,"%s %s %s %s\n","#","Points","Count","Value");
+-
+-		/*Write number of profile vertices: */
+-		fprintf(fid,"%u %s\n",profnvertices[counter]  ,"1.");
+-
+-		/*Write next line: */
+-		fprintf(fid,"%s %s %s %s %s\n","#","X","pos","Y","pos");
+-
+-		/*Write vertices: */
+-		for (i=0;i<profnvertices[counter];i++){
+-			fprintf(fid,"%lf\t%lf\n",pprofx[counter][i],pprofy[counter][i]);
+-		}
+-
+-		/*Write blank line: */
+-		if(counter < nprof-1) fprintf(fid,"\n");
+-	}
+-
+-	/*close domain outline file: */
+-	fclose(fid);
+-
+-	cleanupandreturn: 
+-	return noerr;
+-}
+Index: ../trunk-jpl/src/c/shared/Exp/exp.h
+===================================================================
+--- ../trunk-jpl/src/c/shared/Exp/exp.h	(revision 14292)
++++ ../trunk-jpl/src/c/shared/Exp/exp.h	(revision 14293)
+@@ -11,7 +11,8 @@
+ #include "../../Container/Container.h"
+ 
+ int IsInPolySerial(double* in,double* xc,double* yc,int numvertices,double* x,double* y,int nods, int edgevalue);
+-int DomainOutlineWrite(int nprof,int* profnvertices,double** pprofx,double** pprofy,bool* closed,char* domainname);
++int ExpWrite(int nprof,int* profnvertices,double** pprofx,double** pprofy,char* domainname);
++int ExpWrite(DataSet* contours,char* domainname);
+ int pnpoly(int npol, double *xp, double *yp, double x, double y, int edgevalue);
+ 
+ /*IsInPoly {{{*/
+Index: ../trunk-jpl/src/c/shared/Exp/ExpWrite.cpp
+===================================================================
+--- ../trunk-jpl/src/c/shared/Exp/ExpWrite.cpp	(revision 0)
++++ ../trunk-jpl/src/c/shared/Exp/ExpWrite.cpp	(revision 14293)
+@@ -0,0 +1,77 @@
++/*!\file:  Exp.cpp
++ * \brief Exp.cpp: write the vertex coordinates defined in a domain 
++ * outline from Argus (.exp file). The first contour in the file is for 
++ * the outside domain outline. 
++ */
++#include <stdio.h>
++#include "../Alloc/alloc.h"
++#include "../../include/include.h"
++#include "../Exceptions/exceptions.h"
++#include "../../Container/DataSet.h"
++#include "../../classes/objects/Contour.h"
++
++int ExpWrite(int nprof,int* profnvertices,double** pprofx,double** pprofy,char* domainname){/*{{{*/
++
++	/*I/O: */
++	FILE* fid=NULL;
++
++	/*open domain outline file for writing: */
++	if((fid=fopen(domainname,"w"))==NULL) _error_("could not open domain file " << domainname); 
++
++	/*Start writing profiles: */
++	for(int counter=0;counter<nprof;counter++){
++
++		/*Write header: */
++		fprintf(fid,"## Name:%s\n",domainname);
++		fprintf(fid,"## Icon:0\n");
++		fprintf(fid,"# Points Count	Value\n");
++		fprintf(fid,"%u %s\n",profnvertices[counter]  ,"1.");
++		fprintf(fid,"# X pos	Y pos\n");
++
++		/*Write vertices: */
++		for(int i=0;i<profnvertices[counter];i++){
++			fprintf(fid,"%lf\t%lf\n",pprofx[counter][i],pprofy[counter][i]);
++		}
++
++		/*Write blank line: */
++		if(counter<nprof-1) fprintf(fid,"\n");
++	}
++
++	/*close Exp file: */
++	fclose(fid);
++
++	return 1;
++}/*}}}*/
++int ExpWrite(DataSet* contours,char* domainname){/*{{{*/
++
++	/*I/O: */
++	FILE* fid=NULL;
++	Contour<double>* contour = NULL;
++
++	/*open domain outline file for writing: */
++	if((fid=fopen(domainname,"w"))==NULL) _error_("could not open domain file " << domainname); 
++
++	for(int counter=0;counter<contours->Size();counter++){
++		contour=(Contour<double>*)contours->GetObjectByOffset(counter);
++
++		/*Write header: */
++		fprintf(fid,"## Name:%s\n",domainname);
++		fprintf(fid,"## Icon:0\n");
++		fprintf(fid,"# Points Count	Value\n");
++		fprintf(fid,"%u %s\n",contour->nods  ,"1.");
++		fprintf(fid,"# X pos	Y pos\n");
++
++		/*Write vertices: */
++		for(int i=0;i<contour->nods;i++){
++			fprintf(fid,"%lf\t%lf\n",contour->x[i],contour->y[i]);
++		}
++
++		/*Write blank line: */
++		if(counter<contours->Size()-1) fprintf(fid,"\n");
++	}
++
++	/*close Exp file: */
++	fclose(fid);
++
++	return 1;
++}/*}}}*/
+Index: ../trunk-jpl/src/c/Makefile.am
+===================================================================
+--- ../trunk-jpl/src/c/Makefile.am	(revision 14292)
++++ ../trunk-jpl/src/c/Makefile.am	(revision 14293)
+@@ -740,7 +740,7 @@
+ 			./shared/Exp/exp.h\
+ 			./shared/Exp/IsInPoly.cpp\
+ 			./shared/Exp/IsInPolySerial.cpp\
+-			./shared/Exp/DomainOutlineWrite.cpp\
++			./shared/Exp/ExpWrite.cpp\
+ 			./shared/TriMesh/trimesh.h\
+ 			./shared/TriMesh/AssociateSegmentToElement.cpp\
+ 			./shared/TriMesh/GridInsideHole.cpp\
Index: /issm/oecreview/Archive/14064-14311/ISSM-14293-14294.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14293-14294.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14293-14294.diff	(revision 14312)
@@ -0,0 +1,285 @@
+Index: ../trunk-jpl/src/wrappers/Exp2Kml/Exp2Kml.h
+===================================================================
+--- ../trunk-jpl/src/wrappers/Exp2Kml/Exp2Kml.h	(revision 14293)
++++ ../trunk-jpl/src/wrappers/Exp2Kml/Exp2Kml.h	(revision 14294)
+@@ -50,4 +50,3 @@
+ #define NLHS  1
+ 
+ #endif
+-
+Index: ../trunk-jpl/src/wrappers/matlab/Makefile.am
+===================================================================
+--- ../trunk-jpl/src/wrappers/matlab/Makefile.am	(revision 14293)
++++ ../trunk-jpl/src/wrappers/matlab/Makefile.am	(revision 14294)
+@@ -47,6 +47,7 @@
+ 						 ContourToNodes.la\
+ 						 ElementConnectivity.la\
+ 						 EnumToString.la\
++						 ExpSimplify.la\
+ 						 HoleFiller.la\
+ 						 InternalFront.la\
+ 						 InterpFromGridToMesh.la\
+@@ -210,6 +211,10 @@
+ 						 ../Ll2xy/Ll2xy.h
+ Ll2xy_la_LIBADD = ${deps} $(MPILIB) $(PETSCLIB)
+ 
++ExpSimplify_la_SOURCES = ../ExpSimplify/ExpSimplify.cpp\
++							../ExpSimplify/ExpSimplify.h
++ExpSimplify_la_LIBADD = ${deps} $(MPILIB) $(PETSCLIB)
++
+ Exp2Kml_la_SOURCES = ../Exp2Kml/Exp2Kml.cpp\
+ 							../Exp2Kml/Exp2Kml.h
+ Exp2Kml_la_LIBADD = ${deps} $(MPILIB) $(PETSCLIB)
+Index: ../trunk-jpl/src/wrappers/ExpSimplify/ExpSimplify.h
+===================================================================
+--- ../trunk-jpl/src/wrappers/ExpSimplify/ExpSimplify.h	(revision 0)
++++ ../trunk-jpl/src/wrappers/ExpSimplify/ExpSimplify.h	(revision 14294)
+@@ -0,0 +1,47 @@
++/*!\file ExpSimplify.h
++ * \brief: prototype for exp to kml file conversion mex module.
++ */
++
++#ifndef _EXPSIMPLIFY_H
++#define _EXPSIMPLIFY_H
++
++#ifdef HAVE_CONFIG_H
++	#include <config.h>
++#else
++	#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
++#endif
++
++/*For python modules: needs to come before header files inclusion*/
++#ifdef _HAVE_PYTHON_
++#define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
++#endif
++
++#include "../../c/include/globals.h"
++#include "../../c/modules/modules.h"
++#include "../../c/Container/Container.h"
++#include "../../c/shared/shared.h"
++#include "../bindings.h"
++
++#undef __FUNCT__ 
++#define __FUNCT__  "ExpSimplify"
++
++#ifdef _HAVE_MATLAB_MODULES_
++/* serial input macros: */
++#define EXPFILE   prhs[0]
++#define TOLERANCE prhs[1]
++/* serial output macros: */
++#endif
++
++#ifdef _HAVE_PYTHON_MODULES_
++/* serial input macros: */
++#define EXPFILE   PyTuple_GetItem(args,0)
++#define TOLERANCE PyTuple_GetItem(args,1)
++#endif
++
++/* serial arg counts: */
++#undef NRHS
++#define NRHS  2
++#undef NLHS
++#define NLHS  0
++
++#endif
+Index: ../trunk-jpl/src/wrappers/ExpSimplify/ExpSimplify.cpp
+===================================================================
+--- ../trunk-jpl/src/wrappers/ExpSimplify/ExpSimplify.cpp	(revision 0)
++++ ../trunk-jpl/src/wrappers/ExpSimplify/ExpSimplify.cpp	(revision 14294)
+@@ -0,0 +1,196 @@
++/*\file ExpSimplify.c
++ *\brief: exp to kml file conversion mex module.
++ */
++#include "./ExpSimplify.h"
++
++void ExpSimplifyUsage(void){/*{{{*/
++	_pprintLine_("ExpSimplify - Simplify Exp contour");
++	_pprintLine_("");
++	_pprintLine_("   Recursive Douglas-Peucker Polygon Simplification");
++	_pprintLine_("");
++	_pprintLine_("   Usage:");
++	_pprintLine_("      ExpSimplify(expfile,tol);");
++	_pprintLine_("      - expfile: name of the exp file");
++	_pprintLine_("      - tol:  tolerance (maximal euclidean distance allowed between the new line and a vertex)");
++	_pprintLine_("");
++	_pprintLine_("   Example:");
++	_pprintLine_("      ExpSimplify('file.exp',100);");
++}/*}}}*/
++void simplify(Contour<double>* contour,bool* flags,int ind0,int ind1,double tolerance){/*{{{*/
++
++	bool    closed    = false;
++	double  distance,beta,dx,dy;
++	double  maxdistance;
++	int     index;
++	double *x      = contour->x;
++	double *y      = contour->y;
++
++	/*Some checks*/
++	_assert_(ind0>=0 && ind0<contour->nods);
++	_assert_(ind1>=0 && ind1<contour->nods);
++	_assert_(ind1-ind0>=0);
++
++	/*Check wether this portion is closed*/
++	if(x[ind0]==x[ind1] && y[ind0]==y[ind1]) closed=true;
++
++	if(closed){
++
++		/*calculate the shortest distance of all vertices between ind0 and ind1*/
++		for(int i=ind0;i<ind1;i++){
++			distance = sqrt((x[i]-x[i+1])*(x[i]-x[i+1]) + (y[i]-y[i+1])*(y[i]-y[i+1]));
++			if(i==ind0 || distance>maxdistance){
++				maxdistance=distance;
++				index = i;
++			}
++		}
++	}
++	else{
++		/*calculate shortest distance of all points to the line from ind0 to ind1
++		 * subtract starting point from other locations
++		 *
++		 * d = || (x-x0) - beta (xend - x0) ||
++		 * <x-x0,xend-x0>      = ||x-x0|| ||xend-x0|| cos(alpha)
++		 * beta ||xend-x0|| = ||x-x0|| cos(alpha)
++		 *
++		 * So: beta = <x-x0,xend-x0>/<xend-x0,xend-x0>  */
++		 
++		for(int i=ind0+1;i<ind1;i++){
++			beta = ((x[i]-x[ind0])*(x[ind1]-x[ind0]) + (y[i]-y[ind0])*(y[ind1]-y[ind0]))/((x[ind1]-x[ind0])*(x[ind1]-x[ind0])+(y[ind1]-y[ind0])*(y[ind1]-y[ind0]));
++			dx   = x[i]-beta*x[ind1]+(beta-1.)*x[ind0];
++			dy   = y[i]-beta*y[ind1]+(beta-1.)*y[ind0];
++			distance = sqrt(dx*dx + dy*dy);
++			if(i==ind0+1 || distance>maxdistance){
++				maxdistance = distance;
++				index       = i;
++			}
++		}
++
++	}
++
++	/*if the maximum distance is smaller than the tolerance remove vertices between ind0 and ind1*/
++	if(maxdistance<tolerance){
++		if(ind0!=ind1-1){
++			for(int i=ind0+1;i<ind1;i++) flags[i]=false;
++		}
++	}
++	else{
++		/*if not, call simplifyrec for the segments between ind0 and index
++		 * (index and ind1)*/
++		simplify(contour,flags,ind0 ,index,tolerance);
++		simplify(contour,flags,index,ind1, tolerance);
++	}
++
++
++}/*}}}*/
++WRAPPER(ExpSimplify){
++
++	int i,verbose=1;
++
++	/*input: */
++	char*    expfile  = NULL;
++	double   tolerance;
++
++	/*output*/
++	DataSet* oldcontours = NULL;
++	DataSet* newcontours = NULL;
++
++	/*Boot module: */
++	MODULEBOOT();
++
++	/*checks on arguments: */
++	CHECKARGUMENTS(NLHS,NRHS,&ExpSimplifyUsage);
++
++	/*Input datasets: */
++	FetchData(&expfile,  EXPFILE);
++	FetchData(&tolerance,TOLERANCE);
++
++	/*some checks*/
++	if(tolerance<0) _error_("tolerance must be a positivve scalar");
++
++	/* Run core computations: */
++	Contour<double>* contour = NULL;
++	Contour<double>* newcontour = NULL;
++	int     nods,newnods;
++	bool*   flags = NULL;
++	double* x = NULL;
++	double* y = NULL;
++	double distance;
++
++	/*Read old contours and allocate new contours*/
++	oldcontours=DomainOutlineRead<double>(expfile);
++	newcontours=new DataSet(0);
++	for(int counter=0;counter<oldcontours->Size();counter++){
++
++		/*Get single contour*/
++		contour = (Contour<double>*)oldcontours->GetObjectByOffset(counter);
++		nods    = contour->nods;
++		x       = contour->x;
++		y       = contour->y;
++		printf("   Initial number of vertices in contour #%i: %i\n",counter+1,nods);
++
++		/*Allocate flags (1=keep, 0=remove)*/
++		if(nods>0) flags   = xNew<bool>(nods);
++
++		if(nods==0){
++			/*Don't do anything*/
++		}
++		else if(nods==1){
++			flags[0] = true;
++		}
++		else if(nods==2){
++			/*check if the distance between both is less than the tolerance
++			 * If so, return the center*/
++			distance = sqrt((x[1]-x[0])*(x[1]-x[0]) + (y[1]-y[0])*(y[1]-y[0]));
++			if(distance<=tolerance){
++				x[0]=(x[0]+x[1])/2.;
++				y[0]=(y[0]+y[1])/2.;
++				flags[0] = true;
++				flags[1] = false;
++			}
++			else{
++				flags[0] = true;
++				flags[1] = true;
++			}
++		}
++		else{
++			/*Start recursive call to simplify*/
++			for(int i=0;i<nods;i++) flags[i]=true;
++			simplify(contour,flags,0,nods-1,tolerance);
++		}
++
++		/*Add new contour to newcontours*/
++		newnods = 0;
++		for(int i=0;i<nods;i++) if(flags[i]) newnods++;
++		printf("   New     number of vertices in contour #%i: %i\n",counter+1,newnods);
++		if(newnods){
++			newcontour       = xNew<Contour<double> >(1);
++			newcontour->nods = newnods;
++			newcontour->x    = xNew<double>(newnods);
++			newcontour->y    = xNew<double>(newnods);
++			newnods = 0;
++			for(int i=0;i<nods;i++){
++				if(flags[i]){
++					newcontour->x[newnods] = contour->x[i];
++					newcontour->y[newnods] = contour->y[i];
++					newnods++;
++				}
++			}
++			_assert_(newnods==newcontour->nods);
++
++			/*Add to main dataset*/
++			newcontours->AddObject(newcontour);
++		}
++
++		/*cleanup*/
++		xDelete<bool>(flags);
++	}
++
++	/*Write data: */
++	ExpWrite(newcontours,expfile);
++
++	/*Clean-up*/
++	xDelete<char>(expfile);
++
++	/*end module: */
++	MODULEEND();
++}
Index: /issm/oecreview/Archive/14064-14311/ISSM-14294-14295.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14294-14295.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14294-14295.diff	(revision 14312)
@@ -0,0 +1,13 @@
+Index: ../trunk-jpl/src/m/exp/expwrite.m
+===================================================================
+--- ../trunk-jpl/src/m/exp/expwrite.m	(revision 14294)
++++ ../trunk-jpl/src/m/exp/expwrite.m	(revision 14295)
+@@ -42,7 +42,7 @@
+ 	fprintf(fid,'%s\n','# Points Count Value');
+ 	fprintf(fid,'%i %f\n',[length(a(n).x) a(n).density]);
+ 	fprintf(fid,'%s\n','# X pos Y pos');
+-	fprintf(fid,'%10.10f %10.10f\n',[a(n).x a(n).y]');
++	fprintf(fid,'%10.10f %10.10f\n',[a(n).x(:) a(n).y(:)]');
+ 	fprintf(fid,'\n');
+ 
+ end
Index: /issm/oecreview/Archive/14064-14311/ISSM-14295-14296.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14295-14296.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14295-14296.diff	(revision 14312)
@@ -0,0 +1,98 @@
+Index: ../trunk-jpl/src/m/mech/strainrateuncert.m
+===================================================================
+--- ../trunk-jpl/src/m/mech/strainrateuncert.m	(revision 0)
++++ ../trunk-jpl/src/m/mech/strainrateuncert.m	(revision 14296)
+@@ -0,0 +1,71 @@
++function md=strainratuncert(md,vx,vy,dvx,dvy)
++%STRAINRATEUNCERT - compute uncertainty in strain rate components
++%
++%   this routine computes the uncertainties in the strain rate tensor
++%	 components given the uncertainty in surface velocity data.
++%   The results are stored in md.results
++%
++%	 'dvx' and 'dvy' are velocity errors in x and y components.  These 
++%	 can either be scalars or arrays of length md.mesh.numberofvertices
++%
++%   Usage:
++%      md=strainrateuncert(md,vx,vy,dv)
++%
++%   Example:
++%      md=mechanicalproperties(md,md.initialization.vx,md.initialization.vy,5);
++%      md=mechanicalproperties(md,md.inversion.vx_obs,md.inversion.vy_obs,dv);
++
++%some checks
++if length(vx)~=md.mesh.numberofvertices | length(vy)~=md.mesh.numberofvertices,
++	error(['the input velocity should be of size ' num2str(md.mesh.numberofvertices) '!'])
++end
++if length(dvx)==1,
++	dvx=dvx*ones(md.mesh.numberofelements,1);
++end
++if length(dvx)~=md.mesh.numberofelements,
++	error(['the velocity error dvx should be of size ' num2str(md.mesh.numberofelements) ' or 1!'])
++end
++if length(dvy)==1,
++	dvy=dvy*ones(md.mesh.numberofelements,1);
++end
++if length(dvy)~=md.mesh.numberofelements,
++	error(['the velocity error dvy should be of size ' num2str(md.mesh.numberofelements) ' or 1!'])
++end
++if ~(md.mesh.dimension==2)
++	error('only 2d model supported yet');
++end
++if any(md.flowequation.element_equation~=2),
++	disp('Warning: the model has some non macayeal elements. These will be treated like MacAyeal''s elements');
++end
++
++%initialization
++index=md.mesh.elements;
++summation=[1;1;1];
++
++%compute nodal functions coefficients N(x,y)=alpha x + beta y +gamma
++[alpha beta]=GetNodalFunctionsCoeff(index,md.mesh.x,md.mesh.y);
++
++strainrateuncert=struct('xx',[],'yy',[],'xy',[],'principalvalue1',[],'principalvalue2',[],'effectivevalue',[]);
++
++strainrateuncert.xx=dvx.*sqrt(alpha.^2*summation);
++strainrateuncert.yy=dvy.*sqrt(beta.^2*summation);
++strainrateuncert.xy=0.5*sqrt(dvx.^2.*(beta.^2*summation)+dvy.^2.*(alpha.^2*summation));
++
++exx=md.results.strainrate.xx;
++eyy=md.results.strainrate.yy;
++exy=md.results.strainrate.xy;
++p1a=strainrateuncert.xx.*(0.5+0.25*(0.5*((exx-eyy)/2).^2+exy.^2).^(-1./2).*(exx-eyy));
++p2a=strainrateuncert.yy.*(0.5-0.25*(0.5*((exx-eyy)/2).^2+exy.^2).^(-1./2).*(exx-eyy));
++p3a=strainrateuncert.xy.*(((exx-eyy)/2).^(2)+exy.^2).^(-1./2).*exy;
++p1b=strainrateuncert.xx.*(0.5-0.25*(0.5*((exx-eyy)/2).^2+exy.^2).^(-1./2).*(exx-eyy));
++p2b=strainrateuncert.yy.*(0.5+0.25*(0.5*((exx-eyy)/2).^2+exy.^2).^(-1./2).*(exx-eyy));
++p3b=strainrateuncert.xy.*(-(((exx-eyy)/2).^(2)+exy.^2).^(-1./2).*exy);
++strainrateuncert.principalvalue1=sqrt(p1a.^2+p2a.^2+p3a.^2);
++strainrateuncert.principalvalue2=sqrt(p1b.^2+p2b.^2+p3b.^2);
++
++effa=strainrateuncert.xx/sqrt(2).*(exx.^2+eyy.^2+2*exy.^2).^(-1./2).*exx;
++effb=strainrateuncert.yy/sqrt(2).*(exx.^2+eyy.^2+2*exy.^2).^(-1./2).*eyy;
++effc=2*strainrateuncert.xy/sqrt(2).*(exx.^2+eyy.^2+2*exy.^2).^(-1./2).*exy;
++strainrateuncert.effectivevalue=sqrt(effa.^2+effb.^2+effc.^2);
++
++md.results.strainrateuncert=strainrateuncert;
+Index: ../trunk-jpl/src/m/mech/mechanicalproperties.m
+===================================================================
+--- ../trunk-jpl/src/m/mech/mechanicalproperties.m	(revision 14295)
++++ ../trunk-jpl/src/m/mech/mechanicalproperties.m	(revision 14296)
+@@ -118,12 +118,12 @@
+ md.results.stress=stress;
+ 
+ strainrate=struct('xx',[],'yy',[],'xy',[],'principalvalue1',[],'principalaxis1',[],'principalvalue2',[],'principalaxis2',[],'effectivevalue',[]);
+-strainrate.xx=ux;
+-strainrate.yy=vy;
+-strainrate.xy=uyvx;
+-strainrate.principalvalue1=valuesstrain(:,1)*(365.25*24*3600); %strain rate in 1/a instead of 1/s
++strainrate.xx=ux*md.constants.yts; %strain rate in 1/a instead of 1/s
++strainrate.yy=vy*md.constants.yts; 
++strainrate.xy=uyvx*md.constants.yts; 
++strainrate.principalvalue1=valuesstrain(:,1)*md.constants.yts; 
+ strainrate.principalaxis1=directionsstrain(:,1:2);
+-strainrate.principalvalue2=valuesstrain(:,2)*(365.25*24*3600); %strain rate in 1/a instead of 1/s
++strainrate.principalvalue2=valuesstrain(:,2)*md.constants.yts; 
+ strainrate.principalaxis2=directionsstrain(:,3:4);
+ strainrate.effectivevalue=1/sqrt(2)*sqrt(strainrate.xx.^2+strainrate.yy.^2+2*strainrate.xy.^2);
+ md.results.strainrate=strainrate;
Index: /issm/oecreview/Archive/14064-14311/ISSM-14296-14297.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14296-14297.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14296-14297.diff	(revision 14312)
@@ -0,0 +1,34 @@
+Index: ../trunk-jpl/src/m/exp/flowlines.m
+===================================================================
+--- ../trunk-jpl/src/m/exp/flowlines.m	(revision 14296)
++++ ../trunk-jpl/src/m/exp/flowlines.m	(revision 14297)
+@@ -37,7 +37,8 @@
+ precision=1; %division of each segment (higer precision increases number of segments)
+ 
+ %check seed points
+-tria=TriaSearch(index,x,y,x0,y0);
++%tria=TriaSearch(index,x,y,x0,y0);
++tria=tsearch(x,y,index,x0,y0);
+ pos=find(isnan(tria));
+ x0(pos)=[];
+ y0(pos)=[];
+@@ -68,7 +69,8 @@
+ 
+ 	%find current triangle
+ 	queue=find(~done);
+-	tria=TriaSearch(index,x,y,X(queue),Y(queue));
++	%tria=TriaSearch(index,x,y,X(queue),Y(queue));
++	tria=tsearch(x,y,index,X(queue),Y(queue));
+ 
+ 	%check that the point is actually inside a triangle of the mesh
+ 	listnan=find(isnan(tria));
+@@ -117,7 +119,8 @@
+ 
+ 	%find current triangle
+ 	queue=find(~done);
+-	tria=TriaSearch(index,x,y,X(queue),Y(queue));
++	%tria=TriaSearch(index,x,y,X(queue),Y(queue));
++	tria=tsearch(x,y,index,X(queue),Y(queue));
+ 
+ 	%check that the point is actually inside a triangle of the mesh
+ 	listnan=find(isnan(tria));
Index: /issm/oecreview/Archive/14064-14311/ISSM-14297-14298.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14297-14298.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14297-14298.diff	(revision 14312)
@@ -0,0 +1,22 @@
+Index: ../trunk-jpl/src/m/kml/exp2kml.m
+===================================================================
+--- ../trunk-jpl/src/m/kml/exp2kml.m	(revision 14297)
++++ ../trunk-jpl/src/m/kml/exp2kml.m	(revision 14298)
+@@ -1,17 +0,0 @@
+-function exp2kml(input,output)
+-%EXP2KML: transform Argus exp file to kml
+-%
+-% Usage:    exp2kml('temp.exp','temp2.kml')
+-%
+-%
+-
+-%First, read exp file
+-domain=expread(input);
+-
+-%then transform: 
+-string=ge_plot(domain.x,domain.y,'name',domain.name);
+-
+-%open kml file for writing: 
+-fid=fopen(output,'w');
+-fprintf(fid,'%s',string);
+-fclose(fid);
Index: /issm/oecreview/Archive/14064-14311/ISSM-14298-14299.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14298-14299.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14298-14299.diff	(revision 14312)
@@ -0,0 +1,19 @@
+Index: ../trunk-jpl/src/m/plot/colormaps/landcolor.m
+===================================================================
+--- ../trunk-jpl/src/m/plot/colormaps/landcolor.m	(revision 14298)
++++ ../trunk-jpl/src/m/plot/colormaps/landcolor.m	(revision 14299)
+@@ -75,4 +75,3 @@
+ 	n = 256;
+ end
+ y = interp1(1:l,J,linspace(1,l,n),'*linear');
+-
+Index: ../trunk-jpl/src/m/plot/colormaps/demmap.m
+===================================================================
+--- ../trunk-jpl/src/m/plot/colormaps/demmap.m	(revision 14298)
++++ ../trunk-jpl/src/m/plot/colormaps/demmap.m	(revision 14299)
+@@ -59,4 +59,4 @@
+ end
+ 
+ clim = [cmn cmx];
+-cmap = [seacolor(nsea);landcolor(nland)];
++cmap = [seacolor(nsea);landcolor(nland).^1.3];
Index: /issm/oecreview/Archive/14064-14311/ISSM-14299-14300.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14299-14300.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14299-14300.diff	(revision 14312)
@@ -0,0 +1,135 @@
+Index: ../trunk-jpl/src/m/plot/plotmodel.m
+===================================================================
+--- ../trunk-jpl/src/m/plot/plotmodel.m	(revision 14299)
++++ ../trunk-jpl/src/m/plot/plotmodel.m	(revision 14300)
+@@ -33,16 +33,57 @@
+ if numberofplots,
+ 
+ 	%Create figure 
++	f=figure(figurenumber);clf;
+ 	if strcmpi(getfieldvalue(options.list{1},'visible','on'),'off'),
+-		F=figure(figurenumber);clf;
+-		set(F,'Visible','Off');
+-	else
+-		figure(figurenumber);clf;
++		set(f,'Visible','Off');
+ 	end
+ 
+-	%Use zbuffer renderer (snoother colors)
+-	set(gcf,'Renderer','zbuffer');
++	if exist(options.list{1},'figposition'), % {{{
++		figposition=getfieldvalue(options.list{1},'figposition');
++		if ischar(figposition),
++			if strcmpi(figposition,'larour'),
++				set(gcf,'Position',[1604 4 1594 1177]);
++			elseif strcmpi(figposition,'larour2'),
++				set(gcf,'Position',[756    62   827   504]);
++			elseif strcmpi(figposition,'mathieu'),
++				set(gcf,'Position',[300 1 1580 1150]);
++			elseif strcmpi(figposition,'fullscreen'),
++				set(gcf,'Position',get(0,'ScreenSize'));
++			elseif strcmpi(figposition,'halfright'),
++				screen=get(0,'ScreenSize');
++				left=screen(1); bott=screen(2); widt=screen(3); heig=screen(4)-25;
++				set(gcf,'Position',fix([left+widt/2 bott widt/2 heig]));
++			elseif strcmpi(figposition,'halfleft'),
++				screen=get(0,'ScreenSize');
++				left=screen(1); bott=screen(2); widt=screen(3); heig=screen(4)-25;
++				set(gcf,'Position',fix([left bott widt/2 heig]));
++			elseif strcmpi(figposition,'square'),
++				screen=get(0,'ScreenSize');
++				left=screen(1); bott=screen(2); widt=min(screen(3)-25,screen(4)-25);
++				set(gcf,'Position',fix([left+(screen(3)-widt) bott widt widt]));
++			elseif strcmpi(figposition,'portrait'),
++				%reformat with letter paper size (8.5" x 11")
++				screen=get(0,'ScreenSize');
++				left=screen(1); bott=screen(2); widt=screen(3); heig=screen(4)-25;
++				portrait=fix([left+widt-(heig*8.5/11) bott heig*8.5/11 heig]);
++				set(gcf,'Position',portrait)
++			elseif strcmpi(figposition,'landscape'),
++				%reformat with letter paper size (8.5" x 11")
++				screen=get(0,'ScreenSize');
++				left=screen(1); bott=screen(2); widt=screen(3); heig=screen(4)-25;
++				landscape=fix([left+widt-(heig*11/8.5) bott heig*11/8.5 heig]);
++				set(gcf,'Position',landscape)
++			else
++				disp('''figposition'' string not supported yet');
++			end
++		else
++			set(gcf,'Position',figposition);
++		end
++	end % }}}
+ 
++	%Use zbuffer renderer (snoother colors) and white background
++	set(f,'Renderer','zbuffer','color',getfieldvalue(options.list{1},'figurebackgroundcolor','w'));
++
+ 	%Go through all data plottable and close window if an error occurs
+ 	try,
+ 		for i=1:numberofplots,
+Index: ../trunk-jpl/src/m/plot/applyoptions.m
+===================================================================
+--- ../trunk-jpl/src/m/plot/applyoptions.m	(revision 14299)
++++ ../trunk-jpl/src/m/plot/applyoptions.m	(revision 14300)
+@@ -330,52 +330,6 @@
+ 	set(gca,'pos',Axis);
+ end
+ 
+-%position of figure
+-if exist(options,'figposition'),
+-
+-	figposition=getfieldvalue(options,'figposition');
+-	if ischar(figposition),
+-		if strcmpi(figposition,'larour'),
+-			set(gcf,'Position',[1604 4 1594 1177]);
+-		elseif strcmpi(figposition,'larour2'),
+-			set(gcf,'Position',[756    62   827   504]);
+-		elseif strcmpi(figposition,'mathieu'),
+-			set(gcf,'Position',[300 1 1580 1150]);
+-		elseif strcmpi(figposition,'fullscreen'),
+-			set(gcf,'Position',get(0,'ScreenSize'));
+-		elseif strcmpi(figposition,'halfright'),
+-			screen=get(0,'ScreenSize');
+-			left=screen(1); bott=screen(2); widt=screen(3); heig=screen(4)-25;
+-			set(gcf,'Position',fix([left+widt/2 bott widt/2 heig]));
+-		elseif strcmpi(figposition,'halfleft'),
+-			screen=get(0,'ScreenSize');
+-			left=screen(1); bott=screen(2); widt=screen(3); heig=screen(4)-25;
+-			set(gcf,'Position',fix([left bott widt/2 heig]));
+-		elseif strcmpi(figposition,'square'),
+-			screen=get(0,'ScreenSize');
+-			left=screen(1); bott=screen(2); widt=min(screen(3)-25,screen(4)-25);
+-			set(gcf,'Position',fix([left+(screen(3)-widt) bott widt widt]));
+-		elseif strcmpi(figposition,'portrait'),
+-			%reformat with letter paper size (8.5" x 11")
+-			screen=get(0,'ScreenSize');
+-			left=screen(1); bott=screen(2); widt=screen(3); heig=screen(4)-25;
+-			portrait=fix([left+widt-(heig*8.5/11) bott heig*8.5/11 heig]);
+-			set(gcf,'Position',portrait)
+-		elseif strcmpi(figposition,'landscape'),
+-			%reformat with letter paper size (8.5" x 11")
+-			screen=get(0,'ScreenSize');
+-			left=screen(1); bott=screen(2); widt=screen(3); heig=screen(4)-25;
+-			landscape=fix([left+widt-(heig*11/8.5) bott heig*11/8.5 heig]);
+-			set(gcf,'Position',landscape)
+-		else
+-			disp('''figposition'' string not supported yet');
+-		end
+-	else
+-		set(gcf,'Position',figposition);
+-	end
+-
+-end
+-
+ %axes position
+ if exist(options,'axesPosition')
+ 	set(gca,'Position',getfieldvalue(options,'axesPosition'));
+@@ -445,9 +399,6 @@
+ %backgroundcolor
+ set(gca,'color',getfieldvalue(options,'backgroundcolor','none'));
+ 
+-%figurebackgrounbcolor
+-set(gcf,'color',getfieldvalue(options,'figurebackgroundcolor','w'));
+-
+ %lighting
+ if strcmpi(getfieldvalue(options,'light','off'),'on'),
+ 	set(gca,'FaceLighting','gouraud','FaceColor','interp','AmbientStrength',0.5);
Index: /issm/oecreview/Archive/14064-14311/ISSM-14300-14301.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14300-14301.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14300-14301.diff	(revision 14312)
@@ -0,0 +1,19 @@
+Index: ../trunk-jpl/src/m/classes/pairoptions.m
+===================================================================
+--- ../trunk-jpl/src/m/classes/pairoptions.m	(revision 14300)
++++ ../trunk-jpl/src/m/classes/pairoptions.m	(revision 14301)
+@@ -161,7 +161,13 @@
+ 			end
+ 
+ 			%Recover option
+-			bool=any(strcmpi(field,obj.list(:,1)));
++			pos=find(strcmpi(field,obj.list(:,1)));
++			if ~isempty(pos),
++				bool=true;
++				obj.list{pos,3}   = true;  %It is a default so user will not be notified if not used
++			else
++				bool=false;
++			end
+ 		end % }}}
+ 		function num = fieldoccurrences(obj,field), % {{{
+ 		%FIELDOCCURRENCES - get number of occurrence of a field
Index: /issm/oecreview/Archive/14064-14311/ISSM-14301-14302.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14301-14302.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14301-14302.diff	(revision 14312)
@@ -0,0 +1,13 @@
+Index: ../trunk-jpl/src/c/modules/NodeConnectivityx/NodeConnectivityx.cpp
+===================================================================
+--- ../trunk-jpl/src/c/modules/NodeConnectivityx/NodeConnectivityx.cpp	(revision 14301)
++++ ../trunk-jpl/src/c/modules/NodeConnectivityx/NodeConnectivityx.cpp	(revision 14302)
+@@ -20,7 +20,7 @@
+ void	NodeConnectivityx(int** pconnectivity,int* pwidth,int* elements, int nels, int nods){
+ 
+ 	int i,j,n;
+-	const int maxels=25;
++	const int maxels=50;
+ 	const int width=maxels+1;
+ 
+ 	/*intermediary: */
Index: /issm/oecreview/Archive/14064-14311/ISSM-14302-14303.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14302-14303.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14302-14303.diff	(revision 14312)
@@ -0,0 +1,186 @@
+Index: ../trunk-jpl/src/m/io/getShapeTypeInfo.m
+===================================================================
+--- ../trunk-jpl/src/m/io/getShapeTypeInfo.m	(revision 0)
++++ ../trunk-jpl/src/m/io/getShapeTypeInfo.m	(revision 14303)
+@@ -0,0 +1,181 @@
++function result = getShapeTypeInfo(shapeTypeCode,requestOrQuery)
++
++% CAUTION:  This file contains experimental code that has had only
++%           minimal, informal testing.
++%
++%GETSHAPETYPEINFO   Get information about a shape type.
++%   Returns a single value, based on the second argument:
++%     'TypeString'             -- Return a string
++%     'IsValid'                -- Return a scalar logical
++%     'IsSupported'            -- Return a scalar logical
++%     'BoundingBoxSubscripts'  -- Return a 1-by-n double array
++%     'ShapeRecordReadFcn'     -- Return a function handle
++%     'ShapeDataFieldNames'    -- Return a cell array of string.
++
++% Copyright 1996-2010 The MathWorks, Inc.
++% $Revision$  $Date$
++
++lutFields = { 'TypeCode',...
++              'TypeString',...
++              'IsValid',...
++              'IsSupported',...
++              'BoundingBoxSubscripts',...
++              'ShapeRecordReadFcn',...
++              'ShapeDataFieldNames' };
++
++% Three kinds of bounding box subscripts
++bbs2D = [1 2; 3 4];
++bbsZ  = [1 2 5; 3 4 6]; % Ignore M for now, otherwise use [1 2 5 7; 3 4 6 8]
++bbsM  = [1 2 7; 3 4 8];
++
++typeLUT = {...
++   -1, 'Not Valid',   false, false, [],    [], {''};... 
++    0, 'Null Shape',  true,  true,  [],    [], {''};... 
++    1, 'Point',       true,  true,  bbs2D, @readPoint,      {'Geometry','X','Y'};... 
++    3, 'PolyLine',    true,  true,  bbs2D, @readPolyLine,   {'Geometry','BoundingBox','X','Y'};...
++    5, 'Polygon',     true,  true,  bbs2D, @readPolygon,    {'Geometry','BoundingBox','X','Y'};...
++    8, 'MultiPoint',  true,  true,  bbs2D, @readMultiPoint, {'Geometry','BoundingBox','X','Y'};...
++   11, 'PointZ',      true,  false, bbsZ,  [], {''};...
++   13, 'PolyLineZ',   true,  true,  bbsZ,  @readPolyLineZ,  {'Geometry','BoundingBox','X','Y','Z'};... 
++   15, 'PolygonZ',    true,  true,  bbsZ,  @readPolygonZ,   {'Geometry','BoundingBox','X','Y','Z'};... 
++   18, 'MultiPointZ', true,  false, bbsZ,  [], {''};... 
++   21, 'PointM',      true,  false, bbsM,  [], {''};... 
++   23, 'PolyLineM',   true,  false, bbsM,  [], {''};... 
++   25, 'PolygonM',    true,  false, bbsM,  [], {''};... 
++   28, 'MultiPointM', true,  false, bbsM,  [], {''};... 
++   31, 'MultiPatch',  true,  false, bbsZ,  [], {''};... 
++  };
++notValidRow = 1;
++types = [typeLUT{:,1}];
++
++% MAINTENANCE NOTE: To add support for additional types, add more rows
++% to the type look up table (typeLUT), but be sure to keep 'Not Valid'
++% in the first row.
++
++row = find(shapeTypeCode == types);
++if length(row) ~= 1
++    row = notValidRow;
++end
++
++col = strmatch(lower(requestOrQuery),lower(lutFields));
++if length(col) ~= 1;
++    eid = sprintf('%s:%s:internalProblem',getcomp,mfilename);
++    error(eid,'Internal error: Invalid second argument in private function.');
++end
++
++result = typeLUT{row,col};
++
++%---------------------------------------------------------------------------
++function shp = readPoint(fid)
++
++point = fread(fid,[2 1],'double','ieee-le');
++shp = {'Point', point(1), point(2)};
++
++%---------------------------------------------------------------------------
++function shp = readMultiPoint(fid)
++
++boundingBox    = fread(fid,4,'double','ieee-le');
++numPoints      = fread(fid,1,'uint32','ieee-le');
++points         = fread(fid,[2 numPoints],'double','ieee-le')';
++shp = {'MultiPoint', boundingBox([1 2; 3 4]), points(:,1)', points(:,2)'};
++
++%---------------------------------------------------------------------------
++function shp = readPolyLine(fid)
++
++boundingBox    = fread(fid,4,'double','ieee-le');
++numPartsPoints = fread(fid,2,'uint32','ieee-le');
++partOffsets    = fread(fid,[1 numPartsPoints(1)],'uint32','ieee-le');
++points         = fread(fid,[2 numPartsPoints(2)],'double','ieee-le')';
++[x,y] = organizeParts2D(partOffsets,points);
++shp = {'Line', boundingBox([1 2; 3 4]), x, y};
++
++%---------------------------------------------------------------------------
++function shp = readPolygon(fid)
++
++boundingBox    = fread(fid,4,'double','ieee-le');
++numPartsPoints = fread(fid,2,'uint32','ieee-le');
++partOffsets    = fread(fid,[1 numPartsPoints(1)],'uint32','ieee-le');
++points         = fread(fid,[2 numPartsPoints(2)],'double','ieee-le')';
++[x,y] = organizeParts2D(partOffsets,points);
++shp = {'Polygon', boundingBox([1 2; 3 4]), x, y};
++
++%---------------------------------------------------------------------------
++function [x,y] = organizeParts2D(partOffsets,points)
++
++numParts  = size(partOffsets,2);
++numPoints = size(points,1);
++% Initialize x and y to be row vectors of NaN
++% with length numPoints * numParts
++x = NaN + zeros(1, numPoints + numParts);
++y = x;
++if numParts == 1
++    x(1, 1:numPoints) = points(:,1);
++    y(1, 1:numPoints) = points(:,2);
++else
++    partStart = 1 + partOffsets;
++    partEnd   = [partOffsets(2:end) numPoints];
++    for k = 1:numParts
++        xyStart = partStart(k) + (k - 1);
++        xyEnd   = partEnd(k)   + (k - 1);
++        x(1, xyStart:xyEnd) = points(partStart(k):partEnd(k), 1);
++        y(1, xyStart:xyEnd) = points(partStart(k):partEnd(k), 2);
++    end
++end
++
++%---------------------------------------------------------------------------
++function shp = readPolyLineZ(fid)
++
++boundingBox    = fread(fid,4,'double','ieee-le');
++numPartsPoints = fread(fid,2,'uint32','ieee-le');
++partOffsets    = fread(fid,[1 numPartsPoints(1)],'uint32','ieee-le');
++points         = fread(fid,[2 numPartsPoints(2)],'double','ieee-le')';
++zRange         = fread(fid,2,'double','ieee-le'); %#ok
++zArray         = fread(fid, numPartsPoints(2), 'double', 'ieee-le');
++[x,y,z] = organizeParts3D(partOffsets,points,zArray);
++% shp = {'Line', [boundingBox([1 2; 3 4]) zRange], x, y, z};
++% Note:
++%   Keep bounding box 2-D for now for compatibility with
++%   mapshow and geoshow.
++shp = {'Line', boundingBox([1 2; 3 4]), x, y, z};
++
++%---------------------------------------------------------------------------
++function shp = readPolygonZ(fid)
++
++boundingBox    = fread(fid,4,'double','ieee-le');
++numPartsPoints = fread(fid,2,'uint32','ieee-le');
++partOffsets    = fread(fid,[1 numPartsPoints(1)],'uint32','ieee-le');
++points         = fread(fid,[2 numPartsPoints(2)],'double','ieee-le')';
++zRange         = fread(fid,2,'double','ieee-le'); %#ok
++zArray         = fread(fid, numPartsPoints(2), 'double', 'ieee-le');
++[x,y,z] = organizeParts3D(partOffsets,points,zArray);
++% shp = {'Polygon', [boundingBox([1 2; 3 4]) zRange], x, y, z};
++% Note:
++%   Keep bounding box 2-D for now for compatibility with
++%   mapshow and geoshow.
++shp = {'Polygon', boundingBox([1 2; 3 4]), x, y, z};
++
++%---------------------------------------------------------------------------
++function [x,y,z] = organizeParts3D(partOffsets,points,zArray)
++
++numParts  = size(partOffsets,2);
++numPoints = size(points,1);
++% Initialize x and y to be row vectors of NaN
++% with length numPoints * numParts
++x = NaN + zeros(1, numPoints + numParts);
++y = x;
++z = x;
++if numParts == 1
++    x(1, 1:numPoints) = points(:,1);
++    y(1, 1:numPoints) = points(:,2);
++    z(1, 1:numPoints) = zArray(:,1);
++else
++    partStart = 1 + partOffsets;
++    partEnd   = [partOffsets(2:end) numPoints];
++    for k = 1:numParts
++        xyzStart = partStart(k) + (k - 1);
++        xyzEnd   = partEnd(k)   + (k - 1);
++        x(1, xyzStart:xyzEnd) = points(partStart(k):partEnd(k), 1);
++        y(1, xyzStart:xyzEnd) = points(partStart(k):partEnd(k), 2);
++        z(1, xyzStart:xyzEnd) = zArray(partStart(k):partEnd(k), 1);
++    end
++end
Index: /issm/oecreview/Archive/14064-14311/ISSM-14303-14304.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14303-14304.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14303-14304.diff	(revision 14312)
@@ -0,0 +1,75 @@
+Index: ../trunk-jpl/src/wrappers/InternalFront/InternalFront.cpp
+===================================================================
+--- ../trunk-jpl/src/wrappers/InternalFront/InternalFront.cpp	(revision 14303)
++++ ../trunk-jpl/src/wrappers/InternalFront/InternalFront.cpp	(revision 14304)
+@@ -13,30 +13,24 @@
+ 
+ 	bool*   elementonwater=NULL;
+ 	int*    elements=NULL;
+-	int*    connectivity=NULL;
+ 	int*    elementconnectivity=NULL;
+ 	int*    front=NULL;
+ 	double* front2=NULL;
+ 	bool    found;
+ 	int     numberofelements,numberofsegments;
+-	int     N,M;
+ 	int     i,j,ii,jj,id;
++	int     dummy;
+ 
+ 	/*Boot module: */
+ 	MODULEBOOT();
+ 
+-	/*checks on arguments on the matlab side: */
+-	CheckNumMatlabArguments(nlhs,NLHS,nrhs,NRHS,__FUNCT__,&InternalFrontUsage);
++	/*checks on arguments: */
++	CHECKARGUMENTS(NLHS,NRHS,&InternalFrontUsage);
+ 
+-	/*Fetch required fields*/
+-	FetchData(&numberofelements,mxGetAssignedField(MODEL,0,"numberofelements"));
+-	if(numberofelements<=0) _error_("No elements found in the model");
+-	FetchData(&elements,&M,&N,mxGetAssignedField(MODEL,0,"elements"));
+-	if(M!=numberofelements || N!=3) _error_("Field 'elements' should be of size [md.numberofelements 3]");
+-	FetchData(&elementonwater,&M,&N,mxGetAssignedField(MODEL,0,"elementonwater"));
+-	if(M!=numberofelements || N!=1) _error_("Field 'elementonwater' should be of size [md.numberofelements 1]");
+-	FetchData(&elementconnectivity,&M,&N,mxGetAssignedField(MODEL,0,"elementconnectivity"));
+-	if(M!=numberofelements || N!=3) _error_("Field 'elementconnectivity' should be of size [md.numberofelements 3]");
++	/*Fetch inputs: */
++	FetchData(&elements,&numberofelements,&dummy,ELEMENTS);
++	FetchData(&elementonwater,&dummy,&dummy,ELEMENTONWATER);
++	FetchData(&elementconnectivity,&dummy,&dummy,ELEMENTCONNECTIVITY);
+ 
+ 	/*Allocate and initialize all variables*/
+ 	numberofsegments=0;
+Index: ../trunk-jpl/src/wrappers/InternalFront/InternalFront.h
+===================================================================
+--- ../trunk-jpl/src/wrappers/InternalFront/InternalFront.h	(revision 14303)
++++ ../trunk-jpl/src/wrappers/InternalFront/InternalFront.h	(revision 14304)
+@@ -26,14 +26,18 @@
+ 
+ #ifdef _HAVE_MATLAB_MODULES_
+ /* serial input macros: */
+-#define MODEL prhs[0]
++#define ELEMENTS prhs[0]
++#define ELEMENTONWATER prhs[1]
++#define ELEMENTCONNECTIVITY prhs[2]
+ /* serial output macros: */
+ #define FRONT (mxArray**)&plhs[0]
+ #endif
+ 
+ #ifdef _HAVE_PYTHON_MODULES_
+ /* serial input macros: */
+-#define MODEL PyTuple_GetItem(args,0)
++#define ELEMENTS PyTuple_GetItem(args,0)
++#define ELEMENTONWATER PyTuple_GetItem(args,1)
++#define ELEMENTCONNECTIVITY PyTuple_GetItem(args,2)
+ /* serial output macros: */
+ #define FRONT output,0]
+ #endif
+@@ -42,6 +46,6 @@
+ #undef NLHS
+ #define NLHS  1
+ #undef NRHS
+-#define NRHS  1
++#define NRHS  3
+ 
+ #endif
Index: /issm/oecreview/Archive/14064-14311/ISSM-14304-14305.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14304-14305.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14304-14305.diff	(revision 14312)
@@ -0,0 +1,12 @@
+Index: ../trunk-jpl/startup.m
+===================================================================
+--- ../trunk-jpl/startup.m	(revision 14304)
++++ ../trunk-jpl/startup.m	(revision 14305)
+@@ -35,6 +35,7 @@
+ addpath(recursivepath([ISSM_DIR '/externalpackages/kml']));
+ addpath(recursivepath([ISSM_DIR '/externalpackages/export_fig']));
+ addpath(recursivepath([ISSM_DIR '/externalpackages/googleearthtoolbox']));
++addpath(recursivepath([ISSM_DIR '/externalpackages/howatmask']));
+ addpath(recursivepath([ISSM_DIR '/externalpackages/cm_and_cb_utilities']));
+ addpath(recursivepath([ISSM_DIR '/externalpackages/dem']));
+ 
Index: /issm/oecreview/Archive/14064-14311/ISSM-14305-14306.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14305-14306.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14305-14306.diff	(revision 14312)
@@ -0,0 +1,31 @@
+Index: ../trunk-jpl/src/m/classes/mask.m
+===================================================================
+--- ../trunk-jpl/src/m/classes/mask.m	(revision 14305)
++++ ../trunk-jpl/src/m/classes/mask.m	(revision 14306)
+@@ -11,6 +11,7 @@
+ 		vertexonfloatingice  = NaN;
+ 		vertexongroundedice  = NaN;
+ 		vertexonwater        = NaN;
++		vertexonrock        = NaN;
+ 	end
+ 	methods
+ 		function obj = mask(varargin) % {{{
+@@ -32,6 +33,7 @@
+ 			md = checkfield(md,'mask.vertexonfloatingice','size',[md.mesh.numberofvertices 1],'values',[0 1]);
+ 			md = checkfield(md,'mask.vertexongroundedice','size',[md.mesh.numberofvertices 1],'values',[0 1]);
+ 			md = checkfield(md,'mask.vertexonwater'      ,'size',[md.mesh.numberofvertices 1],'values',[0 1]);
++			md = checkfield(md,'mask.vertexonrock'      ,'size',[md.mesh.numberofvertices 1],'values',[0 1]);
+ 		end % }}}
+ 		function disp(obj) % {{{
+ 			disp(sprintf('   masks:'));
+@@ -40,8 +42,9 @@
+ 			fielddisplay(obj,'vertexonfloatingice','vertex on floating ice flags list');
+ 			fielddisplay(obj,'elementongroundedice','element on grounded ice  list');
+ 			fielddisplay(obj,'vertexongroundedice','vertex on grounded ice flags list');
+-			fielddisplay(obj,'elementonwater','element on water flags list');
++			fielddisplay(obj,'elementonwater','element on rock flags list');
+ 			fielddisplay(obj,'vertexonwater','vertex on water flags list');
++			fielddisplay(obj,'vertexonrock','vertex on rock flags list');
+ 		end % }}}
+ 		function marshall(obj,fid) % {{{
+ 			WriteData(fid,'object',obj,'fieldname','elementonfloatingice','format','BooleanMat','mattype',2);
Index: /issm/oecreview/Archive/14064-14311/ISSM-14306-14307.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14306-14307.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14306-14307.diff	(revision 14312)
@@ -0,0 +1,42 @@
+Index: ../trunk-jpl/src/m/classes/model/model.m
+===================================================================
+--- ../trunk-jpl/src/m/classes/model/model.m	(revision 14306)
++++ ../trunk-jpl/src/m/classes/model/model.m	(revision 14307)
+@@ -211,6 +211,7 @@
+ 			md.mask.vertexongroundedice=project2d(md,md.mask.vertexongroundedice,1);
+ 			md.mask.elementonwater=project2d(md,md.mask.elementonwater,1);
+ 			md.mask.vertexonwater=project2d(md,md.mask.vertexonwater,1);
++			md.mask.vertexonrock=project2d(md,md.mask.vertexonrock,1);
+ 
+ 			%lat long
+ 			if numel(md.mesh.lat) ==md.mesh.numberofvertices,  md.mesh.lat=project2d(md,md.mesh.lat,1); end
+@@ -754,6 +755,7 @@
+ 			md.mask.vertexongroundedice=project3d(md,'vector',md.mask.vertexongroundedice,'type','node');
+ 			md.mask.elementonwater=project3d(md,'vector',md.mask.elementonwater,'type','element');
+ 			md.mask.vertexonwater=project3d(md,'vector',md.mask.vertexonwater,'type','node');
++			md.mask.vertexonrock=project3d(md,'vector',md.mask.vertexonrock,'type','node');
+ 			if ~isnan(md.inversion.cost_functions_coefficients),md.inversion.cost_functions_coefficients=project3d(md,'vector',md.inversion.cost_functions_coefficients,'type','node');end;
+ 			if ~isnan(md.inversion.min_parameters),md.inversion.min_parameters=project3d(md,'vector',md.inversion.min_parameters,'type','node');end;
+ 			if ~isnan(md.inversion.max_parameters),md.inversion.max_parameters=project3d(md,'vector',md.inversion.max_parameters,'type','node');end;
+@@ -1130,5 +1132,21 @@
+ 			disp(sprintf('%19s: %-22s -- %s','radaroverlay'    ,['[1x1 ' class(obj.radaroverlay) ']'],'radar image for plot overlay'));
+ 			disp(sprintf('%19s: %-22s -- %s','miscellaneous'   ,['[1x1 ' class(obj.miscellaneous) ']'],'miscellaneous fields'));
+ 		end % }}}
++		function memory(obj) % {{{
++			
++		disp(sprintf('\nMemory imprint: '));
++
++		objects=fields(obj);
++		memory=0;
++		
++		for i=1:length(objects),
++			field=objects{i};
++			realobject=obj.(field);
++			s=whos('realobject'); 
++			memory=memory+s.bytes/1e6;
++			disp(sprintf('%19s: %g Mb',field,s.bytes/1e6));
++		end
++		disp(sprintf('Overall: %g Mb',memory));
++		end % }}}
+ 	end
+  end
Index: /issm/oecreview/Archive/14064-14311/ISSM-14307-14308.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14307-14308.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14307-14308.diff	(revision 14312)
@@ -0,0 +1,13 @@
+Index: ../trunk-jpl/configure.ac
+===================================================================
+--- ../trunk-jpl/configure.ac	(revision 14307)
++++ ../trunk-jpl/configure.ac	(revision 14308)
+@@ -1,7 +1,7 @@
+ # Process this file with autoconf to produce a configure script.
+ 
+ #AUTOCONF
+-AC_INIT([ISSM],[4.2.4],[issm@jpl.nasa.gov],[issm],[http://issm.jpl.nasa.gov]) #Initializing configure
++AC_INIT([ISSM],[4.2.5],[issm@jpl.nasa.gov],[issm],[http://issm.jpl.nasa.gov]) #Initializing configure
+ AC_CONFIG_AUX_DIR([./aux-config])         #Put config files in aux-config
+ AC_CONFIG_MACRO_DIR([m4])                 #m4 macros are located in m4
+ m4_include([m4/issm_options.m4])
Index: /issm/oecreview/Archive/14064-14311/ISSM-14308-14309.diff
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-14308-14309.diff	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-14308-14309.diff	(revision 14312)
@@ -0,0 +1,9 @@
+Index: ../trunk-jpl
+===================================================================
+--- ../trunk-jpl	(revision 14308)
++++ ../trunk-jpl	(revision 14309)
+
+Property changes on: ../trunk-jpl
+___________________________________________________________________
+Modified: svn:mergeinfo
+   Merged /issm/trunk:r14069-14308
Index: /issm/oecreview/Archive/14064-14311/ISSM-DocReview-14064-14311.tex
===================================================================
--- /issm/oecreview/Archive/14064-14311/ISSM-DocReview-14064-14311.tex	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/ISSM-DocReview-14064-14311.tex	(revision 14312)
@@ -0,0 +1,67 @@
+\documentclass[]{report}   % list options between brackets
+\usepackage{graphicx}              % list packages between braces
+
+% type user-defined commands here
+
+\begin{document}
+
+\title{JPL EXPORT ADMINISTRATION \\ DOCUMENT REVIEW RECORD}   % type title between braces
+\author{Tom Scavo}         % type author(s) between braces
+\date{October 27, 1995}    % type date between braces
+%\maketitle
+
+
+\begin{center}
+\begin{tabular}{ |c|c| }
+\hline
+JPL EXPORT ADMINISTRATION \\
+\textit{ DOCUMENT REVIEW RECORD} \\
+\hline
+\end{tabular}
+\end{center}
+
+\hfill Log \#: \underline{\input{LogNumber}}
+
+\vspace{1cm}
+\noindent (Note: This form and process do not replace the procedures described in JPL Policy relating to review and approval of proposals and contractual 
+documents. This process is intended to document the review and coordination of requests to ascertain the export control ramifications relating to specific 
+documents. Export Administration signature does not convey authority to export or release the "Exporter of Record" from any export laws or regulations.)\\
+
+\noindent \textbf{Program:} \underline{ISSM: Ice Sheet System Model} \\ \\
+\noindent \textbf{Person Requesting or Initiating Export}: \underline{Dr. Eric Larour}\\ \\
+\noindent \textbf{Date Received}: \underline{\input{Date}}\\ \\
+\noindent \textbf{Document Title/Description}: ISSM changes from revision \input{r1} to revision \input{r2} \\ \\
+\noindent \textbf{Release to:} \underline{http://issm.ess.uci.edu/svn/issm/issm/trunk on ISSM svn repository}\\ \\
+\noindent \textbf{JPL Intranet:} \underline{murdo.jpl.nasa.gov/proj/ice/larour/issm-uci/trunk-jpl}\\ \\
+
+\noindent \textbf{Disposition: 6 } 
+Does not contain export-controlled information. May be released/disclosed as requested subject to 
+Company guidelines on protection of proprietary information (if applicable). \\
+
+\noindent \textbf{Comments:}  see table of changes below. \\ \\
+\noindent \textbf{Reviewed by ISSM Export Transfer Liaison:} Dr. Eric Larour \hfill \textbf{Date:} \input{Date} \\ 
+\includegraphics[scale=1]{signature}
+
+\noindent JPL Export Administration Form TBS – June 29, 2011
+
+\begin{center}
+\line(1,0){250}
+\end{center}
+
+\noindent \textbf{Disposition:} \\
+1:	  Public Domain Information (Ref ITAR Section 120.11) \\
+2:	  Qualifies for ITAR Exemption				 \\
+3:	  Covered by Department of State License/Agreement Number					  \\
+4:	  Covered by Department of Commerce validated license or exception				 \\
+5:	  New License Required \\
+6:	  Does not contain export-controlled information.  May be released/disclosed as requested subject
+   to Company guidelines on protection of proprietary information (if applicable). \\
+7:	 Other (specify)   
+\begin{center}
+\line(1,0){250}
+\end{center}
+
+
+\input{log}
+
+\end{document}
Index: /issm/oecreview/Archive/14064-14311/LogNumber.tex
===================================================================
--- /issm/oecreview/Archive/14064-14311/LogNumber.tex	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/LogNumber.tex	(revision 14312)
@@ -0,0 +1,1 @@
+14064-14311
Index: /issm/oecreview/Archive/14064-14311/Makefile
===================================================================
--- /issm/oecreview/Archive/14064-14311/Makefile	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/Makefile	(revision 14312)
@@ -0,0 +1,8 @@
+TARGET=ISSM-DocReview-14064-14311
+
+all: 
+	pdflatex -interaction=errorstopmode -file-line-error -halt-on-error $(TARGET).tex
+	rm -rf *.log *.aux 
+
+clean:
+	rm -rf *.log *.aux
Index: /issm/oecreview/Archive/14064-14311/log.tex
===================================================================
--- /issm/oecreview/Archive/14064-14311/log.tex	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/log.tex	(revision 14312)
@@ -0,0 +1,1449 @@
+\noindent \textbf{Change \#1} with diff file ISSM-14066-14067.diff: \\
+Function name: \\
+M /issm/trunk-jpl A /issm/trunk-jpl/configs/config-macosx64-simple.sh (from /issm/trunk/configs/config-macosx64-simple.sh:14065) A /issm/trunk-jpl/configs/config-macosx64.sh (from /issm/trunk/configs/config-macosx64.sh:14065)\\
+Export determination: 6. \\
+Rationale: merged trunk and trunk-jpl\\
+\vspace{3em}
+
+\noindent \textbf{Change \#2} with diff file ISSM-14068-14069.diff: \\
+Function name: \\
+M /issm/trunk-jpl M /issm/trunk-jpl/src M /issm/trunk-jpl/test\\
+Export determination: 6. \\
+Rationale: Block revision 14067 from being merged into trunk-jpl\\
+\vspace{3em}
+
+\noindent \textbf{Change \#3} with diff file ISSM-14069-14070.diff: \\
+Function name: \\
+A /issm/trunk-jpl/src/android/ISSM/jni/issmlib/libISSMCore.a\\
+Export determination: 6. \\
+Rationale: CHG: readding libISSMCore.a temporarily\\
+\vspace{3em}
+
+\noindent \textbf{Change \#4} with diff file ISSM-14070-14071.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/Container/Observations.cpp\\
+Export determination: 6. \\
+Rationale: CHG: Added check that Observations is not empty otherwise we have a crash\\
+\vspace{3em}
+
+\noindent \textbf{Change \#5} with diff file ISSM-14073-14074.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/android/ISSM\_Visual/src/com/example/issm\_visual/ISSMVisual.java M /issm/trunk-jpl/src/android/ISSM\_Visual/src/com/example/issm\_visual/MyGLRenderer.java M /issm/trunk-jpl/src/android/ISSM\_Visual/src/com/example/issm\_visual/MyGLSurfaceView.java\\
+Export determination: 6. \\
+Rationale: Updated ISSM Visual drawing a fixed amount of randomly generated triangles. Users can rotate and change value of alpha, which just redraws a bunch of new triangles again.\\
+\vspace{3em}
+
+\noindent \textbf{Change \#6} with diff file ISSM-14074-14075.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/android/ISSM\_Visual/res/layout/activity\_issmvisual.xml\\
+Export determination: 6. \\
+Rationale: Included xml file so the app load up properly\\
+\vspace{3em}
+
+\noindent \textbf{Change \#7} with diff file ISSM-14077-14078.diff: \\
+Function name: \\
+D /issm/trunk-jpl/src/android/ISSM\_Visual/bin/classes\\
+Export determination: 6. \\
+Rationale: CHG: Removing unnecessary files.\\
+\vspace{3em}
+
+\noindent \textbf{Change \#8} with diff file ISSM-14078-14079.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/android/ISSM/jni/Android.mk M /issm/trunk-jpl/src/android/ISSM/jni/Application.mk A /issm/trunk-jpl/src/android/ISSM/jni/gsllib A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/Android.mk A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_blas.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_blas\_types.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_block.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_block\_char.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_block\_complex\_double.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_block\_complex\_float.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_block\_complex\_long\_double.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_block\_double.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_block\_float.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_block\_int.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_block\_long.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_block\_long\_double.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_block\_short.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_block\_uchar.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_block\_uint.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_block\_ulong.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_block\_ushort.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_bspline.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_cblas.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_cdf.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_chebyshev.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_check\_range.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_combination.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_complex.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_complex\_math.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_const.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_const\_cgs.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_const\_cgsm.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_const\_mks.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_const\_mksa.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_const\_num.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_deriv.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_dft\_complex.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_dft\_complex\_float.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_dht.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_diff.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_eigen.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_errno.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_fft.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_fft\_complex.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_fft\_complex\_float.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_fft\_halfcomplex.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_fft\_halfcomplex\_float.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_fft\_real.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_fft\_real\_float.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_fit.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_heapsort.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_histogram.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_histogram2d.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_ieee\_utils.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_inline.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_integration.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_interp.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_linalg.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_machine.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_math.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_matrix.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_matrix\_char.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_matrix\_complex\_double.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_matrix\_complex\_float.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_matrix\_complex\_long\_double.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_matrix\_double.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_matrix\_float.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_matrix\_int.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_matrix\_long.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_matrix\_long\_double.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_matrix\_short.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_matrix\_uchar.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_matrix\_uint.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_matrix\_ulong.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_matrix\_ushort.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_message.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_min.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_minmax.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_mode.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_monte.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_monte\_miser.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_monte\_plain.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_monte\_vegas.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_multifit.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_multifit\_nlin.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_multimin.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_multiroots.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_multiset.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_nan.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_ntuple.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_odeiv.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_odeiv2.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_permutation.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_permute.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_permute\_char.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_permute\_complex\_double.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_permute\_complex\_float.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_permute\_complex\_long\_double.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_permute\_double.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_permute\_float.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_permute\_int.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_permute\_long.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_permute\_long\_double.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_permute\_short.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_permute\_uchar.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_permute\_uint.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_permute\_ulong.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_permute\_ushort.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_permute\_vector.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_permute\_vector\_char.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_permute\_vector\_complex\_double.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_permute\_vector\_complex\_float.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_permute\_vector\_complex\_long\_double.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_permute\_vector\_double.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_permute\_vector\_float.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_permute\_vector\_int.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_permute\_vector\_long.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_permute\_vector\_long\_double.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_permute\_vector\_short.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_permute\_vector\_uchar.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_permute\_vector\_uint.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_permute\_vector\_ulong.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_permute\_vector\_ushort.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_poly.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_pow\_int.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_precision.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_qrng.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_randist.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_rng.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_roots.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_sf.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_sf\_airy.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_sf\_bessel.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_sf\_clausen.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_sf\_coulomb.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_sf\_coupling.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_sf\_dawson.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_sf\_debye.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_sf\_dilog.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_sf\_elementary.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_sf\_ellint.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_sf\_elljac.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_sf\_erf.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_sf\_exp.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_sf\_expint.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_sf\_fermi\_dirac.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_sf\_gamma.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_sf\_gegenbauer.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_sf\_hyperg.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_sf\_laguerre.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_sf\_lambert.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_sf\_legendre.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_sf\_log.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_sf\_mathieu.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_sf\_pow\_int.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_sf\_psi.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_sf\_result.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_sf\_synchrotron.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_sf\_transport.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_sf\_trig.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_sf\_zeta.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_siman.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_sort.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_sort\_char.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_sort\_double.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_sort\_float.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_sort\_int.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_sort\_long.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_sort\_long\_double.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_sort\_short.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_sort\_uchar.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_sort\_uint.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_sort\_ulong.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_sort\_ushort.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_sort\_vector.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_sort\_vector\_char.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_sort\_vector\_double.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_sort\_vector\_float.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_sort\_vector\_int.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_sort\_vector\_long.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_sort\_vector\_long\_double.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_sort\_vector\_short.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_sort\_vector\_uchar.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_sort\_vector\_uint.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_sort\_vector\_ulong.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_sort\_vector\_ushort.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_specfunc.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_spline.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_statistics.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_statistics\_char.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_statistics\_double.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_statistics\_float.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_statistics\_int.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_statistics\_long.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_statistics\_long\_double.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_statistics\_short.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_statistics\_uchar.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_statistics\_uint.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_statistics\_ulong.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_statistics\_ushort.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_sum.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_sys.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_test.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_types.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_vector.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_vector\_char.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_vector\_complex.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_vector\_complex\_double.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_vector\_complex\_float.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_vector\_complex\_long\_double.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_vector\_double.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_vector\_float.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_vector\_int.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_vector\_long.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_vector\_long\_double.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_vector\_short.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_vector\_uchar.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_vector\_uint.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_vector\_ulong.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_vector\_ushort.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_version.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_wavelet.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl/gsl\_wavelet2d.h A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/libsgsl.a A /issm/trunk-jpl/src/android/ISSM/jni/gsllib/libsgslcblas.a M /issm/trunk-jpl/src/android/ISSM/jni/issmlib/Android.mk\\
+Export determination: 6. \\
+Rationale: FIX: linking error with gsl and standard libs\\
+\vspace{3em}
+
+\noindent \textbf{Change \#9} with diff file ISSM-14079-14080.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/android/ISSM/jni/gsllib/Android.mk D /issm/trunk-jpl/src/android/ISSM/jni/gsllib/gsl\\
+Export determination: 6. \\
+Rationale: Remove: header files\\
+\vspace{3em}
+
+\noindent \textbf{Change \#10} with diff file ISSM-14080-14081.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/android/ISSM/project.properties M /issm/trunk-jpl/src/android/ISSM\_Visual/AndroidManifest.xml D /issm/trunk-jpl/src/android/ISSM\_Visual/src/com A /issm/trunk-jpl/src/android/ISSM\_Visual/src/gov A /issm/trunk-jpl/src/android/ISSM\_Visual/src/gov/nasa A /issm/trunk-jpl/src/android/ISSM\_Visual/src/gov/nasa/jpl A /issm/trunk-jpl/src/android/ISSM\_Visual/src/gov/nasa/jpl/issm A /issm/trunk-jpl/src/android/ISSM\_Visual/src/gov/nasa/jpl/issm/visual A /issm/trunk-jpl/src/android/ISSM\_Visual/src/gov/nasa/jpl/issm/visual/ISSMVisual.java A /issm/trunk-jpl/src/android/ISSM\_Visual/src/gov/nasa/jpl/issm/visual/MyGLRenderer.java A /issm/trunk-jpl/src/android/ISSM\_Visual/src/gov/nasa/jpl/issm/visual/MyGLSurfaceView.java\\
+Export determination: 6. \\
+Rationale: New directories to match with work place environment\\
+\vspace{3em}
+
+\noindent \textbf{Change \#11} with diff file ISSM-14081-14082.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/android/ISSM M /issm/trunk-jpl/src/android/ISSM/jni/Main.cpp M /issm/trunk-jpl/src/android/ISSM/jni/issmlib/libISSMCore.a M /issm/trunk-jpl/src/android/ISSM/project.properties M /issm/trunk-jpl/src/android/ISSM/src/com/example/issm/ISSM.java M /issm/trunk-jpl/src/android/ISSM/src/com/example/issm/IssmJni.java\\
+Export determination: 6. \\
+Rationale: CHG: calling the real constructor\\
+\vspace{3em}
+
+\noindent \textbf{Change \#12} with diff file ISSM-14082-14083.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/android/ISSM/jni/Android.mk M /issm/trunk-jpl/src/android/ISSM/jni/Main.cpp M /issm/trunk-jpl/src/android/ISSM/jni/issmlib/Android.mk M /issm/trunk-jpl/src/android/ISSM/jni/issmlib/libISSMCore.a M /issm/trunk-jpl/src/android/ISSM/src/com/example/issm/ISSM.java M /issm/trunk-jpl/src/android/ISSM\_Visual/bin/AndroidManifest.xml M /issm/trunk-jpl/src/android/ISSM\_Visual/bin/classes.dex M /issm/trunk-jpl/src/android/ISSM\_Visual/bin/resources.ap\_ M /issm/trunk-jpl/src/c/Makefile.am M /issm/trunk-jpl/src/c/classes/FemModel.cpp M /issm/trunk-jpl/src/c/classes/FemModel.h M /issm/trunk-jpl/src/c/io/PrintfFunction.cpp\\
+Export determination: 6. \\
+Rationale: NEW: fixed unresolved symbols when using android logging capability (Android.mk). Introduced logging from libISSMCore.a directly into JNI using the \_pprintLine\_ macro and android logging capabilities. Requires android ndk setup -> made corresponding mods in src/c/io and m4/ and configs/ In short, we can now construct FemModel within the ISSM android app!\\
+\vspace{3em}
+
+\noindent \textbf{Change \#13} with diff file ISSM-14083-14084.diff: \\
+Function name: \\
+A /issm/trunk-jpl/src/android/ISSM/assets/Map A /issm/trunk-jpl/src/android/ISSM/assets/Map/antarctica.bin A /issm/trunk-jpl/src/android/ISSM/assets/Map/antarctica.petsc A /issm/trunk-jpl/src/android/ISSM/assets/Map/greenland.bin A /issm/trunk-jpl/src/android/ISSM/assets/Map/greenland.petsc\\
+Export determination: 6. \\
+Rationale: CHG: android ISSM input files\\
+\vspace{3em}
+
+\noindent \textbf{Change \#14} with diff file ISSM-14084-14085.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/android/ISSM/jni/Main.cpp\\
+Export determination: 6. \\
+Rationale: CHG: changes to Main.cpp\\
+\vspace{3em}
+
+\noindent \textbf{Change \#15} with diff file ISSM-14085-14086.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/android/ISSM/bin\\
+Export determination: 6. \\
+Rationale: CHG: get svn to ignore some files.\\
+\vspace{3em}
+
+\noindent \textbf{Change \#16} with diff file ISSM-14086-14087.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/android/ISSM/jni/Main.cpp M /issm/trunk-jpl/src/android/ISSM/src/com/example/issm/ISSM.java M /issm/trunk-jpl/src/android/ISSM/src/com/example/issm/IssmJni.java\\
+Export determination: 6. \\
+Rationale: CHG: some minor renaming\\
+\vspace{3em}
+
+\noindent \textbf{Change \#17} with diff file ISSM-14087-14088.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/android/ISSM/jni/Main.cpp\\
+Export determination: 6. \\
+Rationale: CHG: more renaming\\
+\vspace{3em}
+
+\noindent \textbf{Change \#18} with diff file ISSM-14088-14089.diff: \\
+Function name: \\
+M /issm/trunk-jpl/configs/config-arm-linux.sh M /issm/trunk-jpl/m4/issm\_options.m4\\
+Export determination: 6. \\
+Rationale: CHG: introduced android ndk for include files. Goal is to be able to use android logging\\
+\vspace{3em}
+
+\noindent \textbf{Change \#19} with diff file ISSM-14089-14090.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/android/ISSM/assets/Map/antarctica.bin M /issm/trunk-jpl/src/android/ISSM/assets/Map/antarctica.petsc M /issm/trunk-jpl/src/android/ISSM/assets/Map/greenland.bin M /issm/trunk-jpl/src/android/ISSM/assets/Map/greenland.petsc M /issm/trunk-jpl/src/android/ISSM/jni/Main.cpp M /issm/trunk-jpl/src/android/ISSM/jni/issmlib/libISSMCore.a M /issm/trunk-jpl/src/android/ISSM/src/com/example/issm/ISSM.java\\
+Export determination: 6. \\
+Rationale: CHG: created new routine in ISSM to output xyz array for all vertices. New inputs files that come from android.m test file. We now create xyz in Main.cpp of the jni layer, then we create a patch upon completion of solve, and use xyz and the patch to fill in the buffer with vertex info and velocities.\\
+\vspace{3em}
+
+\noindent \textbf{Change \#20} with diff file ISSM-14090-14091.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/Container/Vertices.cpp M /issm/trunk-jpl/src/c/Container/Vertices.h M /issm/trunk-jpl/src/c/classes/objects/Vertex.cpp M /issm/trunk-jpl/src/c/classes/objects/Vertex.h\\
+Export determination: 6. \\
+Rationale: CHG: new xyz routine to create matrix of information about the vertices.\\
+\vspace{3em}
+
+\noindent \textbf{Change \#21} with diff file ISSM-14091-14092.diff: \\
+Function name: \\
+A /issm/trunk-jpl/test/NightlyRun/android.m\\
+Export determination: 6. \\
+Rationale: NEW: android test case.\\
+\vspace{3em}
+
+\noindent \textbf{Change \#22} with diff file ISSM-14092-14093.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/mesh/squaremesh.m A /issm/trunk-jpl/src/m/mesh/squaremesh.py\\
+Export determination: 6. \\
+Rationale: NEW: Python version of squaremesh.\\
+\vspace{3em}
+
+\noindent \textbf{Change \#23} with diff file ISSM-14093-14094.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/wrappers/python/io/FetchPythonData.cpp M /issm/trunk-jpl/src/wrappers/python/io/pythonio.h\\
+Export determination: 6. \\
+Rationale: NEW: Allow python scalars to be input rather than numpy 1x1 arrays.\\
+\vspace{3em}
+
+\noindent \textbf{Change \#24} with diff file ISSM-14094-14095.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/contrib/bamg/YamsCall.m A /issm/trunk-jpl/src/m/contrib/bamg/YamsCall.py\\
+Export determination: 6. \\
+Rationale: NEW: Python version of YamsCall.\\
+\vspace{3em}
+
+\noindent \textbf{Change \#25} with diff file ISSM-14095-14096.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/mesh/ComputeMetric.py M /issm/trunk-jpl/src/m/mesh/squaremesh.py M /issm/trunk-jpl/src/m/miscellaneous/MatlabFuncs.py\\
+Export determination: 6. \\
+Rationale: CHG: Updates for python tests 1401 and 1402.\\
+\vspace{3em}
+
+\noindent \textbf{Change \#26} with diff file ISSM-14097-14098.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/wrappers/python/io/FetchPythonData.cpp\\
+Export determination: 6. \\
+Rationale: NEW: Allow Python scalars to be embedded in one-element tuples or lists for module input.\\
+\vspace{3em}
+
+\noindent \textbf{Change \#27} with diff file ISSM-14098-14099.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/boundaryconditions/SetIceShelfBC.py M /issm/trunk-jpl/src/m/boundaryconditions/SetMarineIceSheetBC.py M /issm/trunk-jpl/src/m/geometry/FlagElements.py M /issm/trunk-jpl/src/m/mesh/ComputeMetric.m M /issm/trunk-jpl/src/m/mesh/ComputeMetric.py M /issm/trunk-jpl/src/m/mesh/bamg.py M /issm/trunk-jpl/src/m/mesh/rifts/meshprocessoutsiderifts.py M /issm/trunk-jpl/src/m/mesh/rifts/meshprocessrifts.py M /issm/trunk-jpl/src/wrappers/python/io/FetchPythonData.cpp\\
+Export determination: 6. \\
+Rationale: NEW: Allow Python vectors to be input to modules directly rather than reshaping to Mx1 matrices.\\
+\vspace{3em}
+
+\noindent \textbf{Change \#28} with diff file ISSM-14099-14100.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/classes/objects/Vertex.cpp\\
+Export determination: 6. \\
+Rationale: CHG: xyz is an IssmDouble\\
+\vspace{3em}
+
+\noindent \textbf{Change \#29} with diff file ISSM-14100-14101.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/Container/Vertices.cpp M /issm/trunk-jpl/src/c/Container/Vertices.h\\
+Export determination: 6. \\
+Rationale: CHG double to IssmDouble\\
+\vspace{3em}
+
+\noindent \textbf{Change \#30} with diff file ISSM-14101-14102.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/classes/pairoptions.m M /issm/trunk-jpl/src/m/classes/pairoptions.py M /issm/trunk-jpl/src/m/classes/plotoptions.m M /issm/trunk-jpl/src/m/classes/settings.m M /issm/trunk-jpl/src/m/classes/settings.py\\
+Export determination: 6. \\
+Rationale: CHG: Change default waitonlock to integer inf for python (plus other cosmetic changes).\\
+\vspace{3em}
+
+\noindent \textbf{Change \#31} with diff file ISSM-14102-14103.diff: \\
+Function name: \\
+D /issm/trunk-jpl/test/NightlyRun/InNeedOfDebugging/test1301.py D /issm/trunk-jpl/test/NightlyRun/InNeedOfDebugging/test1302.py D /issm/trunk-jpl/test/NightlyRun/InNeedOfDebugging/test1303.py D /issm/trunk-jpl/test/NightlyRun/InNeedOfDebugging/test1304.py M /issm/trunk-jpl/test/NightlyRun/python\_skipped\_tests.txt M /issm/trunk-jpl/test/NightlyRun/test1301.m A /issm/trunk-jpl/test/NightlyRun/test1301.py M /issm/trunk-jpl/test/NightlyRun/test1302.m A /issm/trunk-jpl/test/NightlyRun/test1302.py M /issm/trunk-jpl/test/NightlyRun/test1303.m A /issm/trunk-jpl/test/NightlyRun/test1303.py M /issm/trunk-jpl/test/NightlyRun/test1304.m A /issm/trunk-jpl/test/NightlyRun/test1304.py M /issm/trunk-jpl/test/NightlyRun/test1401.m M /issm/trunk-jpl/test/NightlyRun/test1402.m M /issm/trunk-jpl/test/Par/Pig.py M /issm/trunk-jpl/test/Par/SquareSheetConstrained.py M /issm/trunk-jpl/test/Par/SquareSheetShelf.py M /issm/trunk-jpl/test/Par/SquareShelf.py M /issm/trunk-jpl/test/Par/SquareShelfConstrained.py M /issm/trunk-jpl/test/Par/SquareThermal.par A /issm/trunk-jpl/test/Par/SquareThermal.py\\
+Export determination: 6. \\
+Rationale: NEW: Working python tests 1301-1304 (plus cosmetic changes).\\
+\vspace{3em}
+
+\noindent \textbf{Change \#32} with diff file ISSM-14103-14104.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/classes/timestepping.m M /issm/trunk-jpl/src/m/classes/timestepping.py\\
+Export determination: 6. \\
+Rationale: FIX: Fix md.timestepping defaults.\\
+\vspace{3em}
+
+\noindent \textbf{Change \#33} with diff file ISSM-14104-14105.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/miscellaneous/MatlabFuncs.py\\
+Export determination: 6. \\
+Rationale: NEW: Add heaviside function for python.\\
+\vspace{3em}
+
+\noindent \textbf{Change \#34} with diff file ISSM-14105-14106.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/solve/parseresultsfromdisk.py\\
+Export determination: 6. \\
+Rationale: FIX: Results in outbin are not necessarily in increasing step order.\\
+\vspace{3em}
+
+\noindent \textbf{Change \#35} with diff file ISSM-14106-14107.diff: \\
+Function name: \\
+M /issm/trunk-jpl/test/Par/RoundSheetEISMINT.par A /issm/trunk-jpl/test/Par/RoundSheetEISMINT.py M /issm/trunk-jpl/test/Par/RoundSheetStaticEISMINT.par A /issm/trunk-jpl/test/Par/RoundSheetStaticEISMINT.py M /issm/trunk-jpl/test/Par/SquareEISMINT.par A /issm/trunk-jpl/test/Par/SquareEISMINT.py\\
+Export determination: 6. \\
+Rationale: NEW: Parameter files for python tests 1200.\\
+\vspace{3em}
+
+\noindent \textbf{Change \#36} with diff file ISSM-14107-14108.diff: \\
+Function name: \\
+M /issm/trunk-jpl/test/NightlyRun/python\_skipped\_tests.txt M /issm/trunk-jpl/test/NightlyRun/test1201.m A /issm/trunk-jpl/test/NightlyRun/test1201.py M /issm/trunk-jpl/test/NightlyRun/test1202.m A /issm/trunk-jpl/test/NightlyRun/test1202.py M /issm/trunk-jpl/test/NightlyRun/test1203.m A /issm/trunk-jpl/test/NightlyRun/test1203.py M /issm/trunk-jpl/test/NightlyRun/test1204.m A /issm/trunk-jpl/test/NightlyRun/test1204.py M /issm/trunk-jpl/test/NightlyRun/test1208.m A /issm/trunk-jpl/test/NightlyRun/test1208.py\\
+Export determination: 6. \\
+Rationale: NEW: Working python tests 1201-1204, 1208.\\
+\vspace{3em}
+
+\noindent \textbf{Change \#37} with diff file ISSM-14108-14109.diff: \\
+Function name: \\
+A /issm/trunk-jpl/src/android/ISSM\_Visual/src/gov/nasa/jpl/issm/visual/colormap A /issm/trunk-jpl/src/android/ISSM\_Visual/src/gov/nasa/jpl/issm/visual/colormap/colormap.c A /issm/trunk-jpl/src/android/ISSM\_Visual/src/gov/nasa/jpl/issm/visual/colormap/list\_of\_colormaps\\
+Export determination: 6. \\
+Rationale: C version of colormap and r,g,b extraction algorithm. To be trnalated into java\\
+\vspace{3em}
+
+\noindent \textbf{Change \#38} with diff file ISSM-14109-14110.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/android/ISSM/AndroidManifest.xml M /issm/trunk-jpl/src/android/ISSM/gen/com/example/issm/R.java M /issm/trunk-jpl/src/android/ISSM/jni/Main.cpp M /issm/trunk-jpl/src/android/ISSM/project.properties M /issm/trunk-jpl/src/android/ISSM/res/layout/activity\_issm.xml M /issm/trunk-jpl/src/android/ISSM/src/com/example/issm/ISSM.java A /issm/trunk-jpl/src/android/ISSM/src/com/example/issm/MyGLRenderer.java A /issm/trunk-jpl/src/android/ISSM/src/com/example/issm/MyGLSurfaceView.java\\
+Export determination: 6. \\
+Rationale: working android prototype\\
+\vspace{3em}
+
+\noindent \textbf{Change \#39} with diff file ISSM-14110-14111.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/android/ISSM/assets/Map/antarctica.bin M /issm/trunk-jpl/src/android/ISSM/assets/Map/greenland.bin M /issm/trunk-jpl/src/android/ISSM/bin/AndroidManifest.xml M /issm/trunk-jpl/src/android/ISSM/res/layout/activity\_issm.xml M /issm/trunk-jpl/src/android/ISSM/res/layout/activity\_mapselection.xml\\
+Export determination: 6. \\
+Rationale: CHG: position of xml layout\\
+\vspace{3em}
+
+\noindent \textbf{Change \#40} with diff file ISSM-14111-14112.diff: \\
+Function name: \\
+D /issm/trunk-jpl/src/android/ISSM/gen\\
+Export determination: 6. \\
+Rationale: DEL: being run time created by eclipse\\
+\vspace{3em}
+
+\noindent \textbf{Change \#41} with diff file ISSM-14112-14113.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/android/ISSM/assets/Map/greenland.bin M /issm/trunk-jpl/src/android/ISSM/assets/Map/greenland.petsc\\
+Export determination: 6. \\
+Rationale: CHG: Greenland model\\
+\vspace{3em}
+
+\noindent \textbf{Change \#42} with diff file ISSM-14117-14118.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/solutions/EnvironmentInit.cpp\\
+Export determination: 6. \\
+Rationale: Added missing parenthesis\\
+\vspace{3em}
+
+\noindent \textbf{Change \#43} with diff file ISSM-14134-14135.diff: \\
+Function name: \\
+M /issm/trunk-jpl/test/NightlyRun/python\_skipped\_tests.txt M /issm/trunk-jpl/test/NightlyRun/test1101.m A /issm/trunk-jpl/test/NightlyRun/test1101.py M /issm/trunk-jpl/test/NightlyRun/test1102.m A /issm/trunk-jpl/test/NightlyRun/test1102.py M /issm/trunk-jpl/test/NightlyRun/test1103.m A /issm/trunk-jpl/test/NightlyRun/test1103.py M /issm/trunk-jpl/test/NightlyRun/test1104.m A /issm/trunk-jpl/test/NightlyRun/test1104.py M /issm/trunk-jpl/test/NightlyRun/test1105.m A /issm/trunk-jpl/test/NightlyRun/test1105.py M /issm/trunk-jpl/test/NightlyRun/test1106.m A /issm/trunk-jpl/test/NightlyRun/test1106.py M /issm/trunk-jpl/test/NightlyRun/test1107.m A /issm/trunk-jpl/test/NightlyRun/test1107.py M /issm/trunk-jpl/test/NightlyRun/test1108.m A /issm/trunk-jpl/test/NightlyRun/test1108.py M /issm/trunk-jpl/test/NightlyRun/test1109.m M /issm/trunk-jpl/test/NightlyRun/test1110.m M /issm/trunk-jpl/test/NightlyRun/test1201.m M /issm/trunk-jpl/test/NightlyRun/test1201.py M /issm/trunk-jpl/test/NightlyRun/test1202.m M /issm/trunk-jpl/test/NightlyRun/test1205.m M /issm/trunk-jpl/test/NightlyRun/test1206.m M /issm/trunk-jpl/test/NightlyRun/test1207.m M /issm/trunk-jpl/test/Par/ISMIPA.par A /issm/trunk-jpl/test/Par/ISMIPA.py M /issm/trunk-jpl/test/Par/ISMIPB.par A /issm/trunk-jpl/test/Par/ISMIPB.py M /issm/trunk-jpl/test/Par/ISMIPC.par A /issm/trunk-jpl/test/Par/ISMIPC.py M /issm/trunk-jpl/test/Par/ISMIPD.par A /issm/trunk-jpl/test/Par/ISMIPD.py M /issm/trunk-jpl/test/Par/ISMIPE.par A /issm/trunk-jpl/test/Par/ISMIPE.py M /issm/trunk-jpl/test/Par/ISMIPF.par A /issm/trunk-jpl/test/Par/ISMIPF.py\\
+Export determination: 6. \\
+Rationale: NEW: Working python tests 1101-1108 (plus other cosmetic changes).\\
+\vspace{3em}
+
+\noindent \textbf{Change \#44} with diff file ISSM-14135-14136.diff: \\
+Function name: \\
+M /issm/trunk-jpl/test/Par/ISMIPE.par\\
+Export determination: 6. \\
+Rationale: CHG: Undo previous change.\\
+\vspace{3em}
+
+\noindent \textbf{Change \#45} with diff file ISSM-14138-14139.diff: \\
+Function name: \\
+D /issm/trunk-jpl/test/NightlyRun/InNeedOfDebugging/test218.py\\
+Export determination: 6. \\
+Rationale: CHG: All debugged -- no longer needed.\\
+\vspace{3em}
+
+\noindent \textbf{Change \#46} with diff file ISSM-14139-14140.diff: \\
+Function name: \\
+D /issm/trunk-jpl/test/NightlyRun/InNeedOfDebugging\\
+Export determination: 6. \\
+Rationale: CHG: All debugged -- no longer needed.\\
+\vspace{3em}
+
+\noindent \textbf{Change \#47} with diff file ISSM-14140-14141.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/classes/initialization.py\\
+Export determination: 6. \\
+Rationale: CHG: surfacetemp and basaltemp not marshalled in matlab, so update python accordingly.\\
+\vspace{3em}
+
+\noindent \textbf{Change \#48} with diff file ISSM-14141-14142.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/classes/balancethickness.py M /issm/trunk-jpl/src/m/classes/basalforcings.py M /issm/trunk-jpl/src/m/classes/constants.py M /issm/trunk-jpl/src/m/classes/debug.py M /issm/trunk-jpl/src/m/classes/diagnostic.py M /issm/trunk-jpl/src/m/classes/flowequation.py M /issm/trunk-jpl/src/m/classes/friction.py M /issm/trunk-jpl/src/m/classes/geometry.py M /issm/trunk-jpl/src/m/classes/groundingline.py M /issm/trunk-jpl/src/m/classes/hydrology.py M /issm/trunk-jpl/src/m/classes/inversion.m M /issm/trunk-jpl/src/m/classes/inversion.py M /issm/trunk-jpl/src/m/classes/mask.m M /issm/trunk-jpl/src/m/classes/mask.py M /issm/trunk-jpl/src/m/classes/matice.m M /issm/trunk-jpl/src/m/classes/matice.py M /issm/trunk-jpl/src/m/classes/mesh.py M /issm/trunk-jpl/src/m/classes/miscellaneous.py M /issm/trunk-jpl/src/m/classes/prognostic.py M /issm/trunk-jpl/src/m/classes/radaroverlay.py M /issm/trunk-jpl/src/m/classes/rifts.py M /issm/trunk-jpl/src/m/classes/solver.py M /issm/trunk-jpl/src/m/classes/surfaceforcings.py M /issm/trunk-jpl/src/m/classes/thermal.py M /issm/trunk-jpl/src/m/classes/timestepping.py\\
+Export determination: 6. \\
+Rationale: CHG: Make all the matlab and python class output consistent.\\
+\vspace{3em}
+
+\noindent \textbf{Change \#49} with diff file ISSM-14142-14143.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/classes/autodiff.m M /issm/trunk-jpl/src/m/classes/inversion.m M /issm/trunk-jpl/src/m/classes/solver.py\\
+Export determination: 6. \\
+Rationale: CHG: A few more.\\
+\vspace{3em}
+
+\noindent \textbf{Change \#50} with diff file ISSM-14144-14145.diff: \\
+Function name: \\
+M /issm/trunk-jpl/externalpackages/adolc/install-dev.sh M /issm/trunk-jpl/externalpackages/adolc/install-update-dev.sh\\
+Export determination: 6. \\
+Rationale: CHG temporarily fix the revision until a fix is committed by U of Paderborn and merged into the issm branch to undo a recent change of theirs I merged in from master branch\\
+\vspace{3em}
+
+\noindent \textbf{Change \#51} with diff file ISSM-14149-14150.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/classes/model/model.m M /issm/trunk-jpl/src/m/classes/model/model.py\\
+Export determination: 6. \\
+Rationale: BUG: extrude was blowing up when md.diagnostic.icefront = NaN\\
+\vspace{3em}
+
+\noindent \textbf{Change \#52} with diff file ISSM-14150-14151.diff: \\
+Function name: \\
+M /issm/trunk-jpl/test/NightlyRun/test1402.m\\
+Export determination: 6. \\
+Rationale: BUG: fixed test 1402\\
+\vspace{3em}
+
+\noindent \textbf{Change \#53} with diff file ISSM-14151-14152.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/classes/model/model.m M /issm/trunk-jpl/src/m/classes/model/model.py\\
+Export determination: 6. \\
+Rationale: CHG: reverting back: icefront is never NaN\\
+\vspace{3em}
+
+\noindent \textbf{Change \#54} with diff file ISSM-14153-14154.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/classes/plotoptions.m\\
+Export determination: 6. \\
+Rationale: BUG: fix matlab complaining about Unrecognize Compiler pragma\\
+\vspace{3em}
+
+\noindent \textbf{Change \#55} with diff file ISSM-14156-14157.diff: \\
+Function name: \\
+M /issm/trunk-jpl/test/Archives/Archive1205.nc M /issm/trunk-jpl/test/Archives/Archive1206.nc M /issm/trunk-jpl/test/Archives/Archive1207.nc M /issm/trunk-jpl/test/Par/RoundSheetStaticEISMINT.par M /issm/trunk-jpl/test/Par/RoundSheetStaticEISMINT.py\\
+Export determination: 6. \\
+Rationale: CHG: Eliminated roundoff errors in RoundSheetStaticEISMINT and updated appropriate archives.\\
+\vspace{3em}
+
+\noindent \textbf{Change \#56} with diff file ISSM-14157-14158.diff: \\
+Function name: \\
+A /issm/trunk-jpl/test/NightlyRun/test1205.py A /issm/trunk-jpl/test/NightlyRun/test1206.py A /issm/trunk-jpl/test/NightlyRun/test1207.py\\
+Export determination: 6. \\
+Rationale: NEW: Working python tests 1205-1207.\\
+\vspace{3em}
+
+\noindent \textbf{Change \#57} with diff file ISSM-14158-14159.diff: \\
+Function name: \\
+M /issm/trunk-jpl/test/NightlyRun/python\_skipped\_tests.txt\\
+Export determination: 6. \\
+Rationale: NEW: Working python tests 1205-1207.\\
+\vspace{3em}
+
+\noindent \textbf{Change \#58} with diff file ISSM-14159-14160.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/EnumDefinitions/EnumDefinitions.h M /issm/trunk-jpl/src/c/Makefile.am M /issm/trunk-jpl/src/c/classes/FemModel.cpp M /issm/trunk-jpl/src/c/classes/FemModel.h M /issm/trunk-jpl/src/c/classes/objects/Elements/Element.h M /issm/trunk-jpl/src/c/classes/objects/Elements/Penta.h M /issm/trunk-jpl/src/c/classes/objects/Elements/Tria.cpp M /issm/trunk-jpl/src/c/classes/objects/Elements/Tria.h M /issm/trunk-jpl/src/c/modules/EnumToStringx/EnumToStringx.cpp M /issm/trunk-jpl/src/c/modules/ModelProcessorx/Control/UpdateElementsAndMaterialsControl.cpp M /issm/trunk-jpl/src/c/modules/StringToEnumx/StringToEnumx.cpp M /issm/trunk-jpl/src/c/solutions/AdjointCorePointerFromSolutionEnum.cpp M /issm/trunk-jpl/src/c/solutions/AnalysisConfiguration.cpp M /issm/trunk-jpl/src/c/solutions/CorePointerFromSolutionEnum.cpp A /issm/trunk-jpl/src/c/solutions/dummy\_core.cpp M /issm/trunk-jpl/src/c/solutions/objectivefunction.cpp M /issm/trunk-jpl/src/c/solutions/solutions.h\\
+Export determination: 6. \\
+Rationale: NEW: added weak balance thickness (Jonhson et al. 2013?)\\
+\vspace{3em}
+
+\noindent \textbf{Change \#59} with diff file ISSM-14160-14161.diff: \\
+Function name: \\
+A /issm/trunk-jpl/src/m/enum/BalancethicknessMisfitEnum.m M /issm/trunk-jpl/src/m/enum/EnumDefinitions.py M /issm/trunk-jpl/src/m/enum/MaximumNumberOfEnums.m A /issm/trunk-jpl/src/m/enum/OutputFileNameEnum.m D /issm/trunk-jpl/src/m/enum/OutputfilenameEnum.m A /issm/trunk-jpl/src/m/enum/WeakBalancethicknessAnalysisEnum.m A /issm/trunk-jpl/src/m/enum/WeakBalancethicknessSolutionEnum.m\\
+Export determination: 6. \\
+Rationale: CHG: sync Enums\\
+\vspace{3em}
+
+\noindent \textbf{Change \#60} with diff file ISSM-14161-14162.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/EnumDefinitions/EnumDefinitions.h M /issm/trunk-jpl/src/c/modules/EnumToStringx/EnumToStringx.cpp M /issm/trunk-jpl/src/c/modules/OutputResultsx/OutputResultsx.cpp M /issm/trunk-jpl/src/c/modules/StringToEnumx/StringToEnumx.cpp\\
+Export determination: 6. \\
+Rationale: CHG: duplicate OutputFileNameEnum.m OutputfilenameEnum.m\\
+\vspace{3em}
+
+\noindent \textbf{Change \#61} with diff file ISSM-14162-14163.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/classes/inversion.m M /issm/trunk-jpl/src/m/consistency/ismodelselfconsistent.m M /issm/trunk-jpl/src/m/solve/process\_solve\_options.m\\
+Export determination: 6. \\
+Rationale: NEW: added weak balance thickness\\
+\vspace{3em}
+
+\noindent \textbf{Change \#62} with diff file ISSM-14163-14164.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/solutions/AdjointCorePointerFromSolutionEnum.cpp\\
+Export determination: 6. \\
+Rationale: BUG: missing break statement\\
+\vspace{3em}
+
+\noindent \textbf{Change \#63} with diff file ISSM-14164-14165.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/modules/ModelProcessorx/Control/CreateParametersControl.cpp M /issm/trunk-jpl/src/c/solutions/controltao\_core.cpp\\
+Export determination: 6. \\
+Rationale: CHG: not every field is necessary for tao\\
+\vspace{3em}
+
+\noindent \textbf{Change \#64} with diff file ISSM-14165-14166.diff: \\
+Function name: \\
+A /issm/trunk-jpl/src/m/classes/taoinversion.m\\
+Export determination: 6. \\
+Rationale: NEW: added taoinversion for inversion with tao (not every field is necessary + cost function is constant\\
+\vspace{3em}
+
+\noindent \textbf{Change \#65} with diff file ISSM-14166-14167.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/solutions/convergence.cpp\\
+Export determination: 6. \\
+Rationale: CHG: added assertion check to avoid crash\\
+\vspace{3em}
+
+\noindent \textbf{Change \#66} with diff file ISSM-14167-14168.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/solvers/solver\_newton.cpp\\
+Export determination: 6. \\
+Rationale: NEW: fixed newton iteration solver (only one iteration needed)\\
+\vspace{3em}
+
+\noindent \textbf{Change \#67} with diff file ISSM-14168-14169.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/android/ISSM/project.properties A /issm/trunk-jpl/src/android/ISSM/res/drawable-hdpi/issmlogo.jpg A /issm/trunk-jpl/src/android/ISSM/res/drawable-mdpi/antarctica.png A /issm/trunk-jpl/src/android/ISSM/res/drawable-mdpi/greenland.png A /issm/trunk-jpl/src/android/ISSM/res/drawable-mdpi/ic\_about.jpg A /issm/trunk-jpl/src/android/ISSM/res/drawable-mdpi/ic\_color.jpg M /issm/trunk-jpl/src/android/ISSM/res/layout/activity\_mapselection.xml A /issm/trunk-jpl/src/android/ISSM/res/menu/issm\_menu.xml A /issm/trunk-jpl/src/android/ISSM/src/com/example/issm/ColorMap.java M /issm/trunk-jpl/src/android/ISSM/src/com/example/issm/ISSM.java M /issm/trunk-jpl/src/android/ISSM/src/com/example/issm/MapSelection.java M /issm/trunk-jpl/src/android/ISSM/src/com/example/issm/MyGLSurfaceView.java\\
+Export determination: 6. \\
+Rationale: Added: new look to ISSM android app, and color menu.\\
+\vspace{3em}
+
+\noindent \textbf{Change \#68} with diff file ISSM-14169-14170.diff: \\
+Function name: \\
+M /issm/trunk-jpl/test/Archives/Archive428.nc M /issm/trunk-jpl/test/Archives/Archive429.nc M /issm/trunk-jpl/test/Archives/Archive430.nc\\
+Export determination: 6. \\
+Rationale: updated Newton's algorithm\\
+\vspace{3em}
+
+\noindent \textbf{Change \#69} with diff file ISSM-14170-14171.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/classes/inversion.m M /issm/trunk-jpl/src/m/classes/taoinversion.m\\
+Export determination: 6. \\
+Rationale: NEW: added conversion constructor from taoinversion to inversion and viceversa\\
+\vspace{3em}
+
+\noindent \textbf{Change \#70} with diff file ISSM-14171-14172.diff: \\
+Function name: \\
+M /issm/trunk-jpl/m4/issm\_options.m4\\
+Export determination: 6. \\
+Rationale: CHG: added checks that gfortran and X11 libraries exist + added suggestion from petsc and mpi\\
+\vspace{3em}
+
+\noindent \textbf{Change \#71} with diff file ISSM-14172-14173.diff: \\
+Function name: \\
+M /issm/trunk-jpl/m4/issm\_options.m4\\
+Export determination: 6. \\
+Rationale: BUG: fixed problem with use of awk input-meta\\
+\vspace{3em}
+
+\noindent \textbf{Change \#72} with diff file ISSM-14173-14174.diff: \\
+Function name: \\
+M /issm/trunk-jpl/m4/issm\_options.m4\\
+Export determination: 6. \\
+Rationale: BUG: graphics lib might be a file, not a directory\\
+\vspace{3em}
+
+\noindent \textbf{Change \#73} with diff file ISSM-14174-14175.diff: \\
+Function name: \\
+M /issm/trunk-jpl/externalpackages/export\_fig/export\_fig.m M /issm/trunk-jpl/externalpackages/export\_fig/ghostscript.m M /issm/trunk-jpl/externalpackages/export\_fig/isolate\_axes.m M /issm/trunk-jpl/externalpackages/export\_fig/pdftops.m M /issm/trunk-jpl/externalpackages/export\_fig/print2array.m M /issm/trunk-jpl/externalpackages/export\_fig/print2eps.m\\
+Export determination: 6. \\
+Rationale: CHG: updated export\_fig\\
+\vspace{3em}
+
+\noindent \textbf{Change \#74} with diff file ISSM-14175-14176.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/EnumDefinitions/EnumDefinitions.h M /issm/trunk-jpl/src/c/classes/objects/Elements/Penta.cpp M /issm/trunk-jpl/src/c/classes/objects/Elements/Tria.cpp M /issm/trunk-jpl/src/c/modules/EnumToStringx/EnumToStringx.cpp M /issm/trunk-jpl/src/c/modules/ModelProcessorx/Prognostic/UpdateElementsPrognostic.cpp M /issm/trunk-jpl/src/c/modules/StringToEnumx/StringToEnumx.cpp M /issm/trunk-jpl/src/c/shared/Numerics/UnitConversion.cpp M /issm/trunk-jpl/src/m/classes/surfaceforcings.m\\
+Export determination: 6. \\
+Rationale: update SMB gradients code\\
+\vspace{3em}
+
+\noindent \textbf{Change \#75} with diff file ISSM-14176-14177.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/classes/pairoptions.m\\
+Export determination: 6. \\
+Rationale: NEW: added list of all unused option for plotmodel\\
+\vspace{3em}
+
+\noindent \textbf{Change \#76} with diff file ISSM-14177-14178.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/plot/plotmodel.m\\
+Export determination: 6. \\
+Rationale: NEW: list all unused options\\
+\vspace{3em}
+
+\noindent \textbf{Change \#77} with diff file ISSM-14178-14179.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/plot/kmlgroundoverlay.m\\
+Export determination: 6. \\
+Rationale: NEW: use export\_fig instead of printmodel, and use transparent feature\\
+\vspace{3em}
+
+\noindent \textbf{Change \#78} with diff file ISSM-14179-14180.diff: \\
+Function name: \\
+M /issm/trunk-jpl/test/NightlyRun/runme.m M /issm/trunk-jpl/test/NightlyRun/test328.m M /issm/trunk-jpl/test/NightlyRun/test329.m\\
+Export determination: 6. \\
+Rationale: CHG: updating Michiel's NR + added check in runme so that the id makes sense\\
+\vspace{3em}
+
+\noindent \textbf{Change \#79} with diff file ISSM-14180-14181.diff: \\
+Function name: \\
+M /issm/trunk-jpl/test/Archives/Archive328.nc\\
+Export determination: 6. \\
+Rationale: CHG: updating Michiel's NR\\
+\vspace{3em}
+
+\noindent \textbf{Change \#80} with diff file ISSM-14181-14182.diff: \\
+Function name: \\
+M /issm/trunk-jpl/test/Archives/Archive329.nc\\
+Export determination: 6. \\
+Rationale: CHG: updating Michiel's NR\\
+\vspace{3em}
+
+\noindent \textbf{Change \#81} with diff file ISSM-14182-14183.diff: \\
+Function name: \\
+A /issm/trunk-jpl/src/m/miscellaneous/normcdf\_issm.m A /issm/trunk-jpl/src/m/miscellaneous/normfit\_issm.m A /issm/trunk-jpl/src/m/miscellaneous/norminv\_issm.m M /issm/trunk-jpl/src/m/qmu/dakota\_cdfs.m M /issm/trunk-jpl/src/m/qmu/dakota\_moments.m M /issm/trunk-jpl/src/m/qmu/dakota\_out\_parse.m M /issm/trunk-jpl/src/m/qmu/plot/plot\_cdf.m M /issm/trunk-jpl/src/m/qmu/plot/plot\_hist\_norm.m M /issm/trunk-jpl/src/m/qmu/plot/plot\_hist\_norm\_ci.m M /issm/trunk-jpl/src/m/qmu/plot/plot\_normdist\_bars.m M /issm/trunk-jpl/src/m/qmu/plot/plot\_rlev\_bars\_ci.m\\
+Export determination: 6. \\
+Rationale: CHG: Replaced calls to normfit/normcdf/norminv and applied error handling to tinv/chi2inv.\\
+\vspace{3em}
+
+\noindent \textbf{Change \#82} with diff file ISSM-14183-14184.diff: \\
+Function name: \\
+M /issm/trunk-jpl/m4/issm\_options.m4\\
+Export determination: 6. \\
+Rationale: BUG: FORTRAN\_LIB provided might be a directory\\
+\vspace{3em}
+
+\noindent \textbf{Change \#83} with diff file ISSM-14184-14185.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/enum/EnumDefinitions.py M /issm/trunk-jpl/src/m/enum/MaximumNumberOfEnums.m D /issm/trunk-jpl/src/m/enum/SurfaceforcingsANegEnum.m D /issm/trunk-jpl/src/m/enum/SurfaceforcingsAPosEnum.m D /issm/trunk-jpl/src/m/enum/SurfaceforcingsHcEnum.m D /issm/trunk-jpl/src/m/enum/SurfaceforcingsSmbPosMaxEnum.m D /issm/trunk-jpl/src/m/enum/SurfaceforcingsSmbPosMinEnum.m\\
+Export determination: 6. \\
+Rationale: BUG: sync enums on matlab side\\
+\vspace{3em}
+
+\noindent \textbf{Change \#84} with diff file ISSM-14185-14186.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/android/ISSM\_Visual/bin M /issm/trunk-jpl/src/android/ISSM\_Visual/gen\\
+Export determination: 6. \\
+Rationale: CHG: get svn to ignore some files\\
+\vspace{3em}
+
+\noindent \textbf{Change \#85} with diff file ISSM-14186-14187.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/android/ISSM/Makefile.am M /issm/trunk-jpl/src/android/ISSM/project.properties\\
+Export determination: 6. \\
+Rationale: CHG: added one dependency to Makefile\\
+\vspace{3em}
+
+\noindent \textbf{Change \#86} with diff file ISSM-14187-14188.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/android/ISSM/assets/Map/greenland.bin\\
+Export determination: 6. \\
+Rationale: CHG: better greenland model\\
+\vspace{3em}
+
+\noindent \textbf{Change \#87} with diff file ISSM-14188-14189.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/android/ISSM/jni/Main.cpp M /issm/trunk-jpl/src/android/ISSM/src/com/example/issm/ColorMap.java M /issm/trunk-jpl/src/android/ISSM/src/com/example/issm/MyGLSurfaceView.java\\
+Export determination: 6. \\
+Rationale: CHG: better interpolation of colors\\
+\vspace{3em}
+
+\noindent \textbf{Change \#88} with diff file ISSM-14189-14190.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/android/ISSM/jni/Main.cpp M /issm/trunk-jpl/src/android/ISSM/jni/issmlib/libISSMCore.a M /issm/trunk-jpl/src/android/ISSM/src/com/example/issm/ColorMap.java M /issm/trunk-jpl/src/android/ISSM/src/com/example/issm/IssmJni.java\\
+Export determination: 6. \\
+Rationale: CHG: took out factorial example\\
+\vspace{3em}
+
+\noindent \textbf{Change \#89} with diff file ISSM-14190-14191.diff: \\
+Function name: \\
+M /issm/trunk-jpl/test/NightlyRun/test328.py M /issm/trunk-jpl/test/NightlyRun/test329.py\\
+Export determination: 6. \\
+Rationale: changed python scripts for SmbGradients NightlyRuns tests\\
+\vspace{3em}
+
+\noindent \textbf{Change \#90} with diff file ISSM-14191-14192.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/android/ISSM/Makefile.am M /issm/trunk-jpl/src/android/ISSM/assets/Map/antarctica.bin M /issm/trunk-jpl/src/android/ISSM/assets/Map/antarctica.petsc M /issm/trunk-jpl/src/android/ISSM/assets/Map/greenland.bin M /issm/trunk-jpl/src/android/ISSM/jni/Main.cpp M /issm/trunk-jpl/src/android/ISSM/jni/issmlib/libISSMCore.a M /issm/trunk-jpl/src/c/EnumDefinitions/EnumDefinitions.h M /issm/trunk-jpl/src/c/Makefile.am D /issm/trunk-jpl/src/c/android M /issm/trunk-jpl/src/c/classes/FemModel.cpp M /issm/trunk-jpl/src/c/modules/EnumToStringx/EnumToStringx.cpp M /issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/UpdateElementsDiagnosticHoriz.cpp M /issm/trunk-jpl/src/c/modules/StringToEnumx/StringToEnumx.cpp A /issm/trunk-jpl/src/m/enum/AndroidFrictionCoefficientEnum.m M /issm/trunk-jpl/src/m/enum/EnumDefinitions.py M /issm/trunk-jpl/src/m/enum/MaximumNumberOfEnums.m\\
+Export determination: 6. \\
+Rationale: CHG: new enum for android. We copy friction coefficient into android friction coefficient to keep track of it on update.\\
+\vspace{3em}
+
+\noindent \textbf{Change \#91} with diff file ISSM-14192-14193.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/android/ISSM/src/com/example/issm/MyGLSurfaceView.java\\
+Export determination: 6. \\
+Rationale: CHG: scaling in x and y axis\\
+\vspace{3em}
+
+\noindent \textbf{Change \#92} with diff file ISSM-14193-14194.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/android/ISSM/src/com/example/issm/ISSM.java\\
+Export determination: 6. \\
+Rationale: CHG: not much\\
+\vspace{3em}
+
+\noindent \textbf{Change \#93} with diff file ISSM-14194-14195.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/classes/FemModel.cpp\\
+Export determination: 6. \\
+Rationale: BUG: cannot use Verbosity before ModelProcessorx\\
+\vspace{3em}
+
+\noindent \textbf{Change \#94} with diff file ISSM-14195-14196.diff: \\
+Function name: \\
+A /issm/trunk-jpl/src/m/plot/kmlgridded.m M /issm/trunk-jpl/src/m/plot/plot\_gridded.m\\
+Export determination: 6. \\
+Rationale: NEW: added kml stuff with colorbar\\
+\vspace{3em}
+
+\noindent \textbf{Change \#95} with diff file ISSM-14196-14197.diff: \\
+Function name: \\
+A /issm/trunk-jpl/src/m/miscellaneous/prctile\_issm.m M /issm/trunk-jpl/src/m/qmu/dakota\_out\_parse.m M /issm/trunk-jpl/src/m/qmu/plot/plot\_sampdist\_bars.m\\
+Export determination: 6. \\
+Rationale: CHG: Replaced calls to prctile.\\
+\vspace{3em}
+
+\noindent \textbf{Change \#96} with diff file ISSM-14197-14198.diff: \\
+Function name: \\
+D /issm/trunk-jpl/externalpackages/gdal/GDALmake.opt.patch D /issm/trunk-jpl/externalpackages/gdal/GDALmake.opt.patch.astrid A /issm/trunk-jpl/externalpackages/gdal/configs A /issm/trunk-jpl/externalpackages/gdal/configs/GDALmake.opt.patch.astrid (from /issm/trunk-jpl/externalpackages/gdal/GDALmake.opt.patch.astrid:14168) A /issm/trunk-jpl/externalpackages/gdal/configs/GDALmake.opt.patch.murdo (from /issm/trunk-jpl/externalpackages/gdal/GDALmake.opt.patch:14168) M /issm/trunk-jpl/externalpackages/gdal/install-linux64-astrid.sh M /issm/trunk-jpl/externalpackages/gdal/install-linux64-murdo.sh\\
+Export determination: 6. \\
+Rationale: CHG: moved pathes to configs\\
+\vspace{3em}
+
+\noindent \textbf{Change \#97} with diff file ISSM-14198-14199.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/classes/surfaceforcings.py M /issm/trunk-jpl/test/NightlyRun/test328.m M /issm/trunk-jpl/test/NightlyRun/test328.py M /issm/trunk-jpl/test/NightlyRun/test329.m M /issm/trunk-jpl/test/NightlyRun/test329.py\\
+Export determination: 6. \\
+Rationale: CHG: Update python surfaceforcings to match matlab [14175] (plus related minor changes).\\
+\vspace{3em}
+
+\noindent \textbf{Change \#98} with diff file ISSM-14199-14200.diff: \\
+Function name: \\
+A /issm/trunk-jpl/externalpackages/gdal/install-1.6-linux64-astrid.sh (from /issm/trunk-jpl/externalpackages/gdal/install-linux64-astrid.sh:14197) A /issm/trunk-jpl/externalpackages/gdal/install-1.6-linux64-murdo.sh (from /issm/trunk-jpl/externalpackages/gdal/install-linux64-murdo.sh:14197) A /issm/trunk-jpl/externalpackages/gdal/install-1.6-macosx64.sh (from /issm/trunk-jpl/externalpackages/gdal/install-macosx64.sh:14168) A /issm/trunk-jpl/externalpackages/gdal/install-1.9-macosx64.sh D /issm/trunk-jpl/externalpackages/gdal/install-linux64-astrid.sh D /issm/trunk-jpl/externalpackages/gdal/install-linux64-murdo.sh D /issm/trunk-jpl/externalpackages/gdal/install-macosx64.sh\\
+Export determination: 6. \\
+Rationale: NEW: added new version of gdal, which provides gdal2tile.py very useful for kml\\
+\vspace{3em}
+
+\noindent \textbf{Change \#99} with diff file ISSM-14200-14201.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/android/ISSM/src/com/example/issm/ISSM.java\\
+Export determination: 6. \\
+Rationale: seekBar implementation\\
+\vspace{3em}
+
+\noindent \textbf{Change \#100} with diff file ISSM-14201-14202.diff: \\
+Function name: \\
+A /issm/trunk-jpl/externalpackages/gdal/install-1.9-linux64.sh\\
+Export determination: 6. \\
+Rationale: NEW: added install-1.9-linux64.sh\\
+\vspace{3em}
+
+\noindent \textbf{Change \#101} with diff file ISSM-14202-14203.diff: \\
+Function name: \\
+M /issm/trunk-jpl/externalpackages/gdal/install-1.9-linux64.sh M /issm/trunk-jpl/externalpackages/gdal/install-1.9-macosx64.sh\\
+Export determination: 6. \\
+Rationale: minor\\
+\vspace{3em}
+
+\noindent \textbf{Change \#102} with diff file ISSM-14203-14204.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/android/ISSM/jni/Android.mk M /issm/trunk-jpl/src/android/ISSM/jni/gsllib/Android.mk M /issm/trunk-jpl/src/android/ISSM/jni/issmlib/Android.mk\\
+Export determination: 6. \\
+Rationale: Fix: Make file for android\\
+\vspace{3em}
+
+\noindent \textbf{Change \#103} with diff file ISSM-14204-14205.diff: \\
+Function name: \\
+D /issm/trunk-jpl/src/android/ISSM/jni/gsllib/libsgsl.a D /issm/trunk-jpl/src/android/ISSM/jni/gsllib/libsgslcblas.a D /issm/trunk-jpl/src/android/ISSM/jni/issmlib/libISSMCore.a\\
+Export determination: 6. \\
+Rationale: CHG: not needed anymore\\
+\vspace{3em}
+
+\noindent \textbf{Change \#104} with diff file ISSM-14205-14206.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/android/ISSM/Makefile.am\\
+Export determination: 6. \\
+Rationale: CHG: rerouted the dependency on libISSMCore.a from jni to src/c/\\
+\vspace{3em}
+
+\noindent \textbf{Change \#105} with diff file ISSM-14206-14207.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/android/ISSM/Makefile.am\\
+Export determination: 6. \\
+Rationale: CHG: better clean target\\
+\vspace{3em}
+
+\noindent \textbf{Change \#106} with diff file ISSM-14207-14208.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/android/ISSM/jni/Main.cpp\\
+Export determination: 6. \\
+Rationale: CHG: pushed scaling of inputs\\
+\vspace{3em}
+
+\noindent \textbf{Change \#107} with diff file ISSM-14208-14209.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/android/ISSM/res/layout/activity\_issm.xml M /issm/trunk-jpl/src/android/ISSM/src/com/example/issm/ISSM.java M /issm/trunk-jpl/src/android/ISSM/src/com/example/issm/MyGLRenderer.java\\
+Export determination: 6. \\
+Rationale: Fixed: Layout, and slider\\
+\vspace{3em}
+
+\noindent \textbf{Change \#108} with diff file ISSM-14210-14211.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/android/ISSM/AndroidManifest.xml M /issm/trunk-jpl/src/android/ISSM/bin/AndroidManifest.xml A /issm/trunk-jpl/src/android/ISSM/res/anim A /issm/trunk-jpl/src/android/ISSM/res/anim/alpha.xml A /issm/trunk-jpl/src/android/ISSM/res/anim/translate.xml A /issm/trunk-jpl/src/android/ISSM/res/drawable-hdpi/background.jpg A /issm/trunk-jpl/src/android/ISSM/res/drawable-mdpi/intro.png A /issm/trunk-jpl/src/android/ISSM/res/drawable-mdpi/issm\_logo.png A /issm/trunk-jpl/src/android/ISSM/res/drawable-mdpi/start.png A /issm/trunk-jpl/src/android/ISSM/res/drawable-mdpi/video.png A /issm/trunk-jpl/src/android/ISSM/res/drawable-mdpi/visitus.png D /issm/trunk-jpl/src/android/ISSM/res/layout/activity\_issm.xml D /issm/trunk-jpl/src/android/ISSM/res/layout/activity\_mapselection.xml A /issm/trunk-jpl/src/android/ISSM/res/layout/issmcore.xml A /issm/trunk-jpl/src/android/ISSM/res/layout/issmmapselection.xml A /issm/trunk-jpl/src/android/ISSM/res/layout/main\_issm.xml A /issm/trunk-jpl/src/android/ISSM/res/layout/menupage.xml A /issm/trunk-jpl/src/android/ISSM/res/layout/popuptext.xml A /issm/trunk-jpl/src/android/ISSM/res/layout/splashscreen.xml A /issm/trunk-jpl/src/android/ISSM/src/com/example/issm/ColorBar.java M /issm/trunk-jpl/src/android/ISSM/src/com/example/issm/ColorMap.java M /issm/trunk-jpl/src/android/ISSM/src/com/example/issm/ISSM.java D /issm/trunk-jpl/src/android/ISSM/src/com/example/issm/MapSelection.java A /issm/trunk-jpl/src/android/ISSM/src/com/example/issm/MenuPage.java M /issm/trunk-jpl/src/android/ISSM/src/com/example/issm/MyGLRenderer.java M /issm/trunk-jpl/src/android/ISSM/src/com/example/issm/MyGLSurfaceView.java A /issm/trunk-jpl/src/android/ISSM/src/com/example/issm/SplashScreen.java A /issm/trunk-jpl/src/android/ISSM/src/com/example/issm/VerticalSeekBar.java\\
+Export determination: 6. \\
+Rationale: Change ISSM app layout, add random Z coordinate\\
+\vspace{3em}
+
+\noindent \textbf{Change \#109} with diff file ISSM-14211-14212.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/classes/model/model.py M /issm/trunk-jpl/src/m/geometry/FlagElements.py M /issm/trunk-jpl/src/m/mesh/ElementsFromEdge.py A /issm/trunk-jpl/src/m/miscellaneous/PythonFuncs.py M /issm/trunk-jpl/src/m/parameterization/setflowequation.py\\
+Export determination: 6. \\
+Rationale: NEW: Implement new python logical functions to get rid of ugly nesting.\\
+\vspace{3em}
+
+\noindent \textbf{Change \#110} with diff file ISSM-14212-14213.diff: \\
+Function name: \\
+M /issm/trunk-jpl/test/NightlyRun/test1101.py M /issm/trunk-jpl/test/NightlyRun/test1102.py M /issm/trunk-jpl/test/NightlyRun/test1103.py M /issm/trunk-jpl/test/NightlyRun/test1104.py M /issm/trunk-jpl/test/NightlyRun/test1105.py M /issm/trunk-jpl/test/NightlyRun/test1106.py M /issm/trunk-jpl/test/NightlyRun/test1107.py M /issm/trunk-jpl/test/NightlyRun/test1108.py\\
+Export determination: 6. \\
+Rationale: CHG: Get rid of more ugly Python logical nesting.\\
+\vspace{3em}
+
+\noindent \textbf{Change \#111} with diff file ISSM-14213-14214.diff: \\
+Function name: \\
+M /issm/trunk-jpl/scripts/DownloadExternalPackage.py\\
+Export determination: 6. \\
+Rationale: CHG: Modified DownloadExternalPackage.py to better meet Python coding conventions and included folding markers.\\
+\vspace{3em}
+
+\noindent \textbf{Change \#112} with diff file ISSM-14214-14215.diff: \\
+Function name: \\
+M /issm/trunk-jpl/scripts/DownloadExternalPackage.py\\
+Export determination: 6. \\
+Rationale: BUG: fixed indentation\\
+\vspace{3em}
+
+\noindent \textbf{Change \#113} with diff file ISSM-14215-14216.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/classes/settings.m M /issm/trunk-jpl/src/m/classes/settings.py\\
+Export determination: 6. \\
+Rationale: CHG: updated the way waitonlock is marshalled to be more consistent\\
+\vspace{3em}
+
+\noindent \textbf{Change \#114} with diff file ISSM-14216-14217.diff: \\
+Function name: \\
+M /issm/trunk-jpl/m4/issm\_options.m4\\
+Export determination: 6. \\
+Rationale: CHG: removed old check\\
+\vspace{3em}
+
+\noindent \textbf{Change \#115} with diff file ISSM-14217-14218.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/wrappers/MeshProfileIntersection/MeshProfileIntersection.cpp\\
+Export determination: 6. \\
+Rationale: CHG: MeshProfileIntersection now writes integers\\
+\vspace{3em}
+
+\noindent \textbf{Change \#116} with diff file ISSM-14218-14219.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/Makefile.am D /issm/trunk-jpl/src/c/modules/MeshProfileIntersectionx/ElementSegment.cpp D /issm/trunk-jpl/src/c/modules/MeshProfileIntersectionx/ElementSegmentsIntersection.cpp M /issm/trunk-jpl/src/c/modules/MeshProfileIntersectionx/MeshProfileIntersectionx.cpp M /issm/trunk-jpl/src/c/modules/MeshProfileIntersectionx/MeshProfileIntersectionx.h D /issm/trunk-jpl/src/c/modules/MeshProfileIntersectionx/MeshSegmentsIntersection.cpp D /issm/trunk-jpl/src/c/modules/MeshProfileIntersectionx/NodeInElement.cpp D /issm/trunk-jpl/src/c/modules/MeshProfileIntersectionx/SegmentIntersect.cpp D /issm/trunk-jpl/src/c/modules/MeshProfileIntersectionx/intersect.m\\
+Export determination: 6. \\
+Rationale: CHG: MeshProfileIntersection now writes integers + lots of clean up\\
+\vspace{3em}
+
+\noindent \textbf{Change \#117} with diff file ISSM-14219-14220.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/modules/MeshProfileIntersectionx/MeshProfileIntersectionx.cpp M /issm/trunk-jpl/src/c/modules/MeshProfileIntersectionx/MeshProfileIntersectionx.h\\
+Export determination: 6. \\
+Rationale: BUG: segments must remain double\\
+\vspace{3em}
+
+\noindent \textbf{Change \#118} with diff file ISSM-14220-14221.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/wrappers/MeshProfileIntersection/MeshProfileIntersection.cpp\\
+Export determination: 6. \\
+Rationale: BUG: segments must remain double\\
+\vspace{3em}
+
+\noindent \textbf{Change \#119} with diff file ISSM-14221-14222.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/wrappers/TriMesh/TriMesh.cpp M /issm/trunk-jpl/src/wrappers/TriMeshProcessRifts/TriMeshProcessRifts.cpp M /issm/trunk-jpl/src/wrappers/matlab/io/WriteMatlabData.cpp M /issm/trunk-jpl/src/wrappers/matlab/io/matlabio.h M /issm/trunk-jpl/src/wrappers/python/io/FetchPythonData.cpp M /issm/trunk-jpl/src/wrappers/python/io/WritePythonData.cpp M /issm/trunk-jpl/src/wrappers/python/io/pythonio.h\\
+Export determination: 6. \\
+Rationale: CHG: index and segments are now integers\\
+\vspace{3em}
+
+\noindent \textbf{Change \#120} with diff file ISSM-14222-14223.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/classes/RiftStruct.cpp M /issm/trunk-jpl/src/c/classes/RiftStruct.h M /issm/trunk-jpl/src/c/modules/TriMeshProcessRiftsx/TriMeshProcessRiftsx.cpp M /issm/trunk-jpl/src/c/modules/TriMeshProcessRiftsx/TriMeshProcessRiftsx.h M /issm/trunk-jpl/src/c/modules/TriMeshx/TriMeshx.cpp M /issm/trunk-jpl/src/c/modules/TriMeshx/TriMeshx.h M /issm/trunk-jpl/src/c/shared/TriMesh/AssociateSegmentToElement.cpp M /issm/trunk-jpl/src/c/shared/TriMesh/OrderSegments.cpp M /issm/trunk-jpl/src/c/shared/TriMesh/SplitMeshForRifts.cpp M /issm/trunk-jpl/src/c/shared/TriMesh/TriMeshUtils.cpp M /issm/trunk-jpl/src/c/shared/TriMesh/trimesh.h\\
+Export determination: 6. \\
+Rationale: CHG: index and segments are now integers\\
+\vspace{3em}
+
+\noindent \textbf{Change \#121} with diff file ISSM-14223-14224.diff: \\
+Function name: \\
+A /issm/trunk-jpl/src/m/plot/colormaps/landcolor.m A /issm/trunk-jpl/src/m/plot/colormaps/seacolor.m\\
+Export determination: 6. \\
+Rationale: NEW: added 2 new colormaps\\
+\vspace{3em}
+
+\noindent \textbf{Change \#122} with diff file ISSM-14224-14225.diff: \\
+Function name: \\
+A /issm/trunk-jpl/externalpackages/dem A /issm/trunk-jpl/externalpackages/dem/dem.m A /issm/trunk-jpl/externalpackages/dem/landcolor.m A /issm/trunk-jpl/externalpackages/dem/license.txt A /issm/trunk-jpl/externalpackages/dem/seacolor.m\\
+Export determination: 6. \\
+Rationale: NEW: Added dem package to plot shaded relief\\
+\vspace{3em}
+
+\noindent \textbf{Change \#123} with diff file ISSM-14225-14226.diff: \\
+Function name: \\
+M /issm/trunk-jpl/startup.m\\
+Export determination: 6. \\
+Rationale: NEW: added dem package to startup file\\
+\vspace{3em}
+
+\noindent \textbf{Change \#124} with diff file ISSM-14226-14227.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/Container/Observations.cpp M /issm/trunk-jpl/src/c/Container/Observations.h M /issm/trunk-jpl/src/c/modules/Krigingx/Krigingx.cpp\\
+Export determination: 6. \\
+Rationale: NEW: Added distance output\\
+\vspace{3em}
+
+\noindent \textbf{Change \#125} with diff file ISSM-14227-14228.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/parameterization/contourenvelope.m\\
+Export determination: 6. \\
+Rationale: BUG: fixed bug for some elements on boundary\\
+\vspace{3em}
+
+\noindent \textbf{Change \#126} with diff file ISSM-14228-14229.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/classes/organizer.m\\
+Export determination: 6. \\
+Rationale: CHG: organizer is now a handle so that we don't need to do assignin('caller',inputname(1),org);\\
+\vspace{3em}
+
+\noindent \textbf{Change \#127} with diff file ISSM-14229-14230.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/parameterization/contourenvelope.m\\
+Export determination: 6. \\
+Rationale: BUG: fixed bug for some elements on boundary\\
+\vspace{3em}
+
+\noindent \textbf{Change \#128} with diff file ISSM-14230-14231.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/classes/model/model.m\\
+Export determination: 6. \\
+Rationale: BUG: fixed extractions of results that are not structures\\
+\vspace{3em}
+
+\noindent \textbf{Change \#129} with diff file ISSM-14231-14232.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/parameterization/contourenvelope.py\\
+Export determination: 6. \\
+Rationale: CHG: updated python code accordingly\\
+\vspace{3em}
+
+\noindent \textbf{Change \#130} with diff file ISSM-14232-14233.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/wrappers/python/io/WritePythonData.cpp\\
+Export determination: 6. \\
+Rationale: NEW: Modify PythonWriteData to write actual python integers.\\
+\vspace{3em}
+
+\noindent \textbf{Change \#131} with diff file ISSM-14233-14234.diff: \\
+Function name: \\
+A /issm/trunk-jpl/externalpackages/gsl/install-greenplanet.sh\\
+Export determination: 6. \\
+Rationale: NEW: added installation script for gp\\
+\vspace{3em}
+
+\noindent \textbf{Change \#132} with diff file ISSM-14234-14235.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/wrappers/python/io/FetchPythonData.cpp M /issm/trunk-jpl/src/wrappers/python/io/WritePythonData.cpp M /issm/trunk-jpl/src/wrappers/python/io/pythonio.h\\
+Export determination: 6. \\
+Rationale: NEW: Added python read/write functions for booleans.\\
+\vspace{3em}
+
+\noindent \textbf{Change \#133} with diff file ISSM-14235-14236.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/shared/TriMesh/TriMeshUtils.cpp\\
+Export determination: 6. \\
+Rationale: CHG: no need to cast to double anymore\\
+\vspace{3em}
+
+\noindent \textbf{Change \#134} with diff file ISSM-14236-14237.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/wrappers/python/io/FetchPythonData.cpp\\
+Export determination: 6. \\
+Rationale: CHG: Allow more possibilities for reading python vectors.\\
+\vspace{3em}
+
+\noindent \textbf{Change \#135} with diff file ISSM-14237-14238.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/modules/Krigingx/Krigingx.cpp M /issm/trunk-jpl/src/c/modules/Krigingx/Krigingx.h\\
+Export determination: 6. \\
+Rationale: NEW: multithreading of distances output\\
+\vspace{3em}
+
+\noindent \textbf{Change \#136} with diff file ISSM-14238-14239.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/Container/DataSet.cpp M /issm/trunk-jpl/src/c/Container/Observations.cpp\\
+Export determination: 6. \\
+Rationale: NEW: testing faster closest point search\\
+\vspace{3em}
+
+\noindent \textbf{Change \#137} with diff file ISSM-14239-14240.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/Container/Observations.cpp\\
+Export determination: 6. \\
+Rationale: BUG: fixed crash, index undefined\\
+\vspace{3em}
+
+\noindent \textbf{Change \#138} with diff file ISSM-14240-14241.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/Container/Observations.cpp\\
+Export determination: 6. \\
+Rationale: CHG: improved sensitivity with respect to edges\\
+\vspace{3em}
+
+\noindent \textbf{Change \#139} with diff file ISSM-14241-14242.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/Container/Observations.cpp\\
+Export determination: 6. \\
+Rationale: BUG: fixed crash\\
+\vspace{3em}
+
+\noindent \textbf{Change \#140} with diff file ISSM-14242-14243.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/qmu/dakota\_out\_parse.m\\
+Export determination: 6. \\
+Rationale: NEW: dakota\_out\_parse.m updated for Dakota 5.2 (noting 4.3 still works).\\
+\vspace{3em}
+
+\noindent \textbf{Change \#141} with diff file ISSM-14243-14244.diff: \\
+Function name: \\
+A /issm/trunk-jpl/src/m/plot/plotboxpos.m\\
+Export determination: 6. \\
+Rationale: NEW: added plotboxpos.m very useful to get axis position\\
+\vspace{3em}
+
+\noindent \textbf{Change \#142} with diff file ISSM-14244-14245.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/plot/kmlgroundoverlay.m\\
+Export determination: 6. \\
+Rationale: CHG: need to export using zbuffer to avoir matlab error\\
+\vspace{3em}
+
+\noindent \textbf{Change \#143} with diff file ISSM-14245-14246.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/plot/plot\_mesh.py\\
+Export determination: 6. \\
+Rationale: CHG: equal aspect ratio by default for mesh plot\\
+\vspace{3em}
+
+\noindent \textbf{Change \#144} with diff file ISSM-14246-14247.diff: \\
+Function name: \\
+A /issm/trunk-jpl/src/android/ISSM/res/drawable-mdpi/blue.png A /issm/trunk-jpl/src/android/ISSM/res/drawable-mdpi/seek\_bg.9.png A /issm/trunk-jpl/src/android/ISSM/res/drawable-mdpi/thumb.png A /issm/trunk-jpl/src/android/ISSM/res/drawable-mdpi/whitepatch.9.png M /issm/trunk-jpl/src/android/ISSM/res/layout/issmcore.xml A /issm/trunk-jpl/src/android/ISSM/res/layout/seekbar\_progress.xml A /issm/trunk-jpl/src/android/ISSM/res/layout/seekbar\_progress\_bg.xml M /issm/trunk-jpl/src/android/ISSM/src/com/example/issm/MyGLSurfaceView.java M /issm/trunk-jpl/src/android/ISSM/src/com/example/issm/VerticalSeekBar.java\\
+Export determination: 6. \\
+Rationale: Fix: SeekBar UI, Change:Back to 2D map\\
+\vspace{3em}
+
+\noindent \textbf{Change \#145} with diff file ISSM-14247-14248.diff: \\
+Function name: \\
+A /issm/trunk-jpl/src/android/ISSM/res/drawable-mdpi/btn\_lightblue\_glossy.9.png M /issm/trunk-jpl/src/android/ISSM/res/layout/issmcore.xml M /issm/trunk-jpl/src/android/ISSM/src/com/example/issm/VerticalSeekBar.java\\
+Export determination: 6. \\
+Rationale: Change:slider orientation, button background\\
+\vspace{3em}
+
+\noindent \textbf{Change \#146} with diff file ISSM-14248-14249.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/plot/plotmodel.py\\
+Export determination: 6. \\
+Rationale: BUG: index subplots starting with 1 instead of 0\\
+\vspace{3em}
+
+\noindent \textbf{Change \#147} with diff file ISSM-14249-14250.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/android/ISSM/src/com/example/issm/ISSM.java M /issm/trunk-jpl/src/android/ISSM/src/com/example/issm/MyGLRenderer.java M /issm/trunk-jpl/src/android/ISSM/src/com/example/issm/MyGLSurfaceView.java\\
+Export determination: 6. \\
+Rationale: add rotation and pitch zoom\\
+\vspace{3em}
+
+\noindent \textbf{Change \#148} with diff file ISSM-14250-14251.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/Container/Observations.cpp\\
+Export determination: 6. \\
+Rationale: CHG: fixed issues when hmin~=0\\
+\vspace{3em}
+
+\noindent \textbf{Change \#149} with diff file ISSM-14251-14252.diff: \\
+Function name: \\
+A /issm/trunk-jpl/src/m/os/dakotaversion.m A /issm/trunk-jpl/src/m/os/dakotaversion.py\\
+Export determination: 6. \\
+Rationale: NEW: dakotaversion for matlab and python.\\
+\vspace{3em}
+
+\noindent \textbf{Change \#150} with diff file ISSM-14252-14253.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/plot/applyoptions.py M /issm/trunk-jpl/src/m/plot/plot\_manager.py M /issm/trunk-jpl/src/m/plot/plotmodel.py\\
+Export determination: 6. \\
+Rationale: CHG: updated default tick label notation, option for number of ticks in colorbar\\
+\vspace{3em}
+
+\noindent \textbf{Change \#151} with diff file ISSM-14253-14254.diff: \\
+Function name: \\
+M /issm/trunk-jpl/m4/issm\_options.m4\\
+Export determination: 6. \\
+Rationale: NEW: Added dakota version dependence into issm\_options.m4.\\
+\vspace{3em}
+
+\noindent \textbf{Change \#152} with diff file ISSM-14254-14255.diff: \\
+Function name: \\
+M /issm/trunk-jpl/m4/issm\_options.m4\\
+Export determination: 6. \\
+Rationale: CHG: DAKOTA\_VERSION is a string, so output with quotes.\\
+\vspace{3em}
+
+\noindent \textbf{Change \#153} with diff file ISSM-14255-14256.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/os/dakotaversion.m M /issm/trunk-jpl/src/m/os/dakotaversion.py\\
+Export determination: 6. \\
+Rationale: CHG: get DAKOTA\_VERSION from config.h, rather than from externalpackage/dakota.\\
+\vspace{3em}
+
+\noindent \textbf{Change \#154} with diff file ISSM-14256-14257.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/os/dakotaversion.m M /issm/trunk-jpl/src/m/os/dakotaversion.py\\
+Export determination: 6. \\
+Rationale: CHG: minor cosmetic changes.\\
+\vspace{3em}
+
+\noindent \textbf{Change \#155} with diff file ISSM-14257-14258.diff: \\
+Function name: \\
+A /issm/trunk-jpl/src/m/plot/colormaps/demmap.m\\
+Export determination: 6. \\
+Rationale: NEW: added map for dem\\
+\vspace{3em}
+
+\noindent \textbf{Change \#156} with diff file ISSM-14258-14259.diff: \\
+Function name: \\
+M /issm/trunk-jpl/m4/issm\_options.m4\\
+Export determination: 6. \\
+Rationale: CHG: Add message for dakota version.\\
+\vspace{3em}
+
+\noindent \textbf{Change \#157} with diff file ISSM-14259-14260.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/plot/latlonoverlay.m\\
+Export determination: 6. \\
+Rationale: added space between degree symbol and label in latlon\\
+\vspace{3em}
+
+\noindent \textbf{Change \#158} with diff file ISSM-14260-14261.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/plot/checkplotoptions.m M /issm/trunk-jpl/src/m/plot/checkplotoptions.py M /issm/trunk-jpl/src/m/plot/plotmodel.py\\
+Export determination: 6. \\
+Rationale: NEW: python version of checkplotoptions, fixed nlines in subplot call\\
+\vspace{3em}
+
+\noindent \textbf{Change \#159} with diff file ISSM-14261-14262.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/exp/expwrite.m\\
+Export determination: 6. \\
+Rationale: CHG: density not required anymore\\
+\vspace{3em}
+
+\noindent \textbf{Change \#160} with diff file ISSM-14262-14263.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/exp/expwrite.m\\
+Export determination: 6. \\
+Rationale: CHG: write filename as name by default\\
+\vspace{3em}
+
+\noindent \textbf{Change \#161} with diff file ISSM-14263-14264.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/solvers/solver\_thermal\_nonlinear.cpp\\
+Export determination: 6. \\
+Rationale: CHG: lowmem not needed\\
+\vspace{3em}
+
+\noindent \textbf{Change \#162} with diff file ISSM-14264-14265.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/classes/qmu/@dakota\_method/dakota\_method.m M /issm/trunk-jpl/src/m/classes/qmu/@dakota\_method/dmeth\_params\_write.m\\
+Export determination: 6. \\
+Rationale: NEW: Added rng keyword for newer versions of Dakota.\\
+\vspace{3em}
+
+\noindent \textbf{Change \#163} with diff file ISSM-14265-14266.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/classes/qmu/@dakota\_method/dmeth\_params\_write.m\\
+Export determination: 6. \\
+Rationale: CHG: Be consistent with tabs.\\
+\vspace{3em}
+
+\noindent \textbf{Change \#164} with diff file ISSM-14266-14267.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/exp/expwrite.py\\
+Export determination: 6. \\
+Rationale: CHG: extended change to py\\
+\vspace{3em}
+
+\noindent \textbf{Change \#165} with diff file ISSM-14267-14268.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/exp/expwrite.py\\
+Export determination: 6. \\
+Rationale: CHG: Update python version with corresponding matlab changes.\\
+\vspace{3em}
+
+\noindent \textbf{Change \#166} with diff file ISSM-14268-14269.diff: \\
+Function name: \\
+A /issm/trunk-jpl/externalpackages/dakota/NIDRProblemDescDB.C.5.2.patch A /issm/trunk-jpl/externalpackages/dakota/NonDLocalReliability.C.5.2.patch A /issm/trunk-jpl/externalpackages/dakota/NonDSampling.C.5.2.patch A /issm/trunk-jpl/externalpackages/dakota/NonDUnilevelRBDO.C.5.2.patch A /issm/trunk-jpl/externalpackages/dakota/ParallelLibrary.C.5.2.patch A /issm/trunk-jpl/externalpackages/dakota/ParallelLibrary.H.5.2.patch A /issm/trunk-jpl/externalpackages/dakota/install-5.2-linux64-astrid.sh A /issm/trunk-jpl/externalpackages/dakota/pecos\_global\_defs.hpp.5.2.patch\\
+Export determination: 6. \\
+Rationale: NEW: install and patches for Dakota 5.2.\\
+\vspace{3em}
+
+\noindent \textbf{Change \#167} with diff file ISSM-14269-14270.diff: \\
+Function name: \\
+M /issm/trunk-jpl/test/NightlyRun/test234.m\\
+Export determination: 6. \\
+Rationale: NEW: Update test234 for Dakota 5.2.\\
+\vspace{3em}
+
+\noindent \textbf{Change \#168} with diff file ISSM-14270-14271.diff: \\
+Function name: \\
+M /issm/trunk-jpl/test/NightlyRun/test234.m M /issm/trunk-jpl/test/NightlyRun/test235.m M /issm/trunk-jpl/test/NightlyRun/test414.m\\
+Export determination: 6. \\
+Rationale: CHG: for Dakota tests, changed field names where appropriate.\\
+\vspace{3em}
+
+\noindent \textbf{Change \#169} with diff file ISSM-14271-14272.diff: \\
+Function name: \\
+M /issm/trunk-jpl/externalpackages/dakota/ParallelLibrary.C.5.2.patch\\
+Export determination: 6. \\
+Rationale: NEW: Added dakota version number to patch.\\
+\vspace{3em}
+
+\noindent \textbf{Change \#170} with diff file ISSM-14272-14273.diff: \\
+Function name: \\
+A /issm/trunk-jpl/externalpackages/dakota/LHSDriver.cpp.4.2.patch (from /issm/trunk-jpl/externalpackages/dakota/LHSDriver.cpp.patch:14268) D /issm/trunk-jpl/externalpackages/dakota/LHSDriver.cpp.patch A /issm/trunk-jpl/externalpackages/dakota/NIDRProblemDescDB.C.4.2.patch (from /issm/trunk-jpl/externalpackages/dakota/NIDRProblemDescDB.C.patch:14268) D /issm/trunk-jpl/externalpackages/dakota/NIDRProblemDescDB.C.patch A /issm/trunk-jpl/externalpackages/dakota/NonDLocalReliability.C.4.2.patch (from /issm/trunk-jpl/externalpackages/dakota/NonDLocalReliability.C.patch:14268) D /issm/trunk-jpl/externalpackages/dakota/NonDLocalReliability.C.patch A /issm/trunk-jpl/externalpackages/dakota/NonDSampling.C.4.2.patch (from /issm/trunk-jpl/externalpackages/dakota/NonDSampling.C.patch:14268) D /issm/trunk-jpl/externalpackages/dakota/NonDSampling.C.patch A /issm/trunk-jpl/externalpackages/dakota/NonDUnilevelRBDO.C.4.2.patch (from /issm/trunk-jpl/externalpackages/dakota/NonDUnilevelRBDO.C.patch:14268) D /issm/trunk-jpl/externalpackages/dakota/NonDUnilevelRBDO.C.patch A /issm/trunk-jpl/externalpackages/dakota/ParallelLibrary.C.4.2.patch (from /issm/trunk-jpl/externalpackages/dakota/ParallelLibrary.C.patch:14268) D /issm/trunk-jpl/externalpackages/dakota/ParallelLibrary.C.patch A /issm/trunk-jpl/externalpackages/dakota/ParallelLibrary.H.4.2.patch (from /issm/trunk-jpl/externalpackages/dakota/ParallelLibrary.H.patch:14268) D /issm/trunk-jpl/externalpackages/dakota/ParallelLibrary.H.patch A /issm/trunk-jpl/externalpackages/dakota/install-4.2-altix64-cosmos.sh (from /issm/trunk-jpl/externalpackages/dakota/install-altix64-cosmos.sh:14268) A /issm/trunk-jpl/externalpackages/dakota/install-4.2-discover.sh (from /issm/trunk-jpl/externalpackages/dakota/install-discover.sh:14268) A /issm/trunk-jpl/externalpackages/dakota/install-4.2-linux64-astrid.sh (from /issm/trunk-jpl/externalpackages/dakota/install-linux64-astrid.sh:14268) A /issm/trunk-jpl/externalpackages/dakota/install-4.2-linux64-cloud.sh (from /issm/trunk-jpl/externalpackages/dakota/install-linux64-cloud.sh:14268) A /issm/trunk-jpl/externalpackages/dakota/install-4.2-linux64-murdo.sh (from /issm/trunk-jpl/externalpackages/dakota/install-linux64-murdo.sh:14268) A /issm/trunk-jpl/externalpackages/dakota/install-4.2-macosx64.sh (from /issm/trunk-jpl/externalpackages/dakota/install-macosx64.sh:14268) A /issm/trunk-jpl/externalpackages/dakota/install-4.2-pleiades-petsc3.3.sh (from /issm/trunk-jpl/externalpackages/dakota/install-pleiades-petsc3.3.sh:14268) A /issm/trunk-jpl/externalpackages/dakota/install-4.2-pleiades.sh (from /issm/trunk-jpl/externalpackages/dakota/install-pleiades.sh:14268) D /issm/trunk-jpl/externalpackages/dakota/install-altix64-cosmos.sh D /issm/trunk-jpl/externalpackages/dakota/install-discover.sh D /issm/trunk-jpl/externalpackages/dakota/install-linux64-astrid.sh D /issm/trunk-jpl/externalpackages/dakota/install-linux64-cloud.sh D /issm/trunk-jpl/externalpackages/dakota/install-linux64-murdo.sh D /issm/trunk-jpl/externalpackages/dakota/install-macosx64.sh D /issm/trunk-jpl/externalpackages/dakota/install-pleiades-petsc3.3.sh D /issm/trunk-jpl/externalpackages/dakota/install-pleiades.sh\\
+Export determination: 6. \\
+Rationale: CHG: Added version numbers to all Dakota install and patch files.\\
+\vspace{3em}
+
+\noindent \textbf{Change \#171} with diff file ISSM-14273-14274.diff: \\
+Function name: \\
+D /issm/trunk-jpl/externalpackages/dakota/LHSDriver.cpp.4.2.patch D /issm/trunk-jpl/externalpackages/dakota/NIDRProblemDescDB.C.4.2.patch D /issm/trunk-jpl/externalpackages/dakota/NIDRProblemDescDB.C.5.2.patch D /issm/trunk-jpl/externalpackages/dakota/NonDLocalReliability.C.4.2.patch D /issm/trunk-jpl/externalpackages/dakota/NonDLocalReliability.C.5.2.patch D /issm/trunk-jpl/externalpackages/dakota/NonDSampling.C.4.2.patch D /issm/trunk-jpl/externalpackages/dakota/NonDSampling.C.5.2.patch D /issm/trunk-jpl/externalpackages/dakota/NonDUnilevelRBDO.C.4.2.patch D /issm/trunk-jpl/externalpackages/dakota/NonDUnilevelRBDO.C.5.2.patch D /issm/trunk-jpl/externalpackages/dakota/ParallelLibrary.C.4.2.patch D /issm/trunk-jpl/externalpackages/dakota/ParallelLibrary.C.5.2.patch D /issm/trunk-jpl/externalpackages/dakota/ParallelLibrary.H.4.2.patch D /issm/trunk-jpl/externalpackages/dakota/ParallelLibrary.H.5.2.patch A /issm/trunk-jpl/externalpackages/dakota/configs A /issm/trunk-jpl/externalpackages/dakota/configs/4.2 A /issm/trunk-jpl/externalpackages/dakota/configs/4.2/LHSDriver.cpp.patch (from /issm/trunk-jpl/externalpackages/dakota/LHSDriver.cpp.4.2.patch:14272) A /issm/trunk-jpl/externalpackages/dakota/configs/4.2/NIDRProblemDescDB.C.patch (from /issm/trunk-jpl/externalpackages/dakota/NIDRProblemDescDB.C.4.2.patch:14272) A /issm/trunk-jpl/externalpackages/dakota/configs/4.2/NonDLocalReliability.C.patch (from /issm/trunk-jpl/externalpackages/dakota/NonDLocalReliability.C.4.2.patch:14272) A /issm/trunk-jpl/externalpackages/dakota/configs/4.2/NonDSampling.C.patch (from /issm/trunk-jpl/externalpackages/dakota/NonDSampling.C.4.2.patch:14272) A /issm/trunk-jpl/externalpackages/dakota/configs/4.2/NonDUnilevelRBDO.C.patch (from /issm/trunk-jpl/externalpackages/dakota/NonDUnilevelRBDO.C.4.2.patch:14272) A /issm/trunk-jpl/externalpackages/dakota/configs/4.2/ParallelLibrary.C.patch (from /issm/trunk-jpl/externalpackages/dakota/ParallelLibrary.C.4.2.patch:14272) A /issm/trunk-jpl/externalpackages/dakota/configs/4.2/ParallelLibrary.H.patch (from /issm/trunk-jpl/externalpackages/dakota/ParallelLibrary.H.4.2.patch:14272) A /issm/trunk-jpl/externalpackages/dakota/configs/5.2 A /issm/trunk-jpl/externalpackages/dakota/configs/5.2/NIDRProblemDescDB.C.patch (from /issm/trunk-jpl/externalpackages/dakota/NIDRProblemDescDB.C.5.2.patch:14268) A /issm/trunk-jpl/externalpackages/dakota/configs/5.2/NonDLocalReliability.C.patch (from /issm/trunk-jpl/externalpackages/dakota/NonDLocalReliability.C.5.2.patch:14268) A /issm/trunk-jpl/externalpackages/dakota/configs/5.2/NonDSampling.C.patch (from /issm/trunk-jpl/externalpackages/dakota/NonDSampling.C.5.2.patch:14268) A /issm/trunk-jpl/externalpackages/dakota/configs/5.2/NonDUnilevelRBDO.C.patch (from /issm/trunk-jpl/externalpackages/dakota/NonDUnilevelRBDO.C.5.2.patch:14268) A /issm/trunk-jpl/externalpackages/dakota/configs/5.2/ParallelLibrary.C.patch (from /issm/trunk-jpl/externalpackages/dakota/ParallelLibrary.C.5.2.patch:14271) A /issm/trunk-jpl/externalpackages/dakota/configs/5.2/ParallelLibrary.H.patch (from /issm/trunk-jpl/externalpackages/dakota/ParallelLibrary.H.5.2.patch:14268) A /issm/trunk-jpl/externalpackages/dakota/configs/5.2/pecos\_global\_defs.hpp.patch (from /issm/trunk-jpl/externalpackages/dakota/pecos\_global\_defs.hpp.5.2.patch:14268) M /issm/trunk-jpl/externalpackages/dakota/install-4.2-altix64-cosmos.sh M /issm/trunk-jpl/externalpackages/dakota/install-4.2-discover.sh M /issm/trunk-jpl/externalpackages/dakota/install-4.2-linux64-astrid.sh M /issm/trunk-jpl/externalpackages/dakota/install-4.2-linux64-cloud.sh M /issm/trunk-jpl/externalpackages/dakota/install-4.2-linux64-murdo.sh M /issm/trunk-jpl/externalpackages/dakota/install-4.2-macosx64.sh M /issm/trunk-jpl/externalpackages/dakota/install-4.2-pleiades-petsc3.3.sh M /issm/trunk-jpl/externalpackages/dakota/install-4.2-pleiades.sh M /issm/trunk-jpl/externalpackages/dakota/install-5.2-linux64-astrid.sh D /issm/trunk-jpl/externalpackages/dakota/pecos\_global\_defs.hpp.5.2.patch\\
+Export determination: 6. \\
+Rationale: CHG: Reorganize Dakota patches into sub-directories.\\
+\vspace{3em}
+
+\noindent \textbf{Change \#172} with diff file ISSM-14274-14275.diff: \\
+Function name: \\
+M /issm/trunk-jpl/externalpackages/dakota/install-5.2-linux64-astrid.sh\\
+Export determination: 6. \\
+Rationale: CHG: Dakota 5.2 now accessible from repository.\\
+\vspace{3em}
+
+\noindent \textbf{Change \#173} with diff file ISSM-14275-14276.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/plot/applyoptions.py\\
+Export determination: 6. \\
+Rationale: BUG: colorbar has now been converted to 0 or 1 by checkplotoptions\\
+\vspace{3em}
+
+\noindent \textbf{Change \#174} with diff file ISSM-14276-14277.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/plot/applyoptions.py\\
+Export determination: 6. \\
+Rationale: NEW: clim is the python equivalent of caxis in matlab, though colorbar ylims don't follow yet\\
+\vspace{3em}
+
+\noindent \textbf{Change \#175} with diff file ISSM-14277-14278.diff: \\
+Function name: \\
+M /issm/trunk-jpl/m4/issm\_options.m4\\
+Export determination: 6. \\
+Rationale: CHG: Add Dakota version dependence for Mac and Win and fix indentation.\\
+\vspace{3em}
+
+\noindent \textbf{Change \#176} with diff file ISSM-14278-14279.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/classes/organizer.m\\
+Export determination: 6. \\
+Rationale: CHG: added savedata and loaddata classes in organizer, very handy when a step does not act on a model, but you want to save an arbitrary number of variables\\
+\vspace{3em}
+
+\noindent \textbf{Change \#177} with diff file ISSM-14279-14280.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/Makefile.am A /issm/trunk-jpl/src/c/modules/Shp2Expx A /issm/trunk-jpl/src/c/modules/Shp2Expx/Shp2Expx.cpp (from /issm/trunk-jpl/src/c/modules/Shp2Kmlx/Shp2Kmlx.cpp:14016) A /issm/trunk-jpl/src/c/modules/Shp2Expx/Shp2Expx.h (from /issm/trunk-jpl/src/c/modules/Shp2Kmlx/Shp2Kmlx.h:14016) M /issm/trunk-jpl/src/c/modules/modules.h A /issm/trunk-jpl/src/wrappers/Shp2Exp A /issm/trunk-jpl/src/wrappers/Shp2Exp/Shp2Exp.cpp (from /issm/trunk-jpl/src/wrappers/Shp2Kml/Shp2Kml.cpp:14016) A /issm/trunk-jpl/src/wrappers/Shp2Exp/Shp2Exp.h (from /issm/trunk-jpl/src/wrappers/Shp2Kml/Shp2Kml.h:14016) M /issm/trunk-jpl/src/wrappers/matlab/Makefile.am\\
+Export determination: 6. \\
+Rationale: NEW: Prototype of Shp2Exp matlab modules.\\
+\vspace{3em}
+
+\noindent \textbf{Change \#178} with diff file ISSM-14280-14281.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/classes/bamg/Mesh.cpp\\
+Export determination: 6. \\
+Rationale: NEW: NodalConnectivity is now identical as mex module\\
+\vspace{3em}
+
+\noindent \textbf{Change \#179} with diff file ISSM-14281-14282.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/modules/Shp2Expx/Shp2Expx.cpp\\
+Export determination: 6. \\
+Rationale: FIX: Working version of Shp2Exp.\\
+\vspace{3em}
+
+\noindent \textbf{Change \#180} with diff file ISSM-14282-14283.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/classes/objects/KML/KML\_LineString.cpp M /issm/trunk-jpl/src/c/classes/objects/KML/KML\_LinearRing.cpp M /issm/trunk-jpl/src/c/classes/objects/KML/KML\_Point.cpp\\
+Export determination: 6. \\
+Rationale: NEW: Allow for 'no translation' option in WriteExp methods.\\
+\vspace{3em}
+
+\noindent \textbf{Change \#181} with diff file ISSM-14283-14284.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/modules/Shp2Expx/Shp2Expx.cpp M /issm/trunk-jpl/src/c/modules/Shp2Expx/Shp2Expx.h M /issm/trunk-jpl/src/wrappers/Shp2Exp/Shp2Exp.cpp M /issm/trunk-jpl/src/wrappers/Shp2Exp/Shp2Exp.h\\
+Export determination: 6. \\
+Rationale: CHG: Change Shp2Exp wrapper to remove transformation specs.\\
+\vspace{3em}
+
+\noindent \textbf{Change \#182} with diff file ISSM-14284-14285.diff: \\
+Function name: \\
+A /issm/trunk-jpl/CMakeLists.txt A /issm/trunk-jpl/src/CMakeLists.txt A /issm/trunk-jpl/src/c/CMakeLists.txt A /issm/trunk-jpl/src/c/Container/CMakeLists.txt A /issm/trunk-jpl/src/c/EnumDefinitions/CMakeLists.txt A /issm/trunk-jpl/src/c/classes/CMakeLists.txt A /issm/trunk-jpl/src/c/classes/bamg/CMakeLists.txt A /issm/trunk-jpl/src/c/classes/dakota/CMakeLists.txt A /issm/trunk-jpl/src/c/classes/gauss/CMakeLists.txt A /issm/trunk-jpl/src/c/classes/kriging/CMakeLists.txt A /issm/trunk-jpl/src/c/classes/matrix/CMakeLists.txt A /issm/trunk-jpl/src/c/classes/objects/CMakeLists.txt A /issm/trunk-jpl/src/c/classes/objects/Constraints/CMakeLists.txt A /issm/trunk-jpl/src/c/classes/objects/ElementResults/CMakeLists.txt A /issm/trunk-jpl/src/c/classes/objects/Elements/CMakeLists.txt A /issm/trunk-jpl/src/c/classes/objects/ExternalResults/CMakeLists.txt A /issm/trunk-jpl/src/c/classes/objects/Inputs/CMakeLists.txt A /issm/trunk-jpl/src/c/classes/objects/KML/CMakeLists.txt A /issm/trunk-jpl/src/c/classes/objects/Loads/CMakeLists.txt A /issm/trunk-jpl/src/c/classes/objects/Materials/CMakeLists.txt A /issm/trunk-jpl/src/c/classes/objects/Options/CMakeLists.txt A /issm/trunk-jpl/src/c/classes/objects/Params/CMakeLists.txt A /issm/trunk-jpl/src/c/include/CMakeLists.txt A /issm/trunk-jpl/src/c/io/CMakeLists.txt A /issm/trunk-jpl/src/c/io/Disk/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/AverageFilterx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/AverageOntoPartitionx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/BamgConvertMeshx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/BamgTriangulatex/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/Bamgx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/Chacox/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/ComputeBasalStressx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/ComputeStrainRatex/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/ConfigureObjectsx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/ConstraintsStatex/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/ContourToMeshx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/ContourToNodesx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/ControlInputGetGradientx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/ControlInputScaleGradientx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/ControlInputSetGradientx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/CreateNodalConstraintsx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/Delta18oParameterizationx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/DragCoefficientAbsGradientx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/ElementConnectivityx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/EnumToStringx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/Exp2Kmlx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/GetSolutionFromInputsx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/GetVectorFromControlInputsx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/GetVectorFromInputsx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/Gradjx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/GroundinglineMigrationx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/HoleFillerx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/InputArtificialNoisex/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/InputControlUpdatex/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/InputConvergencex/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/InputDuplicatex/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/InputScalex/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/InputToResultx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/InputUpdateFromConstantx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/InputUpdateFromDakotax/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/InputUpdateFromMatrixDakotax/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/InputUpdateFromSolutionx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/InputUpdateFromVectorDakotax/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/InputUpdateFromVectorx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/InterpFromGridToMeshx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/InterpFromMesh2dx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/InterpFromMeshToGridx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/InterpFromMeshToMesh2dx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/InterpFromMeshToMesh3dx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/IoModelToConstraintsx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/KMLFileReadx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/KMLMeshWritex/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/KMLOverlayx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/Kml2Expx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/Krigingx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/Ll2xyx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/Mergesolutionfromftogx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/MeshPartitionx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/MeshProfileIntersectionx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/ModelProcessorx/Autodiff/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/ModelProcessorx/Balancethickness/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/ModelProcessorx/BedSlope/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/ModelProcessorx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/ModelProcessorx/Control/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/ModelProcessorx/Dakota/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHutter/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticVert/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/ModelProcessorx/Enthalpy/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/ModelProcessorx/Hydrology/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/ModelProcessorx/Melting/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/ModelProcessorx/Prognostic/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/ModelProcessorx/SurfaceSlope/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/ModelProcessorx/Thermal/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/ModelProcessorx/Transient/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/NodalValuex/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/NodeConnectivityx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/NodesDofx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/Orthx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/OutputResultsx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/OutputRiftsx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/ParsePetscOptionsx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/PointCloudFindNeighborsx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/PositiveDegreeDayx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/PropagateFlagsFromConnectivityx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/Reduceloadx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/Reducevectorgtofx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/Reducevectorgtosx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/ResetConstraintsx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/ResetCoordinateSystemx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/RheologyBbarAbsGradientx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/Scotchx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/SetControlInputsFromVectorx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/Shp2Expx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/Shp2Kmlx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/SmbGradientsx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/Solverx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/SpcNodesx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/StringToEnumx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/SurfaceAbsVelMisfitx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/SurfaceAreax/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/SurfaceAverageVelMisfitx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/SurfaceLogVelMisfitx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/SurfaceLogVxVyMisfitx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/SurfaceRelVelMisfitx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/ThicknessAbsMisfitx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/ThicknessAcrossGradientx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/ThicknessAlongGradientx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/TriMeshProcessRiftsx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/TriMeshx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/TriaSearchx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/UpdateDynamicConstraintsx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/VecMergex/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/VerticesDofx/CMakeLists.txt A /issm/trunk-jpl/src/c/modules/Xy2llx/CMakeLists.txt A /issm/trunk-jpl/src/c/shared/Alloc/CMakeLists.txt A /issm/trunk-jpl/src/c/shared/Bamg/CMakeLists.txt A /issm/trunk-jpl/src/c/shared/CMakeLists.txt A /issm/trunk-jpl/src/c/shared/Elements/CMakeLists.txt A /issm/trunk-jpl/src/c/shared/Exceptions/CMakeLists.txt A /issm/trunk-jpl/src/c/shared/Exp/CMakeLists.txt A /issm/trunk-jpl/src/c/shared/Matrix/CMakeLists.txt A /issm/trunk-jpl/src/c/shared/MemOps/CMakeLists.txt A /issm/trunk-jpl/src/c/shared/Numerics/CMakeLists.txt A /issm/trunk-jpl/src/c/shared/Sorting/CMakeLists.txt A /issm/trunk-jpl/src/c/shared/String/CMakeLists.txt A /issm/trunk-jpl/src/c/shared/Threads/CMakeLists.txt A /issm/trunk-jpl/src/c/shared/TriMesh/CMakeLists.txt A /issm/trunk-jpl/src/c/solutions/CMakeLists.txt A /issm/trunk-jpl/src/c/solvers/CMakeLists.txt A /issm/trunk-jpl/src/c/toolkits/CMakeLists.txt A /issm/trunk-jpl/src/c/toolkits/issm/CMakeLists.txt A /issm/trunk-jpl/src/c/toolkits/metis/CMakeLists.txt A /issm/trunk-jpl/src/c/toolkits/metis/patches/CMakeLists.txt A /issm/trunk-jpl/src/c/toolkits/mpi/CMakeLists.txt A /issm/trunk-jpl/src/c/toolkits/mpi/patches/CMakeLists.txt A /issm/trunk-jpl/src/c/toolkits/petsc/CMakeLists.txt A /issm/trunk-jpl/src/c/toolkits/petsc/objects/CMakeLists.txt A /issm/trunk-jpl/src/c/toolkits/petsc/patches/CMakeLists.txt A /issm/trunk-jpl/src/c/toolkits/plapack/CMakeLists.txt A /issm/trunk-jpl/src/c/toolkits/plapack/patches/CMakeLists.txt A /issm/trunk-jpl/src/c/toolkits/scalapack/CMakeLists.txt A /issm/trunk-jpl/src/c/toolkits/triangle/CMakeLists.txt\\
+Export determination: 6. \\
+Rationale: CHG: Introduction of CMake List files for source tree.\\
+\vspace{3em}
+
+\noindent \textbf{Change \#183} with diff file ISSM-14285-14286.diff: \\
+Function name: \\
+M /issm/trunk-jpl/externalpackages/adolc/install-dev.sh M /issm/trunk-jpl/externalpackages/adolc/install-update-dev.sh\\
+Export determination: 6. \\
+Rationale: CHG with the latest changes it should work with the current merged HEAD again\\
+\vspace{3em}
+
+\noindent \textbf{Change \#184} with diff file ISSM-14286-14287.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/plot/plot\_BC.m\\
+Export determination: 6. \\
+Rationale: CHG: plot BC without dirichlet on\\
+\vspace{3em}
+
+\noindent \textbf{Change \#185} with diff file ISSM-14287-14288.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/classes/IssmComm.cpp\\
+Export determination: 6. \\
+Rationale: CHG: openmpi incompatible, fixed bug\\
+\vspace{3em}
+
+\noindent \textbf{Change \#186} with diff file ISSM-14288-14289.diff: \\
+Function name: \\
+M /issm/trunk-jpl/externalpackages/gsl/install-android.sh A /issm/trunk-jpl/externalpackages/howatmask A /issm/trunk-jpl/externalpackages/howatmask/enviread.m A /issm/trunk-jpl/externalpackages/howatmask/subsetGimpIceMask.m A /issm/trunk-jpl/externalpackages/metis/install-4.0-hoffman2.sh A /issm/trunk-jpl/externalpackages/petsc/install-3.2-hoffman2.sh\\
+Export determination: 6. \\
+Rationale: NEW: config files for ucla hoffman2 cluster + howats scripts\\
+\vspace{3em}
+
+\noindent \textbf{Change \#187} with diff file ISSM-14289-14290.diff: \\
+Function name: \\
+A /issm/trunk-jpl/configs/config-hoffman2.sh\\
+Export determination: 6. \\
+Rationale: NEW: ucla hoffman2 cluster config file\\
+\vspace{3em}
+
+\noindent \textbf{Change \#188} with diff file ISSM-14290-14291.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/classes/IssmComm.cpp M /issm/trunk-jpl/src/c/classes/IssmComm.h\\
+Export determination: 6. \\
+Rationale: CHG: added SetComm(void) for matlab and python module. There is now a flag 'parallel' in IssmComm so that we always no wether MPI should be invoked\\
+\vspace{3em}
+
+\noindent \textbf{Change \#189} with diff file ISSM-14291-14292.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/wrappers/matlab/include/wrapper\_macros.h M /issm/trunk-jpl/src/wrappers/python/include/wrapper\_macros.h\\
+Export determination: 6. \\
+Rationale: CHG: added SetComm(void) for matlab and python module. There is now a flag 'parallel' in IssmComm so that we always no wether MPI should be invoked\\
+\vspace{3em}
+
+\noindent \textbf{Change \#190} with diff file ISSM-14292-14293.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/classes/IssmComm.cpp M /issm/trunk-jpl/src/c/include/globals.h\\
+Export determination: 6. \\
+Rationale: BUG: fixing new implementation of IssmComm\\
+\vspace{3em}
+
+\noindent \textbf{Change \#191} with diff file ISSM-14293-14294.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/Makefile.am M /issm/trunk-jpl/src/c/shared/Elements/PrintArrays.cpp M /issm/trunk-jpl/src/c/shared/Elements/elements.h D /issm/trunk-jpl/src/c/shared/Exp/DomainOutlineWrite.cpp A /issm/trunk-jpl/src/c/shared/Exp/ExpWrite.cpp (from /issm/trunk-jpl/src/c/shared/Exp/DomainOutlineWrite.cpp:14292) M /issm/trunk-jpl/src/c/shared/Exp/exp.h\\
+Export determination: 6. \\
+Rationale: NEW: renamed DomainOutlineWrite -> ExpWrite and added printarray for booleans\\
+\vspace{3em}
+
+\noindent \textbf{Change \#192} with diff file ISSM-14294-14295.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/wrappers/Exp2Kml/Exp2Kml.h A /issm/trunk-jpl/src/wrappers/ExpSimplify A /issm/trunk-jpl/src/wrappers/ExpSimplify/ExpSimplify.cpp A /issm/trunk-jpl/src/wrappers/ExpSimplify/ExpSimplify.h M /issm/trunk-jpl/src/wrappers/matlab/Makefile.am\\
+Export determination: 6. \\
+Rationale: New: Added ExpSimplify => Recursive Douglas-Peucker Polygon Simplification\\
+\vspace{3em}
+
+\noindent \textbf{Change \#193} with diff file ISSM-14295-14296.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/exp/expwrite.m\\
+Export determination: 6. \\
+Rationale: CHG: make sure x and y are columns\\
+\vspace{3em}
+
+\noindent \textbf{Change \#194} with diff file ISSM-14296-14297.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/mech/mechanicalproperties.m A /issm/trunk-jpl/src/m/mech/strainrateuncert.m\\
+Export determination: 6. \\
+Rationale: NEW: function to calculate error in strain rate components from velocity error\\
+\vspace{3em}
+
+\noindent \textbf{Change \#195} with diff file ISSM-14297-14298.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/exp/flowlines.m\\
+Export determination: 6. \\
+Rationale: use tsearch instead of TriaSearch\\
+\vspace{3em}
+
+\noindent \textbf{Change \#196} with diff file ISSM-14298-14299.diff: \\
+Function name: \\
+D /issm/trunk-jpl/src/m/kml/exp2kml.m\\
+Export determination: 6. \\
+Rationale: DEL: remove exp2kml.m, use mex instead\\
+\vspace{3em}
+
+\noindent \textbf{Change \#197} with diff file ISSM-14299-14300.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/plot/colormaps/demmap.m M /issm/trunk-jpl/src/m/plot/colormaps/landcolor.m\\
+Export determination: 6. \\
+Rationale: CHG: updated landcolor (need 1.3 exponent)\\
+\vspace{3em}
+
+\noindent \textbf{Change \#198} with diff file ISSM-14300-14301.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/plot/applyoptions.m M /issm/trunk-jpl/src/m/plot/plotmodel.m\\
+Export determination: 6. \\
+Rationale: CHG: resize figure before the actual plot so that the axes are properly set up (resizing afterwards never works, so we used to have to call the plot command twice\\
+\vspace{3em}
+
+\noindent \textbf{Change \#199} with diff file ISSM-14301-14302.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/classes/pairoptions.m\\
+Export determination: 6. \\
+Rationale: CHG: if exist is called, set used as true\\
+\vspace{3em}
+
+\noindent \textbf{Change \#200} with diff file ISSM-14302-14303.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/modules/NodeConnectivityx/NodeConnectivityx.cpp\\
+Export determination: 6. \\
+Rationale: CHG: increase maximum column size\\
+\vspace{3em}
+
+\noindent \textbf{Change \#201} with diff file ISSM-14303-14304.diff: \\
+Function name: \\
+A /issm/trunk-jpl/src/m/io/getShapeTypeInfo.m\\
+Export determination: 6. \\
+Rationale: NEW: getShapeTypeInfo routine\\
+\vspace{3em}
+
+\noindent \textbf{Change \#202} with diff file ISSM-14304-14305.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/wrappers/InternalFront/InternalFront.cpp M /issm/trunk-jpl/src/wrappers/InternalFront/InternalFront.h\\
+Export determination: 6. \\
+Rationale: CHG: updated to new wrapper interface\\
+\vspace{3em}
+
+\noindent \textbf{Change \#203} with diff file ISSM-14305-14306.diff: \\
+Function name: \\
+M /issm/trunk-jpl/startup.m\\
+Export determination: 6. \\
+Rationale: CHG: add Howatt's code\\
+\vspace{3em}
+
+\noindent \textbf{Change \#204} with diff file ISSM-14306-14307.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/classes/mask.m\\
+Export determination: 6. \\
+Rationale: CHG: updated mask to include mask on rock\\
+\vspace{3em}
+
+\noindent \textbf{Change \#205} with diff file ISSM-14307-14308.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/classes/model/model.m\\
+Export determination: 6. \\
+Rationale: CHG: updated model to include new memory capability to figure out memory a model will take once saved\\
+\vspace{3em}
+
+\noindent \textbf{Change \#206} with diff file ISSM-14308-14309.diff: \\
+Function name: \\
+M /issm/trunk-jpl/configure.ac\\
+Export determination: 6. \\
+Rationale: CHG: updated version number before sync\\
+\vspace{3em}
+
+\noindent \textbf{Change \#207} with diff file ISSM-14309-14310.diff: \\
+Function name: \\
+M /issm/trunk-jpl\\
+Export determination: 6. \\
+Rationale: merged trunk and trunk-jpl\\
+\vspace{3em}
+
Index: /issm/oecreview/Archive/14064-14311/r1.tex
===================================================================
--- /issm/oecreview/Archive/14064-14311/r1.tex	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/r1.tex	(revision 14312)
@@ -0,0 +1,1 @@
+14064
Index: /issm/oecreview/Archive/14064-14311/r2.tex
===================================================================
--- /issm/oecreview/Archive/14064-14311/r2.tex	(revision 14312)
+++ /issm/oecreview/Archive/14064-14311/r2.tex	(revision 14312)
@@ -0,0 +1,1 @@
+14311
