Index: trunk/SophyaLib/NTools/Makefile
===================================================================
--- trunk/SophyaLib/NTools/Makefile	(revision 3608)
+++ trunk/SophyaLib/NTools/Makefile	(revision 3615)
@@ -33,4 +33,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
@@ -67,4 +68,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)fioarr.h \
@@ -114,4 +116,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -120,11 +123,13 @@
  
 $(SOPHYAOBJP)dynccd.o: dynccd.cc $(SOPHYAINCP)sopnamsp.h \
-  $(SOPHYAINCP)machdefs.h fmath.h perandom.h \
-  $(SOPHYAINCP)tvector.h \
-  $(SOPHYAINCP)tmatrix.h \
-  $(SOPHYAINCP)machdefs.h \
-  $(SOPHYAINCP)tarray.h \
-  $(SOPHYAINCP)basarr.h \
-  $(SOPHYAINCP)anydataobj.h \
+  $(SOPHYAINCP)machdefs.h fmath.h \
+  $(SOPHYAINCP)srandgen.h \
+  $(SOPHYAINCP)machdefs.h \
+  $(SOPHYAINCP)randinterf.h \
+  $(SOPHYAINCP)anydataobj.h perandom.h \
+  $(SOPHYAINCP)tvector.h \
+  $(SOPHYAINCP)tmatrix.h \
+  $(SOPHYAINCP)tarray.h \
+  $(SOPHYAINCP)basarr.h \
   $(SOPHYAINCP)mutyv.h \
   $(SOPHYAINCP)timestamp.h \
@@ -146,6 +151,5 @@
   $(SOPHYAINCP)perrors.h \
   $(SOPHYAINCP)fmath.h \
-  $(SOPHYAINCP)tvector.h \
-  $(SOPHYAINCP)srandgen.h classfunc.h cimage.h \
+  $(SOPHYAINCP)tvector.h classfunc.h cimage.h \
   $(SOPHYAINCP)tmatrix.h \
   $(SOPHYAINCP)fioarr.h dynccd.h \
@@ -175,4 +179,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h generaldata.h \
@@ -207,4 +212,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h generaldata.h \
@@ -239,4 +245,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector.h \
@@ -266,4 +273,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector.h \
@@ -292,4 +300,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector.h \
@@ -319,4 +328,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -346,4 +356,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h generaldata.h \
@@ -378,4 +389,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h generaldata.h \
@@ -418,4 +430,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h generaldata.h \
@@ -458,4 +471,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -488,4 +502,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h cimage.h \
   $(SOPHYAINCP)fioarr.h \
@@ -512,10 +527,12 @@
   $(SOPHYAINCP)machdefs.h \
   $(SOPHYAINCP)pexceptions.h \
-  $(SOPHYAINCP)machdefs.h perandom.h \
-  $(SOPHYAINCP)tvector.h \
-  $(SOPHYAINCP)tmatrix.h \
-  $(SOPHYAINCP)tarray.h \
-  $(SOPHYAINCP)basarr.h \
-  $(SOPHYAINCP)anydataobj.h \
+  $(SOPHYAINCP)machdefs.h \
+  $(SOPHYAINCP)srandgen.h \
+  $(SOPHYAINCP)randinterf.h \
+  $(SOPHYAINCP)anydataobj.h perandom.h \
+  $(SOPHYAINCP)tvector.h \
+  $(SOPHYAINCP)tmatrix.h \
+  $(SOPHYAINCP)tarray.h \
+  $(SOPHYAINCP)basarr.h \
   $(SOPHYAINCP)mutyv.h \
   $(SOPHYAINCP)timestamp.h \
@@ -537,6 +554,5 @@
   $(SOPHYAINCP)perrors.h \
   $(SOPHYAINCP)fmath.h \
-  $(SOPHYAINCP)tvector.h \
-  $(SOPHYAINCP)srandgen.h classfunc.h pemath.h
+  $(SOPHYAINCP)tvector.h classfunc.h
 	$(CXXCOMPILE) $(CXXTEMPFLG) -o $@  perandom.cc
  
@@ -564,4 +580,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -594,4 +611,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -629,4 +647,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h generalfit.h \
@@ -680,4 +699,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
Index: trunk/SophyaLib/NTools/dynccd.cc
===================================================================
--- trunk/SophyaLib/NTools/dynccd.cc	(revision 3608)
+++ trunk/SophyaLib/NTools/dynccd.cc	(revision 3615)
@@ -5,4 +5,5 @@
 
 #include "fmath.h"
+#include "srandgen.h"
 #include "perandom.h"
 
Index: trunk/SophyaLib/NTools/perandom.cc
===================================================================
--- trunk/SophyaLib/NTools/perandom.cc	(revision 3608)
+++ trunk/SophyaLib/NTools/perandom.cc	(revision 3615)
@@ -1,8 +1,8 @@
 #include "sopnamsp.h"
 #include "machdefs.h"
+#include <iostream>
 #include "pexceptions.h"
+#include "srandgen.h"
 #include "perandom.h"
-#include "pemath.h"
-#include <iostream>
 
 
@@ -290,53 +290,2 @@
 }
 
-
-
-/////////////////////////////////////////////////////////////////
-/*
-**** Remarques sur complex< r_8 > ComplexGaussRan(double sig) ****
-
---- variables gaussiennes x,y independantes
-x gaussien: pdf f(x) = 1/(sqrt(2Pi) Sx) exp(-(x-Mx)^2/(2 Sx^2))
-y gaussien: pdf f(y) = 1/(sqrt(2Pi) Sy) exp(-(y-My)^2/(2 Sy^2))
-x,y independants --> pdf f(x,y) = f(x) f(y)
-On a:
-  <x>   = Integrate[x*f(x)]   = Mx
-  <x^2> = Integrate[x^2*f(x)] = Mx^2 + Sx^2
-
---- On cherche la pdf g(r,t) du module et de la phase
-  x = r cos(t) ,  y = r sin(t)
-  r=sqrt(x^2+y^2 , t=atan2(y,x)
-  (r,t) --> (x,y): le Jacobien = r
-
-  g(r,t) = r f(x,y) = r f(x) f(y)
-         = r/(2Pi Sx Sy) exp(-(x-Mx)^2/(2 Sx^2)) exp(-(y-My)^2/(2 Sy^2))
-
-- Le cas general est complique
-  (cf D.Pelat cours DEA "bruits et signaux" section 4.5)
-
-- Cas ou "Mx = My = 0" et "Sx = Sy = S"
-  c'est la pdf du module et de la phase d'un nombre complexe
-     dont les parties reelles et imaginaires sont independantes
-     et sont distribuees selon des gaussiennes de variance S^2
-  g(r,t) = r/(2Pi S^2) exp(-r^2/(2 S^2))
-  La distribution de "r" est donc:
-    g(r) = Integrate[g(r,t),{t,0,2Pi}]
-         = r/S^2 exp(-r^2/(2 S^2))
-  La distribution de "t" est donc:
-    g(t) = Integrate[g(r,t),{r,0,Infinity}]
-         = 1 / 2Pi  (distribution uniforme sur [0,2Pi[)
-  Les variables aleatoires r,t sont independantes:
-    g(r,t) = g(r) g(t)
-On a:
-  <r>   = Integrate[r*g(r)]   = sqrt(PI/2)*S
-  <r^2> = Integrate[r^2*g(r)] = 2*S^2
-  <r^3> = Integrate[r^3*g(r)] = 3*sqrt(PI/2)*S^3
-  <r^4> = Integrate[r^4*g(r)] = 8*S^4
-
-- Attention:
-La variable complexe "c = x+iy = r*exp(i*t)" ainsi definie verifie:
-              <|c|^2> = <c c*> = <x^2+y^2> = <r^2> = 2 S^2
-Si on veut generer une variable complexe gaussienne telle que
-     <c c*> = s^2 alors il faut prendre S = s/sqrt(2) comme argument
-
-*/
Index: trunk/SophyaLib/NTools/perandom.h
===================================================================
--- trunk/SophyaLib/NTools/perandom.h	(revision 3608)
+++ trunk/SophyaLib/NTools/perandom.h	(revision 3615)
@@ -12,7 +12,5 @@
 #include "tvector.h"
 #include "histos.h"
-#include "srandgen.h"
 #include "classfunc.h"
-#include <complex>
 
 namespace SOPHYA {  
@@ -54,21 +52,4 @@
 };
 
-
-/*!
-  \ingroup NTools
-  \brief Returns a random complex number such that real and imaginary parts are gaussians with variance sig^2
-*/
-inline complex< r_8 > ComplexGaussRan(void)
-  {return complex< r_8 >(NorRand(),NorRand());}
-inline complex< r_8 > ComplexGaussRan(double sig)
-  {return complex< r_8 >(GauRnd(0.,sig),GauRnd(0.,sig));}
-
-/*!
-  \ingroup NTools
-  \brief Returns the module of a random complex number generated by ComplexGaussRan
-*/
-inline double ModComplexGaussRan(double sig=1.)
-  {double r=-log(1.-drand01()); return sig*sqrt(2.*r);}
-
 } // namespace SOPHYA
 
Index: trunk/SophyaLib/NTools/smakefile
===================================================================
--- trunk/SophyaLib/NTools/smakefile	(revision 3608)
+++ trunk/SophyaLib/NTools/smakefile	(revision 3615)
@@ -33,4 +33,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
@@ -67,4 +68,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)fioarr.h \
@@ -114,4 +116,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -120,11 +123,13 @@
  
 $(SOPHYAOBJP)dynccd.o: dynccd.cc $(SOPHYAINCP)sopnamsp.h \
-  $(SOPHYAINCP)machdefs.h fmath.h perandom.h \
-  $(SOPHYAINCP)tvector.h \
-  $(SOPHYAINCP)tmatrix.h \
-  $(SOPHYAINCP)machdefs.h \
-  $(SOPHYAINCP)tarray.h \
-  $(SOPHYAINCP)basarr.h \
-  $(SOPHYAINCP)anydataobj.h \
+  $(SOPHYAINCP)machdefs.h fmath.h \
+  $(SOPHYAINCP)srandgen.h \
+  $(SOPHYAINCP)machdefs.h \
+  $(SOPHYAINCP)randinterf.h \
+  $(SOPHYAINCP)anydataobj.h perandom.h \
+  $(SOPHYAINCP)tvector.h \
+  $(SOPHYAINCP)tmatrix.h \
+  $(SOPHYAINCP)tarray.h \
+  $(SOPHYAINCP)basarr.h \
   $(SOPHYAINCP)mutyv.h \
   $(SOPHYAINCP)timestamp.h \
@@ -146,6 +151,5 @@
   $(SOPHYAINCP)perrors.h \
   $(SOPHYAINCP)fmath.h \
-  $(SOPHYAINCP)tvector.h \
-  $(SOPHYAINCP)srandgen.h classfunc.h cimage.h \
+  $(SOPHYAINCP)tvector.h classfunc.h cimage.h \
   $(SOPHYAINCP)tmatrix.h \
   $(SOPHYAINCP)fioarr.h dynccd.h \
@@ -175,4 +179,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h generaldata.h \
@@ -207,4 +212,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h generaldata.h \
@@ -239,4 +245,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector.h \
@@ -266,4 +273,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector.h \
@@ -292,4 +300,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector.h \
@@ -319,4 +328,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -346,4 +356,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h generaldata.h \
@@ -378,4 +389,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h generaldata.h \
@@ -418,4 +430,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h generaldata.h \
@@ -458,4 +471,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -488,4 +502,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h cimage.h \
   $(SOPHYAINCP)fioarr.h \
@@ -512,10 +527,12 @@
   $(SOPHYAINCP)machdefs.h \
   $(SOPHYAINCP)pexceptions.h \
-  $(SOPHYAINCP)machdefs.h perandom.h \
-  $(SOPHYAINCP)tvector.h \
-  $(SOPHYAINCP)tmatrix.h \
-  $(SOPHYAINCP)tarray.h \
-  $(SOPHYAINCP)basarr.h \
-  $(SOPHYAINCP)anydataobj.h \
+  $(SOPHYAINCP)machdefs.h \
+  $(SOPHYAINCP)srandgen.h \
+  $(SOPHYAINCP)randinterf.h \
+  $(SOPHYAINCP)anydataobj.h perandom.h \
+  $(SOPHYAINCP)tvector.h \
+  $(SOPHYAINCP)tmatrix.h \
+  $(SOPHYAINCP)tarray.h \
+  $(SOPHYAINCP)basarr.h \
   $(SOPHYAINCP)mutyv.h \
   $(SOPHYAINCP)timestamp.h \
@@ -537,6 +554,5 @@
   $(SOPHYAINCP)perrors.h \
   $(SOPHYAINCP)fmath.h \
-  $(SOPHYAINCP)tvector.h \
-  $(SOPHYAINCP)srandgen.h classfunc.h pemath.h
+  $(SOPHYAINCP)tvector.h classfunc.h
 	$(CXXCOMPILE) $(CXXTEMPFLG) -o $@  perandom.cc
  
@@ -564,4 +580,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -594,4 +611,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -629,4 +647,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h generalfit.h \
@@ -680,4 +699,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
