Inconsistent MEX file Output using Armadillo Interpolation

I am trying to convert matlab code to a c++ mex file in order to run a few computations more efficiently. I am using the armadillo library with blas and lapack for a few matrix operations, which involves interpolating data to apply a delay.

However, I am receiving an inconsistent output from my mex file. If I run the same mex file with the same input, sometimes I receive the correct output, and occasionally it will output a HUGE number (i.e. instead of on the order of 100, it is on the order of 10^246).

I am very new to c++ coding, and have exhausted my general knowledge base. I believe the problem is in my interpolation step, because I am able to consistently output the correct delay matrix, which is the preceeding step.

Does anyone have any idea what I am doing to produce this?

In Matlab I call:

mex  test.cpp  -lblas -llapack 
[outData] = test( squeeze(inData(:,:,ang,:)) , params, angles(ang),1);

My mex file is generally:

  #include <math.h>
    #include <mex.h>
    #include <armadillo>
    #include "armaMex.hpp"
    using namespace std; //avoid having to scope with std:: before commands
    using namespace arma; //avoid having to scope with std:: before commands
    void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]){


    // ============== INITIALIZE =============

    // Initialize Data
    const mwSize *dims;
    int cDim,dDim,aDim,numDims;         // Dimension variables
    int m, n, a;                                                           // Loop variables
    mxArray *fs_p, *f0_p, *prf_p, *pval_p, *c_p;      // Parameter pointers
    const double *fs,*f0,*prf,*pval, *c, *ang;           // Parameter variables
    const int  *nthreads;

    // Initialize pointers for param variables
    pval_p = mxGetField(prhs[1],0,"pval"); //note that your parameters need these exact names
    fs_p = mxGetField(prhs[1],0,"fs");
    f0_p = mxGetField(prhs[1],0,"f0");
    prf_p = mxGetField(prhs[1],0,"prf");
    c_p = mxGetField(prhs[1],0,"c");

    // Initialize parameters
    pval = mxGetPr(pval_p);
    fs = mxGetPr(fs_p);
    f0 = mxGetPr(pval_p);
    prf = mxGetPr(prf_p);
    c = mxGetPr(c_p);
    ang = (double*)mxGetData(prhs[2]);
    nthreads = (int*)mxGetData(prhs[3]);

    dims = mxGetDimensions(prhs[0]);
    numDims = (int)mxGetNumberOfDimensions(prhs[0]);
    dDim=(int)dims[0];cDim=(int)dims[1];aDim=(int)dims[2];

    //Read in channel Data
    cube data_in = armaGetCubePr(prhs[0]);

    (....... simple calculations that look okay ... )

    cube data_out(dDim, bDim, aDim);
    cube delayedData(dDim, aDim, bDim);

    vec delayArray(dDim);           //need to define these tmp variables bc subcube fcn otherwise gives me errors idk
    vec tmpIN(dDim);
    vec tmpOut(dDim);
    vec tmpOUTdata(dDim);


    for(m=0;m<bDim;m++){
        for(n=0;n<cDim;n++){
            for (a=0;a<aDim;a++){

            delayArray = tdelays.subcube(0,n,m,dDim-1,n,m);
            tmpIN = data_in.subcube(0,n,a,dDim-1,n,a);
            tmpOUTdata = data_out.subcube(0,m,a,dDim-1,m,a);

           interp1(timeArray, tmpIN , delayArray, tmpOut, "linear",0);

           data_out.subcube(0,m,a,dDim-1,m,a) =  tmpOUTdata +tmpOut;
            }
        }
    }


    // Define output data
    plhs[0] = armaCreateMxMatrix(data_out.n_rows, data_out.n_cols, data_out.n_slices);
    armaSetCubePr(plhs[0], data_out);

    return
    }