Function gsl_sf_lnbeta_e from: https://github.com/praat/praat/blob/master/external/gsl/gsl_specfunc__beta.c#L39 decompiled: ``` undefined8 FUN_18016b350(undefined8 param_1,undefined8 param_2,undefined8 *param_3) { undefined8 uVar1; double local_res20; uVar1 = FUN_18016b3b0(); if (local_res20 == -1.0) { *param_3 = 0x7ff8000000000000; param_3[1] = 0x7ff8000000000000; FUN_1801431f0("domain error", "C:\\Users\\D\\Desktop\\PraatLib_CMake\\PraatLib_CMake\\external\\gsl\\gsl_specfun c__beta.c" ,0x2c); uVar1 = 1; } return uVar1; } ``` original code: ``` int gsl_sf_lnbeta_e(const double x, const double y, gsl_sf_result * result) { double sgn; int status = gsl_sf_lnbeta_sgn_e(x,y,result,&sgn); if (sgn == -1) { DOMAIN_ERROR(result); /* expands to: do { (result)->val = GSL_NAN; (result)->err = GSL_NAN; GSL_ERROR ("domain error", GSL_EDOM); } while(0) */ } return status; } ``` Function gsl_specfunc__psi from: https://github.com/praat/praat/blob/master/external/gsl/gsl_specfunc__psi.c decompiled: ``` void FUN_1801899e0(double param_1,double *param_2) { ... local_98 = DAT_1809c4578 ^ (ulonglong)auStack_c8; dVar13 = 0.0; if (((param_1 == 0.0) || (param_1 == -1.0)) || (param_1 == -2.0)) { *param_2 = NAN; param_2[1] = NAN; FUN_1801431f0("domain error", "C:\\Users\\D\\Desktop\\PraatLib_CMake\\PraatLib_CMake\\external\\gsl\\gsl_specfun c__psi.c" ,0x2d7,1); } else if (param_1 <= 0.0) { if (param_1 <= -5.0) { dVar13 = sin(param_1 * 3.141592653589793); dVar13 = 9.869604401089358 / (dVar13 * dVar13); FUN_18018a120(1,1.0 - param_1,&local_a8); *param_2 = dVar13 - local_a8; param_2[1] = dVar13 * 4.440892098500626e-16 + local_a0; } else { dVar10 = floor(param_1); iVar8 = (int)(double)((ulonglong)dVar10 ^ 0x8000000000000000); dVar10 = (double)iVar8 + param_1; if (dVar10 == 0.0) { ... ``` original code: ``` static int psi_x(const double x, gsl_sf_result * result) { const double y = fabs(x); if(x == 0.0 || x == -1.0 || x == -2.0) { DOMAIN_ERROR(result); } else if(y >= 2.0) { const double t = 8.0/(y*y)-1.0; gsl_sf_result result_c; cheb_eval_e(&apsi_cs, t, &result_c); if(x < 0.0) { const double s = sin(M_PI*x); const double c = cos(M_PI*x); if(fabs(s) < 2.0*GSL_SQRT_DBL_MIN) { DOMAIN_ERROR(result); } else { result->val = log(y) - 0.5/x + result_c.val - M_PI * c/s; result->err = M_PI*fabs(x)*GSL_DBL_EPSILON/(s*s); result->err += result_c.err; result->err += GSL_DBL_EPSILON * fabs(result->val); return GSL_SUCCESS; } } else { result->val = log(y) - 0.5/x + result_c.val; result->err = result_c.err; result->err += GSL_DBL_EPSILON * fabs(result->val); return GSL_SUCCESS; } } ... ```