From 1e95911b8a77934d44fc6d2d88b5e4a143f5a7d8 Mon Sep 17 00:00:00 2001
From: JanThorbecke <janth@xs4all.nl>
Date: Thu, 11 Jul 2019 10:17:25 +0200
Subject: [PATCH] port to OSX clang with MKL

---
 MDD/computeMatrixInverse.c       |   2 +-
 MDD/mdd.c                        |   2 +-
 MDD/readShotData.c               |   2 +-
 Makefile                         |  22 +--
 corrvir/corrvir.c                |   4 +-
 fdelmodc/getWaveletHeaders.c     |   4 +-
 fdelmodc3D/alloc3D.c             |   2 +-
 fdelmodc3D/getBeamTimes3D.c      |   4 +-
 fdelmodc3D/getParameters3D.c     |   6 +-
 fdelmodc3D/getWaveletHeaders3D.c |   6 +-
 fdelmodc3D/writeRec3D.c          |   2 +-
 fdelrtmc/fdelrtmc.h              |   2 +-
 marchenko/readShotData.c         |   4 +-
 marchenko/readTinvData.c         |   4 +-
 marchenko3D/fmute3D.c            |   4 +-
 marchenko3D/getFileInfo3D.c      | 245 +------------------------------
 marchenko3D/homogeneousg3D.c     |   3 +-
 marchenko3D/readData3D.c         |   2 +-
 marchenko3D/readShotData3D.c     |   6 +-
 marchenko3D/readTinvData3D.c     |   4 +-
 raytime/getWaveletHeaders.c      |   4 +-
 utils/getFileInfo.c              |   4 +-
 utils/getFileInfo3D.c            |   6 +-
 utils/kxwfilter.c                |   2 +-
 utils/snap2shot.c                |   6 +-
 utils/syn2d.c                    |   8 +-
 26 files changed, 61 insertions(+), 299 deletions(-)
 mode change 100644 => 120000 marchenko3D/getFileInfo3D.c

diff --git a/MDD/computeMatrixInverse.c b/MDD/computeMatrixInverse.c
index a4ba57f..fd4eee6 100644
--- a/MDD/computeMatrixInverse.c
+++ b/MDD/computeMatrixInverse.c
@@ -335,7 +335,7 @@ void computeMatrixInverse(complex *matrix, int nxm, int rthm, float eps_a, float
 		S0 = S[0];
 		neig = 0;
 		for (i=0; i<N; i++) {
-			if (verbose=4) fprintf(stderr,"S[%d] = %e ",i,S[i]);
+			if (verbose==4) fprintf(stderr,"S[%d] = %e ",i,S[i]);
 			Si = S[i];
 			if ((Si/S0) > numacc) { S[i]=1.0/S[i]; neig++; }
 			else S[i] = 0.0;
diff --git a/MDD/mdd.c b/MDD/mdd.c
index cf19175..760e759 100644
--- a/MDD/mdd.c
+++ b/MDD/mdd.c
@@ -431,7 +431,7 @@ int main (int argc, char **argv)
 			hdr[0].ntr = nstationA*nstationB;
 			if (!one_file) {
 				strcpy(filename, file_out);
-				sprintf(number,"Station%03d\0",jstation+1);
+				sprintf(number,"Station%03ld\0",jstation+1);
 				name_ext(filename, number);
 				if (verbose>3) fprintf(stderr,"writing to file %s\n", filename);
 				fpout = fopen( filename, "w+" );
diff --git a/MDD/readShotData.c b/MDD/readShotData.c
index 20f953e..a6205bf 100644
--- a/MDD/readShotData.c
+++ b/MDD/readShotData.c
@@ -42,7 +42,7 @@ int readShotData(char *filename, float xmin, float dx, float *xrcv, float *xsrc,
 	fseek(fp, 0, SEEK_SET);
 	nread = fread( &hdr, 1, TRCBYTES, fp );
 	assert(nread == TRCBYTES);
-	if (hdr.scalco < 0) scl = 1.0/fabs(hdr.scalco);
+	if (hdr.scalco < 0) scl = 1.0/fabs((float)hdr.scalco);
 	else if (hdr.scalco == 0) scl = 1.0;
 	else scl = hdr.scalco;
 	fseek(fp, 0, SEEK_SET);
diff --git a/Makefile b/Makefile
index 209ae99..477383c 100644
--- a/Makefile
+++ b/Makefile
@@ -3,14 +3,16 @@
 all: mkdirs 
 	cd FFTlib		; $(MAKE)
 	cd fdelmodc		; $(MAKE) install
-	cd fdelmodc3D		; $(MAKE) install
+	cd fdelmodc3D	; $(MAKE) install
 	cd utils		; $(MAKE) install
-	cd marchenko		; $(MAKE) install
-	cd marchenko3D		; $(MAKE) install
+	cd marchenko	; $(MAKE) install
+	cd marchenko3D	; $(MAKE) install
 	cd corrvir		; $(MAKE) install
 	cd raytime		; $(MAKE) install
 	cd MDD			; $(MAKE) install
 
+#	cd fdelrtmc		; $(MAKE) install
+
 mkdirs:
 	-mkdir -p lib
 	-mkdir -p include
@@ -19,10 +21,11 @@ mkdirs:
 clean:
 	cd FFTlib 		; $(MAKE) $@
 	cd fdelmodc		; $(MAKE) $@
-	cd fdelmodc3D		; $(MAKE) $@
+	cd fdelmodc3D	; $(MAKE) $@
+	cd fdelrtmc		; $(MAKE) $@
 	cd utils		; $(MAKE) $@
-	cd marchenko		; $(MAKE) $@
-	cd marchenko3D		; $(MAKE) $@
+	cd marchenko	; $(MAKE) $@
+	cd marchenko3D	; $(MAKE) $@
 	cd corrvir		; $(MAKE) $@
 	cd raytime		; $(MAKE) $@
 	cd MDD			; $(MAKE) $@
@@ -30,10 +33,11 @@ clean:
 realclean:
 	cd FFTlib 		; $(MAKE) $@
 	cd fdelmodc		; $(MAKE) $@
-	cd fdelmodc3D		; $(MAKE) $@
+	cd fdelmodc3D	; $(MAKE) $@
+	cd fdelrtmc		; $(MAKE) $@
 	cd utils		; $(MAKE) $@
-	cd marchenko		; $(MAKE) $@
-	cd marchenko3D		; $(MAKE) $@
+	cd marchenko	; $(MAKE) $@
+	cd marchenko3D	; $(MAKE) $@
 	cd corrvir		; $(MAKE) $@
 	cd raytime		; $(MAKE) $@
 	cd MDD			; $(MAKE) $@
diff --git a/corrvir/corrvir.c b/corrvir/corrvir.c
index 2a17e98..94b5137 100644
--- a/corrvir/corrvir.c
+++ b/corrvir/corrvir.c
@@ -203,7 +203,7 @@ int main (int argc, char **argv)
 	if (nbm==0) { /* read only headers */
 		nbufmax = 0;
 		for (i=0; i<ntrace; i++) {
-			if(i % 100000 == 0) fprintf(stderr,"i=%d out of %d\n", i, ntrace);
+			if(i % 100000 == 0) fprintf(stderr,"i=%d out of %ld\n", i, ntrace);
 			offset = i*trace_sz;
 			ret = fseeko(fpin , offset, SEEK_SET);
 			if (ret<0) perror("fseeko");
@@ -222,7 +222,7 @@ int main (int argc, char **argv)
 		r = (float *)calloc(ntfft,sizeof(float));
 		c = (complex *)calloc((nf),sizeof(complex));
 		for (i=0; i<ntrace; i++) {
-			if(i % 100000 == 0) fprintf(stderr,"i=%d out of %d\n", i, ntrace);
+			if(i % 100000 == 0) fprintf(stderr,"i=%d out of %ld\n", i, ntrace);
 			offset = i*trace_sz;
 			ret = fseeko(fpin , offset, SEEK_SET);
 			if (ret<0) perror("fseeko");
diff --git a/fdelmodc/getWaveletHeaders.c b/fdelmodc/getWaveletHeaders.c
index 5bff375..31799c4 100644
--- a/fdelmodc/getWaveletHeaders.c
+++ b/fdelmodc/getWaveletHeaders.c
@@ -28,10 +28,10 @@ int getWaveletHeaders(char *file_src, int n1, int n2, float *gx, float *sx, floa
     assert( fp != NULL);
     nread = fread( &hdr, 1, TRCBYTES, fp );
     assert(nread == TRCBYTES);
-	if (hdr.scalco < 0) scl = 1.0/fabs(hdr.scalco);
+	if (hdr.scalco < 0) scl = 1.0/fabs((float)hdr.scalco);
 	else if (hdr.scalco == 0) scl = 1.0;
 	else scl = hdr.scalco;
-	if (hdr.scalel < 0) scll = 1.0/fabs(hdr.scalel);
+	if (hdr.scalel < 0) scll = 1.0/fabs((float)hdr.scalel);
 	else if (hdr.scalel == 0) scll = 1.0;
 	else scll = hdr.scalel;
 	trace_sz = (size_t)sizeof(float)*(n1)+TRCBYTES;
diff --git a/fdelmodc3D/alloc3D.c b/fdelmodc3D/alloc3D.c
index 139d1b1..cda6c8d 100644
--- a/fdelmodc3D/alloc3D.c
+++ b/fdelmodc3D/alloc3D.c
@@ -49,7 +49,7 @@ void ***alloc3float(modPar mod)
         }
 	}
 	else { // 3D model 
-		fprintf(stderr,"Allocating 3D model \n");
+		//fprintf(stderr,"Allocating 3D model \n");
         if ((p[0][0]=(void*)malloc(n3*n2*n1*size))==NULL) {
             free(p[0]);
             free(p);
diff --git a/fdelmodc3D/getBeamTimes3D.c b/fdelmodc3D/getBeamTimes3D.c
index 3cfbf98..4bd4a22 100644
--- a/fdelmodc3D/getBeamTimes3D.c
+++ b/fdelmodc3D/getBeamTimes3D.c
@@ -152,7 +152,7 @@ long writeBeams3D(modPar mod, snaPar sna, long ixsrc, long iysrc, long izsrc,
 	
 	strcpy(filename, sna.file_beam);
 	if (fileno) {
-		sprintf(number,"_%03d",fileno);
+		sprintf(number,"_%03ld",fileno);
 		name_ext(filename, number);
 	}
 	if (verbose>2) vmess("Writing beam data to file %s", filename);
@@ -248,4 +248,4 @@ long writeBeams3D(modPar mod, snaPar sna, long ixsrc, long iysrc, long izsrc,
 	if (sna.type.ss) fclose(fpss);
 
 	return 0;
-}
\ No newline at end of file
+}
diff --git a/fdelmodc3D/getParameters3D.c b/fdelmodc3D/getParameters3D.c
index 25b7f22..8683bc5 100644
--- a/fdelmodc3D/getParameters3D.c
+++ b/fdelmodc3D/getParameters3D.c
@@ -155,7 +155,7 @@ long getParameters3D(modPar *mod, recPar *rec, snaPar *sna, wavPar *wav, srcPar
         if (!getparlong("ny",&ny)) ny=nx;
 		dy=dx;
     	sub_y0=-0.5*(ny-1)*(dy);
-		fprintf(stderr,"get param ny=%d dy=%f y0=%f\n", ny, dy, sub_y0);
+		fprintf(stderr,"get param ny=%ld dy=%f y0=%f\n", ny, dy, sub_y0);
 	}
 	mod->dz = dz;
 	mod->dx = dx;
@@ -275,10 +275,10 @@ criteria we have imposed.*/
 		vmess("*******************************************");
 		vmess("*************** model info ****************");
 		vmess("*******************************************");
-		if (mod.nfx == 1) {
+		if (mod->nfx == 1) {
 			vmess(" 1-dimensional model is read from file");
 		}
-		else if (mod.nfy == 1) {
+		else if (mod->nfy == 1) {
 			vmess(" 2-dimensional model is read from file");
 		}
 		else {
diff --git a/fdelmodc3D/getWaveletHeaders3D.c b/fdelmodc3D/getWaveletHeaders3D.c
index 3247420..1afe10b 100644
--- a/fdelmodc3D/getWaveletHeaders3D.c
+++ b/fdelmodc3D/getWaveletHeaders3D.c
@@ -29,10 +29,10 @@ long getWaveletHeaders3D(char *file_src, long n1, long n2, float *gx, float *sx,
     assert( fp != NULL);
     nread = fread( &hdr, 1, TRCBYTES, fp );
     assert(nread == TRCBYTES);
-	if (hdr.scalco < 0) scl = 1.0/fabs(hdr.scalco);
+	if (hdr.scalco < 0) scl = 1.0/fabs((float)hdr.scalco);
 	else if (hdr.scalco == 0) scl = 1.0;
 	else scl = hdr.scalco;
-	if (hdr.scalel < 0) scll = 1.0/fabs(hdr.scalel);
+	if (hdr.scalel < 0) scll = 1.0/fabs((float)hdr.scalel);
 	else if (hdr.scalel == 0) scll = 1.0;
 	else scll = hdr.scalel;
 	trace_sz = (size_t)sizeof(float)*(n1)+TRCBYTES;
@@ -51,4 +51,4 @@ long getWaveletHeaders3D(char *file_src, long n1, long n2, float *gx, float *sx,
 	}
     fclose(fp);
     return 0;
-}
\ No newline at end of file
+}
diff --git a/fdelmodc3D/writeRec3D.c b/fdelmodc3D/writeRec3D.c
index 35349c2..f2c0bc1 100644
--- a/fdelmodc3D/writeRec3D.c
+++ b/fdelmodc3D/writeRec3D.c
@@ -65,7 +65,7 @@ long writeRec3D(recPar rec, modPar mod, bndPar bnd, wavPar wav, long ixsrc, long
     /* fileno has a non-zero value (from fdelmodc.c) if the number of samples exceeds rec_ntsam. */
     strcpy(filename, rec.file_rcv);
     if (fileno) {
-        sprintf(number,"_%03d",fileno);
+        sprintf(number,"_%03ld",fileno);
         name_ext(filename, number);
     }
 #ifdef MPI
diff --git a/fdelrtmc/fdelrtmc.h b/fdelrtmc/fdelrtmc.h
index 3009338..f391b45 100644
--- a/fdelrtmc/fdelrtmc.h
+++ b/fdelrtmc/fdelrtmc.h
@@ -402,4 +402,4 @@ typedef struct _recPar{
 
 #ifndef WISDOMDIR
 #define WISDOMDIR "/tmp/fftw/"
-#endif
\ No newline at end of file
+#endif
diff --git a/marchenko/readShotData.c b/marchenko/readShotData.c
index a619799..80e43fc 100644
--- a/marchenko/readShotData.c
+++ b/marchenko/readShotData.c
@@ -43,10 +43,10 @@ int nx, int nxs, float fxsb, float dxs, int ntfft, int mode, float scale, float
     fseek(fp, 0, SEEK_SET);
     nread = fread( &hdr, 1, TRCBYTES, fp );
     assert(nread == TRCBYTES);
-    if (hdr.scalco < 0) scl = 1.0/fabs(hdr.scalco);
+    if (hdr.scalco < 0) scl = 1.0/fabs((float)hdr.scalco);
     else if (hdr.scalco == 0) scl = 1.0;
     else scl = hdr.scalco;
-    if (hdr.scalel < 0) scel = 1.0/fabs(hdr.scalel);
+    if (hdr.scalel < 0) scel = 1.0/fabs((float)hdr.scalel);
     else if (hdr.scalel == 0) scel = 1.0;
     else scel = hdr.scalel;
 
diff --git a/marchenko/readTinvData.c b/marchenko/readTinvData.c
index 028d4c2..11ef1a4 100644
--- a/marchenko/readTinvData.c
+++ b/marchenko/readTinvData.c
@@ -45,10 +45,10 @@ int readTinvData(char *filename, float *xrcv, float *xsrc, float *zsrc, int *xnx
 	fseek(fp, 0, SEEK_SET);
 	nread = fread( &hdr, 1, TRCBYTES, fp );
 	assert(nread == TRCBYTES);
-	if (hdr.scalco < 0) scl = 1.0/fabs(hdr.scalco);
+	if (hdr.scalco < 0) scl = 1.0/fabs((float)hdr.scalco);
 	else if (hdr.scalco == 0) scl = 1.0;
 	else scl = hdr.scalco;
-	if (hdr.scalel < 0) scel = 1.0/fabs(hdr.scalel);
+	if (hdr.scalel < 0) scel = 1.0/fabs((float)hdr.scalel);
 	else if (hdr.scalel == 0) scel = 1.0;
 	else scel = hdr.scalel;
 	fseek(fp, 0, SEEK_SET);
diff --git a/marchenko3D/fmute3D.c b/marchenko3D/fmute3D.c
index 627c745..79fbe1c 100644
--- a/marchenko3D/fmute3D.c
+++ b/marchenko3D/fmute3D.c
@@ -61,7 +61,7 @@ char *sdoc[] = {
 NULL};
 /**************** end self doc ***********************************/
 
-long main (int argc, char **argv)
+int main (int argc, char **argv)
 {
     FILE    *fp_in1, *fp_in2, *fp_out, *fp_chk, *fp_psline1, *fp_psline2;
     long        verbose, shift, k, nx1, ny1, nt1, nx2, ny2, nt2, nxy;
@@ -508,4 +508,4 @@ long main (int argc, char **argv)
     
 
     return 0;
-}
\ No newline at end of file
+}
diff --git a/marchenko3D/getFileInfo3D.c b/marchenko3D/getFileInfo3D.c
deleted file mode 100644
index fd00cee..0000000
--- a/marchenko3D/getFileInfo3D.c
+++ /dev/null
@@ -1,244 +0,0 @@
-#define _FILE_OFFSET_BITS 64
-#define _LARGEFILE_SOURCE
-
-#include <assert.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <errno.h>
-#include <math.h>
-#include "segy.h"
-
-#define MAX(x,y) ((x) > (y) ? (x) : (y))
-#define MIN(x,y) ((x) < (y) ? (x) : (y))
-#define NINT(x) ((long)((x)>0.0?(x)+0.5:(x)-0.5))
-
-/**
-* gets sizes, sampling and min/max values of a SU file
-*
-*   AUTHOR:
-*           Jan Thorbecke (janth@xs4all.nl)
-*           The Netherlands 
-**/
-
-void vmess(char *fmt, ...);
-void verr(char *fmt, ...);
-int optncr(int n);
-
-long getFileInfo3D(char *filename, long *n1, long *n2, long *n3, long *ngath, float *d1, float *d2, float *d3, float *f1, float *f2, float *f3, float *sclsxgxsygy, long *nxm)
-{
-    FILE    *fp;
-    size_t  nread, data_sz;
-	off_t   bytes, ret, trace_sz, ntraces;
-    long     sx_shot, sy_shot, gx_start, gx_end, gy_start, gy_end, itrace, one_shot, igath, end_of_file, fldr_shot;
-    long     verbose=1, igy, nsx, nsy;
-    float   scl, *trace, dxsrc, dxrcv, dysrc, dyrcv;
-    segy    hdr;
-    
-    if (filename == NULL) { /* read from input pipe */
-		*n1=0;
-		*n2=0;
-        *n3=0;
-		return -1; /* Input pipe */
-	}
-    else fp = fopen( filename, "r" );
-	if (fp == NULL) verr("File %s does not exist or cannot be opened", filename);
-    nread = fread( &hdr, 1, TRCBYTES, fp );
-    assert(nread == TRCBYTES);
-    ret = fseeko( fp, 0, SEEK_END );
-	if (ret<0) perror("fseeko");
-    bytes = ftello( fp );
-
-    *n1 = hdr.ns;
-    if ( (hdr.trid == 1) && (hdr.dt != 0) ) {
-        *d1 = ((float) hdr.dt)*1.e-6;
-        *f1 = ((float) hdr.delrt)/1000.;
-    }
-    else {
-        *d1 = hdr.d1;
-        *f1 = hdr.f1;
-    }
-    *f2 = hdr.f2;
-    *f3 = hdr.gy;
-
-    data_sz = sizeof(float)*(*n1);
-    trace_sz = sizeof(float)*(*n1)+TRCBYTES;
-    ntraces  = (long) (bytes/trace_sz);
-
-    if (hdr.scalco < 0) scl = 1.0/fabs(hdr.scalco);
-    else if (hdr.scalco == 0) scl = 1.0;
-    else scl = hdr.scalco;
-
-	*sclsxgxsygy = scl;
-    /* check to find out number of traces in shot gather */
-
-    one_shot = 1;
-    itrace   = 1;
-    igy      = 1;
-    fldr_shot = hdr.fldr;
-    sx_shot  = hdr.sx;
-    sy_shot = hdr.sy;
-    gx_start = hdr.gx;
-    gy_start = hdr.gy;
-    gy_end = gy_start;
-    trace = (float *)malloc(hdr.ns*sizeof(float));
-    fseeko( fp, TRCBYTES, SEEK_SET );
-
-    while (one_shot) {
-        nread = fread( trace, sizeof(float), hdr.ns, fp );
-        assert (nread == hdr.ns);
-        if (hdr.gy != gy_end) {
-            gy_end = hdr.gy;
-            igy++;
-        }
-        gx_end = hdr.gx;
-        nread = fread( &hdr, 1, TRCBYTES, fp );
-        if (nread==0) break;
-        if ((sx_shot != hdr.sx) || (sy_shot != hdr.sy) || (fldr_shot != hdr.fldr) ) break;
-        itrace++;
-    }
-
-    if (itrace>1) {
-        *n2 = itrace/igy;
-        *n3 = igy;
-        if (*n2>1) {
-            dxrcv  = (float)(gx_end - gx_start)/(float)(*n2-1);
-        }
-        else {
-            dxrcv  = 1.0/scl;
-        }
-        if (*n3>1) {
-            dyrcv = (float)(gy_end - gy_start)/(float)(*n3-1);
-        }
-        else {
-            dyrcv  = 1.0/scl;
-        }
-        *d2 = fabs(dxrcv)*scl;
-        *d3 = fabs(dyrcv)*scl;
-        if (NINT(dxrcv*1e3) != NINT(fabs(hdr.d2)*1e3)) {
-            if (dxrcv != 0) *d2 = fabs(dxrcv)*scl;
-            else *d2 = hdr.d2;
-        }
-    }
-    else {
-        *n2 = MAX(hdr.trwf, 1);
-        *n3 = 1;
-        *d2 = hdr.d2;
-        *d3 = 1.0;
-        dxrcv = hdr.d2;
-        dyrcv = 0.0;
-    }  
-
-/* check if the total number of traces (ntraces) is correct */
-
-/* expensive way to find out how many gathers there are */
-
-//	fprintf(stderr, "ngath = %li dxrcv=%f d2=%f scl=%f \n", *ngath, dxrcv, *d2, scl);
-    if (*ngath == 0) {
-		*n2 = 0;
-        *n3 = 0;
-
-        end_of_file = 0;
-        one_shot    = 1;
-        igath       = 0;
-        fseeko( fp, 0, SEEK_SET );
-        dxrcv = *d2;
-        dyrcv = *d3;
-
-        while (!end_of_file) {
-            nread = fread( &hdr, 1, TRCBYTES, fp );
-            if (nread != TRCBYTES) { break; }
-    		fldr_shot = hdr.fldr;
-            sx_shot   = hdr.sx;
-            gx_start  = hdr.gx;
-            gx_end    = hdr.gx;
-            sy_shot   = hdr.sy;
-            gy_start  = hdr.gy;
-            gy_end    = hdr.gy;
-    
-            itrace = 1;
-            igy = 1;
-            while (one_shot) {
-                fseeko( fp, data_sz, SEEK_CUR );
-                if (hdr.gx != gx_end) dxrcv = MIN(dxrcv,abs(hdr.gx-gx_end));
-                if (hdr.gy != gy_end) {
-                    igy++;
-                    gy_end = hdr.gy;
-                    dyrcv = MIN(dyrcv,abs(hdr.gy-gy_end));
-                }
-                gx_end = hdr.gx;
-                nread = fread( &hdr, 1, TRCBYTES, fp );
-                if (nread != TRCBYTES) {
-                    one_shot = 0;
-                    end_of_file = 1;
-                    break;
-                }
-        		if ((sx_shot != hdr.sx) || (sy_shot != hdr.sy) || (fldr_shot != hdr.fldr)) break;
-                itrace++;
-            }
-            if (itrace>1) {
-                *n2 = MAX(itrace/igy,*n2);
-                *n3 = igy;
-                if (*n2>1) {
-                    dxrcv  = (float)(gx_end - gx_start)/(float)(*n2-1);
-                }
-                else {
-                    dxrcv  = 1.0/scl;
-                }
-                if (*n3>1) {
-                    dyrcv = (float)(gy_end - gy_start)/(float)(*n3-1);
-                }
-                else {
-                    dyrcv  = 1.0/scl;
-                }
-                dxsrc  = (float)(hdr.sx - sx_shot)*scl;
-                dysrc = (float)(hdr.sy - sy_shot)*scl;
-            }
-            else {
-                *n2 = MAX(MAX(hdr.trwf, 1),*n2);
-                *n3 = 1;
-                *d2 = hdr.d2;
-                *d3 = 1.0;
-                dxrcv = hdr.d2/scl;
-                dyrcv = 1.0/scl;
-            }
-            if (verbose>1) {
-                fprintf(stderr," . Scanning shot %li (%li) with %li traces dxrcv=%.2f dxsrc=%.2f %li %li dyrcv=%.2f dysrc=%.2f %li %li\n",sx_shot,igath,itrace,dxrcv*scl,dxsrc,gx_end,gx_start,dyrcv*scl,dysrc,gy_end,gy_start);
-            }
-            if (itrace != 0) { /* end of shot record */
-                fseeko( fp, -TRCBYTES, SEEK_CUR );
-                igath++;
-            }
-            else {
-                end_of_file = 1;
-            }
-        }
-        *ngath = igath;
-        *d2 = dxrcv*scl;
-        *d3 = dyrcv*scl;
-    }
-    else {
-        /* read last trace header */
-
-        fseeko( fp, -trace_sz, SEEK_END );
-        nread = fread( &hdr, 1, TRCBYTES, fp );
-		*ngath = ntraces/((*n2)*(*n3));
-    }
-//    *nxm = NINT((*xmax-*xmin)/dxrcv)+1;
-	*nxm = (long)ntraces;
-
-    fclose( fp );
-    free(trace);
-
-    return 0;
-}
-
-long disp_fileinfo3D(char *file, long n1, long n2, long n3, float f1, float f2, float f3, float d1, float d2, float d3, segy *hdrs)
-{
-	vmess("file %s contains", file);
-    vmess("*** n1 = %li n2 = %li n3 = %li ntftt=%li", n1, n2, n3, (long)optncr((int)n1));
-	vmess("*** d1 = %.5f d2 = %.5f d3 = %.5f", d1, d2, d3);
-	vmess("*** f1 = %.5f f2 = %.5f f3 = %.5f", f1, f2, f3);
-	vmess("*** fldr = %li sx = %li sy = %li", hdrs[0].fldr, hdrs[0].sx, hdrs[0].sy);
-
-	return 0;
-}
diff --git a/marchenko3D/getFileInfo3D.c b/marchenko3D/getFileInfo3D.c
new file mode 120000
index 0000000..d9078c9
--- /dev/null
+++ b/marchenko3D/getFileInfo3D.c
@@ -0,0 +1 @@
+../utils/getFileInfo3D.c
\ No newline at end of file
diff --git a/marchenko3D/homogeneousg3D.c b/marchenko3D/homogeneousg3D.c
index 22c887e..8a09ecb 100644
--- a/marchenko3D/homogeneousg3D.c
+++ b/marchenko3D/homogeneousg3D.c
@@ -26,6 +26,7 @@ void corr(float *data1, float *data2, float *cov, long nrec, long nsam, float dt
 void convol(float *data1, float *data2, float *con, long nrec, long nsam, float dt, long shift);
 
 long readSnapData3D(char *filename, float *data, segy *hdrs, long nsnaps, long nx, long ny, long nz, long sx, long ex, long sy, long ey, long sz, long ez);
+long getFileInfo3D(char *filename, long *n1, long *n2, long *n3, long *ngath, float *d1, float *d2, float *d3, float *f1, float *f2, float *f3, float *sclsxgxsygy, long *nxm);
 
 //void kxwfilter(float *data, long nt, long nx, float dt, float dx, float fmin, float fmax, float angle, float cp, float perc);
 void timeDiff(float *data, long nsam, long nrec, float dt, float fmin, float fmax, long opt);
@@ -562,4 +563,4 @@ void conjugate(float *data, long nsam, long nrec, float dt)
     free(rdata);
 
     return;
-}
\ No newline at end of file
+}
diff --git a/marchenko3D/readData3D.c b/marchenko3D/readData3D.c
index 8cef449..45e827a 100644
--- a/marchenko3D/readData3D.c
+++ b/marchenko3D/readData3D.c
@@ -13,7 +13,7 @@
 **/
 
 
-int readData3D(FILE *fp, float *data, segy *hdrs, long n1)
+long readData3D(FILE *fp, float *data, segy *hdrs, long n1)
 {
 	size_t nread;
 	long oneshot, itrace, sx, sy, fldr, gy, nx, ny;
diff --git a/marchenko3D/readShotData3D.c b/marchenko3D/readShotData3D.c
index c25327f..2dc337f 100644
--- a/marchenko3D/readShotData3D.c
+++ b/marchenko3D/readShotData3D.c
@@ -44,10 +44,10 @@ long readShotData3D(char *filename, float *xrcv, float *yrcv, float *xsrc, float
 	fseek(fp, 0, SEEK_SET);
 	nread = fread( &hdr, 1, TRCBYTES, fp );
 	assert(nread == TRCBYTES);
-	if (hdr.scalco < 0) scl = 1.0/fabs(hdr.scalco);
+	if (hdr.scalco < 0) scl = 1.0/fabs((float)hdr.scalco);
 	else if (hdr.scalco == 0) scl = 1.0;
 	else scl = hdr.scalco;
-	if (hdr.scalel < 0) scel = 1.0/fabs(hdr.scalel);
+	if (hdr.scalel < 0) scel = 1.0/fabs((float)hdr.scalel);
 	else if (hdr.scalel == 0) scel = 1.0;
 	else scel = hdr.scalel;
 
@@ -135,4 +135,4 @@ long readShotData3D(char *filename, float *xrcv, float *yrcv, float *xsrc, float
 	free(trace);
 
 	return 0;
-}
\ No newline at end of file
+}
diff --git a/marchenko3D/readTinvData3D.c b/marchenko3D/readTinvData3D.c
index f1bee84..572ed3d 100644
--- a/marchenko3D/readTinvData3D.c
+++ b/marchenko3D/readTinvData3D.c
@@ -47,10 +47,10 @@ long readTinvData3D(char *filename, float *xrcv, float *yrcv, float *xsrc, float
 	fseek(fp, 0, SEEK_SET);
 	nread = fread( &hdr, 1, TRCBYTES, fp );
 	assert(nread == TRCBYTES);
-	if (hdr.scalco < 0) scl = 1.0/fabs(hdr.scalco);
+	if (hdr.scalco < 0) scl = 1.0/fabs((float)hdr.scalco);
 	else if (hdr.scalco == 0) scl = 1.0;
 	else scl = hdr.scalco;
-	if (hdr.scalel < 0) scel = 1.0/fabs(hdr.scalel);
+	if (hdr.scalel < 0) scel = 1.0/fabs((float)hdr.scalel);
 	else if (hdr.scalel == 0) scel = 1.0;
 	else scel = hdr.scalel;
 	fseek(fp, 0, SEEK_SET);
diff --git a/raytime/getWaveletHeaders.c b/raytime/getWaveletHeaders.c
index 5bff375..31799c4 100644
--- a/raytime/getWaveletHeaders.c
+++ b/raytime/getWaveletHeaders.c
@@ -28,10 +28,10 @@ int getWaveletHeaders(char *file_src, int n1, int n2, float *gx, float *sx, floa
     assert( fp != NULL);
     nread = fread( &hdr, 1, TRCBYTES, fp );
     assert(nread == TRCBYTES);
-	if (hdr.scalco < 0) scl = 1.0/fabs(hdr.scalco);
+	if (hdr.scalco < 0) scl = 1.0/fabs((float)hdr.scalco);
 	else if (hdr.scalco == 0) scl = 1.0;
 	else scl = hdr.scalco;
-	if (hdr.scalel < 0) scll = 1.0/fabs(hdr.scalel);
+	if (hdr.scalel < 0) scll = 1.0/fabs((float)hdr.scalel);
 	else if (hdr.scalel == 0) scll = 1.0;
 	else scll = hdr.scalel;
 	trace_sz = (size_t)sizeof(float)*(n1)+TRCBYTES;
diff --git a/utils/getFileInfo.c b/utils/getFileInfo.c
index 61ff7ba..5aec1a4 100644
--- a/utils/getFileInfo.c
+++ b/utils/getFileInfo.c
@@ -60,7 +60,7 @@ int getFileInfo(char *filename, int *n1, int *n2, int *ngath, float *d1, float *
     ntraces  = (int) (bytes/trace_sz);
 //	fprintf(stderr,"data_sz %ld trace_sz %lld  bytes = %lld\n", data_sz, trace_sz, bytes);
 
-    if (hdr.scalco < 0) scl = 1.0/fabs(hdr.scalco);
+    if (hdr.scalco < 0) scl = 1.0/fabs((float)hdr.scalco);
     else if (hdr.scalco == 0) scl = 1.0;
     else scl = hdr.scalco;
 
@@ -144,7 +144,7 @@ int getFileInfo(char *filename, int *n1, int *n2, int *ngath, float *d1, float *
         		if ((sx_shot != hdr.sx) || (fldr_shot != hdr.fldr) ) break;
             }
             if (itrace>1) {
-                dxrcv  = (float)fabs(gx_end - gx_start)/((float)(itrace-1));
+                dxrcv  = (float)abs(gx_end - gx_start)/((float)(itrace-1));
                 dxsrc  = (float)(hdr.sx - sx_shot)*scl;
 				*n2 = MAX(*n2,itrace);
             }
diff --git a/utils/getFileInfo3D.c b/utils/getFileInfo3D.c
index fd00cee..d914fc7 100644
--- a/utils/getFileInfo3D.c
+++ b/utils/getFileInfo3D.c
@@ -64,7 +64,7 @@ long getFileInfo3D(char *filename, long *n1, long *n2, long *n3, long *ngath, fl
     trace_sz = sizeof(float)*(*n1)+TRCBYTES;
     ntraces  = (long) (bytes/trace_sz);
 
-    if (hdr.scalco < 0) scl = 1.0/fabs(hdr.scalco);
+    if (hdr.scalco < 0) scl = 1.0/fabs((float)hdr.scalco);
     else if (hdr.scalco == 0) scl = 1.0;
     else scl = hdr.scalco;
 
@@ -159,11 +159,11 @@ long getFileInfo3D(char *filename, long *n1, long *n2, long *n3, long *ngath, fl
             igy = 1;
             while (one_shot) {
                 fseeko( fp, data_sz, SEEK_CUR );
-                if (hdr.gx != gx_end) dxrcv = MIN(dxrcv,abs(hdr.gx-gx_end));
+                if (hdr.gx != gx_end) dxrcv = MIN(dxrcv,labs(hdr.gx-gx_end));
                 if (hdr.gy != gy_end) {
                     igy++;
                     gy_end = hdr.gy;
-                    dyrcv = MIN(dyrcv,abs(hdr.gy-gy_end));
+                    dyrcv = MIN(dyrcv,labs(hdr.gy-gy_end));
                 }
                 gx_end = hdr.gx;
                 nread = fread( &hdr, 1, TRCBYTES, fp );
diff --git a/utils/kxwfilter.c b/utils/kxwfilter.c
index 8689028..9168325 100644
--- a/utils/kxwfilter.c
+++ b/utils/kxwfilter.c
@@ -80,7 +80,7 @@ void kxwfilt(complex *data, float k, float dx, int nkx, float a1, float perc)
 	filter = (float *)malloc(nkx*sizeof(float));
 
 	band  = fabs(2*kpos);
-	ntap  = (int)fabs((int)(perc*band/dkx));
+	ntap  = (int)abs((int)(perc*band/dkx));
 	kfilt = fabs(dkx*ntap);
 
 	if (perc > 0) {
diff --git a/utils/snap2shot.c b/utils/snap2shot.c
index 4218a2b..18d0108 100644
--- a/utils/snap2shot.c
+++ b/utils/snap2shot.c
@@ -54,7 +54,7 @@ char *sdoc[] = {
 "   fray ..................... File containing the raytimes of the first arrivals",
 NULL};
 
-void main (int argc, char **argv)
+int main (int argc, char **argv)
 {
 	FILE *fp_snap, *fp_rcv;
 	char    *file_snap, *file_rcv, file_tmp[150], ins[100], fbegin[100], fend[100], fins[100], fin2[100], numb1[100], *ptr;
@@ -201,5 +201,5 @@ void main (int argc, char **argv)
 
 	free(rcvdata); free(hdr_rcv); free(hdr_snap);
 
-	return;
-}
\ No newline at end of file
+	return 0;
+}
diff --git a/utils/syn2d.c b/utils/syn2d.c
index 5686f3b..2e87e9e 100644
--- a/utils/syn2d.c
+++ b/utils/syn2d.c
@@ -160,11 +160,11 @@ int main (int argc, char **argv)
     nts = n1;
 
                              
-    if (hdrs[0].scalco < 0) scl = 1.0/fabs(hdrs[0].scalco);
+    if (hdrs[0].scalco < 0) scl = 1.0/fabs((float)hdrs[0].scalco);
 	else if (hdrs[0].scalco == 0) scl = 1.0;
 	else scl = hdrs[0].scalco;
 
-	if (hdrs[0].scalel < 0) scel = 1.0/fabs(hdrs[0].scalel);
+	if (hdrs[0].scalel < 0) scel = 1.0/fabs((float)hdrs[0].scalel);
 	else if (hdrs[0].scalel == 0) scel = 1.0;
 	else scel = hdrs[0].scalel;
 
@@ -287,7 +287,7 @@ int main (int argc, char **argv)
 		for (j = nt; j < optn; j++) shotdata[i*optn+j] = 0.0;
 	}
 
-	if (hdrs_in[0].scalco < 0) scl = 1.0/fabs(hdrs_in[0].scalco);
+	if (hdrs_in[0].scalco < 0) scl = 1.0/fabs((float)hdrs_in[0].scalco);
 	else if (hdrs_in[0].scalco == 0) scl = 1.0;
 	else scl = hdrs_in[0].scalco;
 
@@ -638,7 +638,7 @@ void synthesis(float *shotdata, float *syndata, int nx, int nt, int nxs, int nts
 
 	ixsrc = NINT((xsrc - fxs)/dxs);
 
-	if (abs(xrcv[0]-xsrc) > 0.5*nx*dx) { iox = 0; inx = nx-off; }
+	if (fabsf(xrcv[0]-xsrc) > 0.5*nx*dx) { iox = 0; inx = nx-off; }
 	else { iox = off; inx = nx; }
 
 	t0 = wallclock_time();
-- 
GitLab