Curve fitting function doesn't work for (-tanh(w[0]))^x

Hi,

On Igor 8.0.2.1, I am trying to write my own fitting function, which will look something like this: (given w[0] = 2)

f(x) = ((-tanh(w[0]))^x)

For some reasons, once I have the above in the expression, the curve fitting function becomes nan. The Graph Now button gives an empty plot.

I also tried:

w[0]^x works

((-tanh(w[0]))*x) works

w[0]*((-tanh(1))^x) also works

(-tanh(w[0]))^x fails

 

So it seems something is happening when I have power of a tanh. Appreciated if you can provide me with some ideas what the cause is.

The below is the function for the fitting if you would like to try:

Function secSqueeze(w,x) : FitFunc
    Wave w
    Variable x

    //CurveFitDialog/ These comments were created by the Curve Fitting dialog. Altering them will
    //CurveFitDialog/ make the function less convenient to work with in the Curve Fitting dialog.
    //CurveFitDialog/ Equation:
    //CurveFitDialog/ if (mod(x+2,2)>0)
    //CurveFitDialog/   f(x) = 0
    //CurveFitDialog/   else
    //CurveFitDialog/   f(x) = (1/sqrt(cosh(squeezing)))*(-tanh(squeezing))^(x/2)*sqrt(factorial(2*(x/2)))/(2^(x/2)*factorial((x/2)))
    //CurveFitDialog/   endif
    //CurveFitDialog/ End of Equation
    //CurveFitDialog/ Independent Variables 1
    //CurveFitDialog/ x
    //CurveFitDialog/ Coefficients 1
    //CurveFitDialog/ w[0] = squeezing

////The actual function
//  if (mod(x+2,2)>0)
//      return 0
//      else
//      return ((1/sqrt(cosh(w[0])))*(-tanh(w[0]))^(x/2)*sqrt(factorial(2*(x/2)))/(2^(x/2)*factorial((x/2))))^2
//      endif
       
//  return ((1/sqrt(cosh(w[0])))*(-tanh(w[0]))^x)
    return (-tanh(w[0]))^x
       
End

 

Raising a negative number to a non-integral power gives a complex result:

print cmplx(-tanh(2), 0)^2.5
  (2.79367e-16,0.912481)

Your expression is not complex, so Igor returns NaN.