Index: /trunk/SophyaLib/SysSpec/Makefile
===================================================================
--- /trunk/SophyaLib/SysSpec/Makefile	(revision 1781)
+++ /trunk/SophyaLib/SysSpec/Makefile	(revision 1781)
@@ -0,0 +1,18 @@
+include ../Mgr/Makefile.h
+ 
+all: $(LIB)libSysSpec.a
+
+clean: 
+	rm -f $(OBJ)sysspecdummy.o $(OBJ)seed48.o $(OBJ)srand48.o $(OBJ)drand48-iter.o 
+	rm -f $(OBJ)sysspecdummy.o $(OBJ)rand48.o $(OBJ)seed48_r.o $(OBJ)srand48_r.o 
+	rm -f $(OBJ)complex_missing.o
+
+ifeq ($(MACHEROS),Darwin)
+#  SSOBJ :=  $(OBJ)sysspecdummy.o $(OBJ)seed48.o $(OBJ)srand48.o $(OBJ)drand48-iter.o
+  SSOBJ :=  $(OBJ)sysspecdummy.o $(OBJ)rand48.o $(OBJ)seed48_r.o $(OBJ)srand48_r.o $(OBJ)complex_missing.o
+else
+  SSOBJ :=  $(OBJ)sysspecdummy.o
+endif
+
+$(LIB)libSysSpec.a: $(SSOBJ)
+	$(ARCXX) $(ARCXXFLAGS) $@ $?
Index: /trunk/SophyaLib/SysSpec/SysSpec.o.list
===================================================================
--- /trunk/SophyaLib/SysSpec/SysSpec.o.list	(revision 1781)
+++ /trunk/SophyaLib/SysSpec/SysSpec.o.list	(revision 1781)
@@ -0,0 +1,3 @@
+rand48.o
+seed48_r.o
+srand48_r.o
Index: /trunk/SophyaLib/SysSpec/complex_missing.cc
===================================================================
--- /trunk/SophyaLib/SysSpec/complex_missing.cc	(revision 1781)
+++ /trunk/SophyaLib/SysSpec/complex_missing.cc	(revision 1781)
@@ -0,0 +1,6 @@
+#include <complex>
+#include <iostream>
+#include "complext.cc"
+template ostream & operator << <double>(ostream &, complex<double> const &);
+template ostream & operator << <float>(ostream &, complex<float> const &);
+
Index: /trunk/SophyaLib/SysSpec/rand48.c
===================================================================
--- /trunk/SophyaLib/SysSpec/rand48.c	(revision 1781)
+++ /trunk/SophyaLib/SysSpec/rand48.c	(revision 1781)
@@ -0,0 +1,131 @@
+/* Copyright (C) 1995, 1996 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include "rand48.h"
+
+/* Global state for non-reentrant functions.  */
+static struct drand48_data __libc_drand48_data;
+
+
+int
+__drand48_iterate (xsubi, buffer)
+     unsigned short int xsubi[3];
+     struct drand48_data *buffer;
+{
+  u_int64_t X, a, result;
+
+  /* Initialize buffer, if not yet done.  */
+  if (!buffer->init)
+    {
+#if (USHRT_MAX == 0xffffU)
+      buffer->a[2] = 0x5;
+      buffer->a[1] = 0xdeec;
+      buffer->a[0] = 0xe66d;
+#else
+      buffer->a[2] = 0x5deecUL;
+      buffer->a[1] = 0xe66d0000UL;
+      buffer->a[0] = 0;
+#endif
+      buffer->c = 0xb;
+      buffer->init = 1;
+    }
+
+  /* Do the real work.  We choose a data type which contains at least
+     48 bits.  Because we compute the modulus it does not care how
+     many bits really are computed.  */
+
+  if (sizeof (unsigned short int) == 2)
+    {
+      X = (u_int64_t)xsubi[2] << 32 | (u_int64_t)xsubi[1] << 16 | xsubi[0];
+      a = ((u_int64_t)buffer->a[2] << 32 | (u_int64_t)buffer->a[1] << 16
+	   | buffer->a[0]);
+
+      result = X * a + buffer->c;
+
+      xsubi[0] = result & 0xffff;
+      xsubi[1] = (result >> 16) & 0xffff;
+      xsubi[2] = (result >> 32) & 0xffff;
+    }
+  else
+    {
+      X = (u_int64_t)xsubi[2] << 16 | xsubi[1] >> 16;
+      a = (u_int64_t)buffer->a[2] << 16 | buffer->a[1] >> 16;
+
+      result = X * a + buffer->c;
+
+      xsubi[0] = result >> 16 & 0xffffffffl;
+      xsubi[1] = result << 16 & 0xffff0000l;
+    }
+
+  return 0;
+}
+/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+
+unsigned short int *
+seed48 (seed16v)
+     unsigned short int seed16v[3];
+{
+  (void) seed48_r (seed16v, &__libc_drand48_data);
+
+  return __libc_drand48_data.old_X;
+}
+/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+
+void
+srand48 (seedval)
+     long seedval;
+{
+  (void) srand48_r (seedval, &__libc_drand48_data);
+}
Index: /trunk/SophyaLib/SysSpec/rand48.h
===================================================================
--- /trunk/SophyaLib/SysSpec/rand48.h	(revision 1781)
+++ /trunk/SophyaLib/SysSpec/rand48.h	(revision 1781)
@@ -0,0 +1,14 @@
+#ifndef RAND48_H
+#define RAND48_H
+
+struct drand48_data {
+  unsigned short  X[3];           /* 48 bit integer value */
+  unsigned short  a[3];           /* mutiplier value */
+  unsigned short  c;              /* addend value */
+  unsigned short  old_X[3];       /* previous value of Xi */
+  int             init;           /* initialize ? */
+};
+
+typedef unsigned long long u_int64_t;
+
+#endif
Index: /trunk/SophyaLib/SysSpec/seed48_r.c
===================================================================
--- /trunk/SophyaLib/SysSpec/seed48_r.c	(revision 1781)
+++ /trunk/SophyaLib/SysSpec/seed48_r.c	(revision 1781)
@@ -0,0 +1,55 @@
+/* Copyright (C) 1995, 1997 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdlib.h>
+#include <string.h>
+#include <limits.h>
+#include "rand48.h"
+
+int
+seed48_r (seed16v, buffer)
+     unsigned short int seed16v[3];
+     struct drand48_data *buffer;
+{
+  /* Save old value at a private place to be used as return value.  */
+  memcpy (buffer->old_X, buffer->X, sizeof (buffer->X));
+
+  /* Install new state.  */
+#if USHRT_MAX == 0xffffU
+  buffer->X[2] = seed16v[2];
+  buffer->X[1] = seed16v[1];
+  buffer->X[0] = seed16v[0];
+
+  buffer->a[2] = 0x5;
+  buffer->a[1] = 0xdeec;
+  buffer->a[0] = 0xe66d;
+#else
+  buffer->X[2] = (seed16v[2] << 16) | seed16v[1];
+  buffer->X[1] = seed16v[0] << 16;
+  buffer->X[0] = 0;
+
+  buffer->a[2] = 0x5deecUL;
+  buffer->a[1] = 0xe66d0000UL;
+  buffer->a[0] = 0;
+#endif
+  buffer->c = 0xb;
+  buffer->init = 1;
+
+  return 0;
+}
Index: /trunk/SophyaLib/SysSpec/srand48_r.c
===================================================================
--- /trunk/SophyaLib/SysSpec/srand48_r.c	(revision 1781)
+++ /trunk/SophyaLib/SysSpec/srand48_r.c	(revision 1781)
@@ -0,0 +1,53 @@
+/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <limits.h>
+#include "rand48.h"
+
+int
+srand48_r (seedval, buffer)
+     long int seedval;
+     struct drand48_data *buffer;
+{
+  /* The standards say we only have 32 bits.  */
+  if (sizeof (long int) > 4)
+    seedval &= 0xffffffffl;
+
+#if USHRT_MAX == 0xffffU
+  buffer->X[2] = seedval >> 16;
+  buffer->X[1] = seedval & 0xffffl;
+  buffer->X[0] = 0x330e;
+
+  buffer->a[2] = 0x5;
+  buffer->a[1] = 0xdeec;
+  buffer->a[0] = 0xe66d;
+#else
+  buffer->X[2] = seedval;
+  buffer->X[1] = 0x330e0000UL;
+  buffer->X[0] = 0;
+
+  buffer->a[2] = 0x5deecUL;
+  buffer->a[1] = 0xe66d0000UL;
+  buffer->a[0] = 0;
+#endif
+  buffer->c = 0xb;
+  buffer->init = 1;
+
+  return 0;
+}
Index: /trunk/SophyaLib/SysSpec/sysspecdummy.c
===================================================================
--- /trunk/SophyaLib/SysSpec/sysspecdummy.c	(revision 1781)
+++ /trunk/SophyaLib/SysSpec/sysspecdummy.c	(revision 1781)
@@ -0,0 +1,2 @@
+void sysspecdummy() {}
+
