diff options
Diffstat (limited to 'src/c/specialFunctions/erfinv')
-rw-r--r-- | src/c/specialFunctions/erfinv/derfinvs.c | 16 | ||||
-rw-r--r-- | src/c/specialFunctions/erfinv/serfinva.c | 2 | ||||
-rw-r--r-- | src/c/specialFunctions/erfinv/serfinvs.c | 14 |
3 files changed, 16 insertions, 16 deletions
diff --git a/src/c/specialFunctions/erfinv/derfinvs.c b/src/c/specialFunctions/erfinv/derfinvs.c index 379d6af5..3f7fe761 100644 --- a/src/c/specialFunctions/erfinv/derfinvs.c +++ b/src/c/specialFunctions/erfinv/derfinvs.c @@ -19,31 +19,31 @@ double derfinvs (double inp1) { - double a[] = {0.88622692374517353,-1.6601283962374516,0.92661860147244357,-0.14110320437680104}; - double b[] = {-2.13505380615258078,1.46060340345661088,-0.33198239813321595,0.01197270616590528}; - double c[] = {-1.994216456587148,-1.87267416351196,3.60874665878559364,1.82365845766309853}; - double d[] = {3.74146294065960872,1.81848952562894617}; + double a[] = {0.88622692374517353,-1.6601283962374516,0.92661860147244357,-0.14110320437680104}; //Coefficients for the formula to calculate inverse error + double b[] = {-2.13505380615258078,1.46060340345661088,-0.33198239813321595,0.01197270616590528}; //Coefficients for the formula to calculate inverse error + double c[] = {-1.994216456587148,-1.87267416351196,3.60874665878559364,1.82365845766309853}; //Coefficients for the formula to calculate inverse error + double d[] = {3.74146294065960872,1.81848952562894617}; //Coefficients for the formula to calculate inverse error if ((inp1 > 1) || (inp1 < -1)) { - return 0.0/0.0; + return 0.0/0.0; // returns Nan } if ((inp1 >= -0.7) && (inp1 <= 0.7)) { double sq = inp1 * inp1; - return (inp1 * (((a[3]*sq+a[2]) * sq+a[1]) * sq+a[0]) / ((((b[3]*sq+b[2]) * sq+b[1]) * sq+b[0]) * sq+1)); + return (inp1 * (((a[3]*sq+a[2]) * sq+a[1]) * sq+a[0]) / ((((b[3]*sq+b[2]) * sq+b[1]) * sq+b[0]) * sq+1)); //Inverse error formula } else if ((inp1 > 0.7) && (inp1 < 1)) { double z = sqrt(-log((1-inp1)/2)); - return ((((c[3]*z+c[2]) * z+c[1]) * z+c[0]) / ((d[1]*z+d[0]) * z+1)); + return ((((c[3]*z+c[2]) * z+c[1]) * z+c[0]) / ((d[1]*z+d[0]) * z+1)); //Inverse error formula } else if ((inp1 > -1) && (inp1 < 0.7)) { double z = sqrt(-log((1+inp1)/2)); - return (-(((c[3]*z+c[2]) * z+c[1]) * z+c[0]) / ((d[1]*z+d[0]) * z+1)); + return (-(((c[3]*z+c[2]) * z+c[1]) * z+c[0]) / ((d[1]*z+d[0]) * z+1)); //Inverse error formula } } diff --git a/src/c/specialFunctions/erfinv/serfinva.c b/src/c/specialFunctions/erfinv/serfinva.c index 56e47c2a..3a14f3c8 100644 --- a/src/c/specialFunctions/erfinv/serfinva.c +++ b/src/c/specialFunctions/erfinv/serfinva.c @@ -19,7 +19,7 @@ void serfinva(float* inp1, int sizer, int sizec,float* out) { for (int i = 0; i < sizer*sizec; i++) { - out[i] = derfinvs(inp1[i]); + out[i] = serfinvs(inp1[i]); } } diff --git a/src/c/specialFunctions/erfinv/serfinvs.c b/src/c/specialFunctions/erfinv/serfinvs.c index 2d97ef7b..5436fe39 100644 --- a/src/c/specialFunctions/erfinv/serfinvs.c +++ b/src/c/specialFunctions/erfinv/serfinvs.c @@ -19,10 +19,10 @@ float serfinvs (float inp1) { - float a[] = {0.88622692374517353,-1.6601283962374516,0.92661860147244357,-0.14110320437680104}; - float b[] = {-2.13505380615258078,1.46060340345661088,-0.33198239813321595,0.01197270616590528}; - float c[] = {-1.994216456587148,-1.87267416351196,3.60874665878559364,1.82365845766309853}; - float d[] = {3.74146294065960872,1.81848952562894617}; + float a[] = {0.88622692374517353,-1.6601283962374516,0.92661860147244357,-0.14110320437680104}; //Coefficients for the formula to calculate inverse error + float b[] = {-2.13505380615258078,1.46060340345661088,-0.33198239813321595,0.01197270616590528}; //Coefficients for the formula to calculate inverse error + float c[] = {-1.994216456587148,-1.87267416351196,3.60874665878559364,1.82365845766309853}; //Coefficients for the formula to calculate inverse error + float d[] = {3.74146294065960872,1.81848952562894617}; //Coefficients for the formula to calculate inverse error if ((inp1 > 1) || (inp1 < -1)) { @@ -32,19 +32,19 @@ float serfinvs (float inp1) if ((inp1 >= -0.7) && (inp1 <= 0.7)) { float sq = inp1 * inp1; - return (inp1 * (((a[3]*sq+a[2]) * sq+a[1]) * sq+a[0]) / ((((b[3]*sq+b[2]) * sq+b[1]) * sq+b[0]) * sq+1)); + return (inp1 * (((a[3]*sq+a[2]) * sq+a[1]) * sq+a[0]) / ((((b[3]*sq+b[2]) * sq+b[1]) * sq+b[0]) * sq+1)); //Inverse error formula } else if ((inp1 > 0.7) && (inp1 < 1)) { float z = sqrt(-log((1-inp1)/2)); - return ((((c[3]*z+c[2]) * z+c[1]) * z+c[0]) / ((d[1]*z+d[0]) * z+1)); + return ((((c[3]*z+c[2]) * z+c[1]) * z+c[0]) / ((d[1]*z+d[0]) * z+1)); //Inverse error formula } else if ((inp1 > -1) && (inp1 < 0.7)) { float z = sqrt(-log((1+inp1)/2)); - return (-(((c[3]*z+c[2]) * z+c[1]) * z+c[0]) / ((d[1]*z+d[0]) * z+1)); + return (-(((c[3]*z+c[2]) * z+c[1]) * z+c[0]) / ((d[1]*z+d[0]) * z+1)); //Inverse error formula } } |