diff --git a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/Cauchy.java b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/Cauchy.java index 29452d13c149ec4e743c597ffc7a99f6c42508fa..dfc539f914efc2ecc2dc7af0524b728edadbe1a6 100644 --- a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/Cauchy.java +++ b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/Cauchy.java @@ -29,7 +29,7 @@ public final class Cauchy { @Override public double execute(double location, double scale, RandomNumberProvider rand) { if (Double.isNaN(location) || !Double.isFinite(scale) || scale < 0) { - return RMath.mlError(); + return RMathError.defaultError(); } if (scale == 0. || !Double.isFinite(location)) { return location; @@ -48,7 +48,7 @@ public final class Cauchy { return x + location + scale; } if (scale <= 0) { - return RMath.mlError(); + return RMathError.defaultError(); } y = (x - location) / scale; @@ -64,12 +64,12 @@ public final class Cauchy { } if (scale <= 0) { - return RMath.mlError(); + return RMathError.defaultError(); } double x2 = (x - location) / scale; if (Double.isNaN(x2)) { - return RMath.mlError(); + return RMathError.defaultError(); } if (!Double.isFinite(x2)) { @@ -116,7 +116,7 @@ public final class Cauchy { if (scale == 0) { return location; } - return RMath.mlError(); + return RMathError.defaultError(); } boolean lowerTail = lowerTailIn; diff --git a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/Chisq.java b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/Chisq.java index 62205497a7d92a5001454b1052b948a90fd643b7..45042cb0493b22e9a7acb3e26fe87018b9456cb6 100644 --- a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/Chisq.java +++ b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/Chisq.java @@ -49,7 +49,7 @@ public final class Chisq { public static final class RChisq extends RandFunction1_Double { public static double rchisq(double df, RandomNumberProvider rand) { if (!Double.isFinite(df) || df < 0.0) { - return RMath.mlError(); + return RMathError.defaultError(); } return new RGamma().execute(df / 2.0, 2.0, rand); } diff --git a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/DBeta.java b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/DBeta.java index a6a5a767d9e71e9bf4b8f8baa772bdaaf1124178..d7f3839013c0a57016716592c3618467114164cd 100644 --- a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/DBeta.java +++ b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/DBeta.java @@ -25,7 +25,7 @@ public class DBeta implements Function3_1 { } if (a < 0 || b < 0) { - return RMath.mlError(); + return RMathError.defaultError(); } if (x < 0 || x > 1) { return (DPQ.rd0(log)); diff --git a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/DNorm.java b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/DNorm.java index 5f36543a93f2868aec1cde3d6b00336312769166..bdccc0beeb7c66a8ca335a843177f8784d989c83 100644 --- a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/DNorm.java +++ b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/DNorm.java @@ -28,10 +28,10 @@ public final class DNorm implements Function3_1 { if (!Double.isFinite(sigma)) { return DPQ.rd0(giveLog); } else if (!Double.isFinite(x) && mu == x) { - return RMath.mlError(); + return RMathError.defaultError(); } else if (sigma <= 0) { if (sigma < 0) { - return RMath.mlError(); + return RMathError.defaultError(); } return (x == mu) ? Double.POSITIVE_INFINITY : DPQ.rd0(giveLog); } diff --git a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/DPQ.java b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/DPQ.java index 80f2b7da79fae8b9dba58a506ca66decf600e235..1d2abb3cff6cce02b5cefa761619a343bd61a4cb 100644 --- a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/DPQ.java +++ b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/DPQ.java @@ -183,7 +183,7 @@ public final class DPQ { // R_Q_P01_check public static void rqp01check(double p, boolean logP) throws EarlyReturn { if ((logP && p > 0) || (!logP && (p < 0 || p > 1))) { - throw new EarlyReturn(RMath.mlError()); + throw new EarlyReturn(RMathError.defaultError()); } } diff --git a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/DPois.java b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/DPois.java index c60b2f0bd5a45c0635872a019a956b6b54763e2e..bc14734a766afbf46ea03e5df58082a6f4701d47 100644 --- a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/DPois.java +++ b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/DPois.java @@ -25,7 +25,7 @@ public final class DPois implements Function2_1 { return x + lambda; } if (lambda < 0) { - return RMath.mlError(); + return RMathError.defaultError(); } try { diff --git a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/Df.java b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/Df.java index ded5ed50571f78b97300e4c76b7d0cdab74cb34c..90d58c8260899f869da8eaac02f191aff3660c80 100644 --- a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/Df.java +++ b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/Df.java @@ -30,7 +30,7 @@ public final class Df implements Function3_1 { } if (m <= 0 || n <= 0) { - return RMath.mlError(); + return RMathError.defaultError(); } if (x < 0.) { return DPQ.rd0(giveLog); diff --git a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/Dt.java b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/Dt.java index 62245897573ddf9e784b89fd9b97acd1d21fa249..7ae62d4958a193eee729c85463648881b25ae187 100644 --- a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/Dt.java +++ b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/Dt.java @@ -29,7 +29,7 @@ public final class Dt implements Function2_1 { } if (n <= 0) { - return RMath.mlError(); + return RMathError.defaultError(); } if (!Double.isFinite(x)) { diff --git a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/Exp.java b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/Exp.java index e2cdac1583938382aa95390c34c6e4d0411515c2..76df1c61e95011c8b3b089db0dbb1b7852061cb6 100644 --- a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/Exp.java +++ b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/Exp.java @@ -31,7 +31,7 @@ public final class Exp { } if (scale <= 0.0) { - return RMath.mlError(); + return RMathError.defaultError(); } if (x < 0.) { @@ -45,7 +45,7 @@ public final class Exp { @Override public double execute(double scale, RandomNumberProvider rand) { if (!Double.isFinite(scale) || scale <= 0.0) { - return scale == 0. ? 0. : RMath.mlError(); + return scale == 0. ? 0. : RMathError.defaultError(); } return scale * rand.expRand(); } @@ -58,7 +58,7 @@ public final class Exp { return xIn + scale; } if (scale < 0) { - return RMath.mlError(); + return RMathError.defaultError(); } if (xIn <= 0.) { @@ -79,7 +79,7 @@ public final class Exp { } if (scale < 0) { - return RMath.mlError(); + return RMathError.defaultError(); } try { diff --git a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/GammaFunctions.java b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/GammaFunctions.java index 64c88be84b843df8f5860c5804537cffe98a729a..a4c8919161dc0f5710ab2c3850d66b2a044ffb14 100644 --- a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/GammaFunctions.java +++ b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/GammaFunctions.java @@ -1231,7 +1231,7 @@ public abstract class GammaFunctions { return localX + alph + scale; } if (alph < 0. || scale <= 0.) { - return RMath.mlError(); + return RMathError.defaultError(); } localX /= scale; if (Double.isNaN(localX)) { /* eg. original x = scale = +Inf */ @@ -1282,7 +1282,7 @@ public abstract class GammaFunctions { int j; if (!RRuntime.isFinite(x) || !RRuntime.isFinite(np) || np == 0.0) { - return RMath.mlError(); + return RMathError.defaultError(); } if (Math.abs(x - np) < 0.1 * (x + np)) { @@ -1320,7 +1320,7 @@ public abstract class GammaFunctions { } if (sigma <= 0) { if (sigma < 0) { - return RMath.mlError(); + return RMathError.defaultError(); } /* sigma == 0 */ return (localX == mu) ? Double.POSITIVE_INFINITY : rd0(giveLog); @@ -1344,7 +1344,7 @@ public abstract class GammaFunctions { return x + shape + scale; } if (shape < 0 || scale <= 0) { - return RMath.mlError(); + return RMathError.defaultError(); } if (x < 0) { return rd0(giveLog); @@ -1393,7 +1393,7 @@ public abstract class GammaFunctions { } if (sigma <= 0) { if (sigma < 0) { - return RMath.mlError(); + return RMathError.defaultError(); } /* sigma = 0 : */ return (localX < mu) ? rdt0(lowerTail, logp) : rdt1(lowerTail, logp); diff --git a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/Geom.java b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/Geom.java index a01c809ff41a1f05c90d102784cf48b3c0b36356..03670cdb79897341def27dee5eaa389a5af7aa19 100644 --- a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/Geom.java +++ b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/Geom.java @@ -44,7 +44,7 @@ public final class Geom { @Override public double evaluate(double p, double prob, boolean lowerTail, boolean logP) { if (prob <= 0 || prob > 1) { - return RMath.mlError(); + return RMathError.defaultError(); } try { @@ -73,7 +73,7 @@ public final class Geom { return x + p; } if (p <= 0 || p > 1) { - return RMath.mlError(); + return RMathError.defaultError(); } try { @@ -98,7 +98,7 @@ public final class Geom { return xIn + p; } if (p <= 0 || p > 1) { - return RMath.mlError(); + return RMathError.defaultError(); } if (xIn < 0.) { @@ -126,7 +126,7 @@ public final class Geom { @Override public double execute(double p, RandomNumberProvider rand) { if (!Double.isFinite(p) || p <= 0 || p > 1) { - return RMath.mlError(); + return RMathError.defaultError(); } return RPois.rpois(rand.expRand() * ((1 - p) / p), rand); } diff --git a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/LBeta.java b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/LBeta.java index 8f997c3f586187da864b6cb32346d7ea03826c01..c9a23be80b668c2ff886cb970297819566ec8440 100644 --- a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/LBeta.java +++ b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/LBeta.java @@ -38,7 +38,7 @@ public final class LBeta { /* both arguments must be >= 0 */ if (p < 0) { - return RMath.mlError(); + return RMathError.defaultError(); } else if (p == 0) { return Double.POSITIVE_INFINITY; } else if (!Double.isFinite(q)) { /* q == +Inf */ diff --git a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/LogNormal.java b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/LogNormal.java index b95f76cf446c1a27b23bca81504db510a9c110ef..9384ad65764f5da59ad03f14d87e0b8ba1368d1c 100644 --- a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/LogNormal.java +++ b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/LogNormal.java @@ -29,7 +29,7 @@ public final class LogNormal { @Override public double execute(double meanlog, double sdlog, RandomNumberProvider rand) { if (Double.isNaN(meanlog) || !Double.isFinite(sdlog) || sdlog < 0.) { - return RMath.mlError(); + return RMathError.defaultError(); } return Math.exp(rnorm.execute(meanlog, sdlog, rand)); } @@ -43,7 +43,7 @@ public final class LogNormal { } if (sdlog <= 0) { if (sdlog < 0) { - return RMath.mlError(); + return RMathError.defaultError(); } // sdlog == 0 : return (Math.log(x) == meanlog) ? Double.POSITIVE_INFINITY : DPQ.rd0(giveLog); @@ -84,7 +84,7 @@ public final class LogNormal { return x + meanlog + sdlog; } if (sdlog < 0) { - return RMath.mlError(); + return RMathError.defaultError(); } if (x > 0) { return pnorm.evaluate(Math.log(x), meanlog, sdlog, lowerTail, logP); diff --git a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/Logis.java b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/Logis.java index 45328c469331798c9b31b771a18ccb2fa49c477d..a6bc1963fc21cd4d007e14b6d1d66e7f815e5985 100644 --- a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/Logis.java +++ b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/Logis.java @@ -33,7 +33,7 @@ public final class Logis { return x + location + scale; } if (scale <= 0.0) { - return RMath.mlError(); + return RMathError.defaultError(); } x = TOMS708.fabs((x - location) / scale); @@ -57,7 +57,7 @@ public final class Logis { } if (scale < 0.) { - return RMath.mlError(); + return RMathError.defaultError(); } if (scale == 0.) { return location; @@ -85,12 +85,12 @@ public final class Logis { return x + location + scale; } if (scale <= 0.0) { - return RMath.mlError(); + return RMathError.defaultError(); } x = (x - location) / scale; if (Double.isNaN(x)) { - return RMath.mlError(); + return RMathError.defaultError(); } try { @@ -123,7 +123,7 @@ public final class Logis { @Override public double execute(double location, double scale, RandomNumberProvider rand) { if (Double.isNaN(location) || !Double.isFinite(scale)) { - return RMath.mlError(); + return RMathError.defaultError(); } if (scale == 0. || !Double.isFinite(location)) { diff --git a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/PGamma.java b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/PGamma.java index cdb6e310d755ce9b7fcad35a2bd878e2edfa2a85..16ab8bd2e3d4479bba0dedb8b614503f661e320a 100644 --- a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/PGamma.java +++ b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/PGamma.java @@ -23,7 +23,7 @@ public class PGamma implements Function3_2 { return xIn + alph + scale; } if (alph < 0 || scale < 0) { - return RMath.mlError(); + return RMathError.defaultError(); } double x = xIn / scale; diff --git a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/PPois.java b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/PPois.java index cb67510db3cd5d1c41278662627c9583032cf25f..1d15fa313533e6f9ffe2d39751405c0c3b4dbe3e 100644 --- a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/PPois.java +++ b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/PPois.java @@ -19,7 +19,7 @@ public class PPois implements Function2_2 { @Override public double evaluate(double x, double lambda, boolean lowerTail, boolean logP) { if (Double.isNaN(x) || Double.isNaN(lambda) || lambda < 0.) { - return RMath.mlError(); + return RMathError.defaultError(); } if (x < 0) { return DPQ.rdt0(lowerTail, logP); diff --git a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/Pbinom.java b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/Pbinom.java index e61ab3cb1f1be4c0c18a91c878191db9aebc6382..f0b796a8845cbe61675befeedf7e13c6dc026cc1 100644 --- a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/Pbinom.java +++ b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/Pbinom.java @@ -34,7 +34,7 @@ public final class Pbinom implements StatsFunctions.Function3_2 { if (DPQ.nonint(size)) { nanProfile.enter(); DPQ.nointCheckWarning(size, "n"); - return RMath.mlError(); + return RMathError.defaultError(); } size = RMath.forceint(size); /* PR#8560: n=0 is a valid value */ diff --git a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/Pt.java b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/Pt.java index 20373ea17dd2e82f10ee5acf05d595feb4e55b8f..fd2e60684a0cef5f1b32e4445056eabe88f48251 100644 --- a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/Pt.java +++ b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/Pt.java @@ -34,7 +34,7 @@ public class Pt implements Function2_2 { } if (n <= 0.0) { - return RMath.mlError(); + return RMathError.defaultError(); } if (!Double.isFinite(x)) { diff --git a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/QBeta.java b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/QBeta.java index bd34ff88bacd2ba9cb16af703816218dc6986605..c704b4b59411031634a7d966c5ed60de81e2d7fd 100644 --- a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/QBeta.java +++ b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/QBeta.java @@ -31,7 +31,7 @@ import static com.oracle.truffle.r.library.stats.MathConstants.M_LN2; import static com.oracle.truffle.r.library.stats.Pbeta.pbetaRaw; import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary; -import com.oracle.truffle.r.library.stats.RMath.MLError; +import com.oracle.truffle.r.library.stats.RMathError.MLError; import com.oracle.truffle.r.library.stats.StatsFunctions.Function3_2; import com.oracle.truffle.r.runtime.RError.Message; @@ -48,7 +48,7 @@ public final class QBeta implements Function3_2 { } if (p < 0. || q < 0.) { - return RMath.mlError(); + return RMathError.defaultError(); } // allowing p==0 and q==0 <==> treat as one- or two-point mass @@ -158,7 +158,7 @@ public final class QBeta implements Function3_2 { alpha, p, q, log_p, "alpha not in ", log_p ? "[-Inf, 0]" : "[0,1]"); // ML_ERR_return_NAN : - RMath.mlError(MLError.DOMAIN, ""); + RMathError.error(MLError.DOMAIN, ""); qb[0] = qb[1] = ML_NAN; return; } @@ -509,7 +509,7 @@ public final class QBeta implements Function3_2 { // -Inf // is ok if // (log_p) - RMath.mlError(MLError.DOMAIN, ""); + RMathError.error(MLError.DOMAIN, ""); qb[0] = qb[1] = ML_NAN; return; } @@ -561,7 +561,7 @@ public final class QBeta implements Function3_2 { /*-- NOT converged: Iteration count --*/ warned = true; - RMath.mlError(MLError.PRECISION, "qbeta"); + RMathError.error(MLError.PRECISION, "qbeta"); converged(log_p, qb); } @@ -586,7 +586,7 @@ public final class QBeta implements Function3_2 { // warn pbetaRaw(DBL_1__eps, // = 1 - eps pp, qq, true, true) > la + 2)) { - RMath.mlWarning(Message.QBETA_ACURACY_WARNING, (log_ ? ", log_" : ""), Math.abs(y - (log_ ? la : a))); + RMathError.warning(Message.QBETA_ACURACY_WARNING, (log_ ? ", log_" : ""), Math.abs(y - (log_ ? la : a))); } } @@ -600,7 +600,7 @@ public final class QBeta implements Function3_2 { private void finalStep(boolean log_p, double[] qb) { if (give_log_q) { // ==> use_log_x , too if (!use_log_x) { // (see if claim above is true) - RMath.mlWarning(Message.GENERIC, + RMathError.warning(Message.GENERIC, "qbeta() L_return, u_n=%g; give_log_q=true but use_log_x=false -- please report!", u_n); } diff --git a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/QHyper.java b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/QHyper.java index e0641de73b8281b181aae6490a781256c1a96b47..b9bcbaca28baab41d7680b2fa666ba7d062a472c 100644 --- a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/QHyper.java +++ b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/QHyper.java @@ -26,7 +26,7 @@ public final class QHyper { return pIn + nrIn + nbIn + nIn; } if (!Double.isFinite(pIn) || !Double.isFinite(nrIn) || !Double.isFinite(nbIn) || !Double.isFinite(nIn)) { - return RMath.mlError(); + return RMathError.defaultError(); } double nr = forceint(nrIn); @@ -34,7 +34,7 @@ public final class QHyper { double capN = nr + nb; double n = forceint(nIn); if (nr < 0 || nb < 0 || n < 0 || n > capN) { - return RMath.mlError(); + return RMathError.defaultError(); } /* diff --git a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/QPois.java b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/QPois.java index 9803bad38d700b70793e0902bf7337a0729aa209..34cbad5586728c66abb3153db046256b3f62d13d 100644 --- a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/QPois.java +++ b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/QPois.java @@ -26,10 +26,10 @@ public class QPois implements Function2_2 { return p + lambda; } if (!Double.isFinite(lambda)) { - return RMath.mlError(); + return RMathError.defaultError(); } if (lambda < 0) { - return RMath.mlError(); + return RMathError.defaultError(); } if (lambda == 0) { return 0; diff --git a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/Qf.java b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/Qf.java index 18488ebd3a267a99aeab1e5b8e81f2bcfd9063b5..4c0274673717603470b161e05700b6789d0bfeaa 100644 --- a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/Qf.java +++ b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/Qf.java @@ -28,7 +28,7 @@ public final class Qf implements Function3_2 { } if (df1 <= 0. || df2 <= 0.) { - return RMath.mlError(); + return RMathError.defaultError(); } try { diff --git a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/Qt.java b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/Qt.java index 5e97ff315f45864045f45f6d74cb728fc325ef93..2c4fd0191a3882cb62a484eac535e06cc20411e4 100644 --- a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/Qt.java +++ b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/Qt.java @@ -47,7 +47,7 @@ public class Qt implements Function2_2 { } if (ndf <= 0) { - return RMath.mlError(); + return RMathError.defaultError(); } if (ndf < 1) { /* based on qnt */ @@ -89,7 +89,7 @@ public class Qt implements Function2_2 { } while ((ux - lx) / Math.abs(nx) > accu && ++iter < 1000); if (iter >= 1000) { - return RMath.mlError(); + return RMathError.defaultError(); } return 0.5 * (lx + ux); diff --git a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/RBeta.java b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/RBeta.java index 714014b84e2fb45938f67394e8586fb4e360fee2..7fab48d93886d5aec51fc209396f7eeef3442128 100644 --- a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/RBeta.java +++ b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/RBeta.java @@ -27,7 +27,7 @@ public final class RBeta extends RandFunction2_Double { @Override public double execute(double aa, double bb, RandomNumberProvider rand) { if (Double.isNaN(aa) || Double.isNaN(bb) || aa < 0. || bb < 0.) { - return RMath.mlError(); + return RMathError.defaultError(); } if (!Double.isFinite(aa) && !Double.isFinite(bb)) { // a = b = Inf : all mass at 1/2 return 0.5; diff --git a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/RGamma.java b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/RGamma.java index c5b40e24c48e85810274f072acbc2304e48147e8..8d344b1625e7e68963c496047d185e8fd2603b6b 100644 --- a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/RGamma.java +++ b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/RGamma.java @@ -66,13 +66,13 @@ public class RGamma extends RandFunction2_Double { double retVal; if (Double.isNaN(a) || Double.isNaN(scale)) { - return RMath.mlError(); + return RMathError.defaultError(); } if (a <= 0.0 || scale <= 0.0) { if (scale == 0. || a == 0.) { return 0.; } - return RMath.mlError(); + return RMathError.defaultError(); } if (!Double.isFinite(a) || !Double.isFinite(scale)) { return Double.POSITIVE_INFINITY; diff --git a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/RHyper.java b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/RHyper.java index 197316d6df83b9e9bd01f6287742e33a742ad5cd..a233c0c549c1faa414ec875030ad7d5d56845c0b 100644 --- a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/RHyper.java +++ b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/RHyper.java @@ -95,7 +95,7 @@ public final class RHyper extends RandFunction3_Double { /* check parameter validity */ if (!Double.isFinite(nn1in) || !Double.isFinite(nn2in) || !Double.isFinite(kkin)) { - return RMath.mlError(); + return RMathError.defaultError(); } double nn1int = forceint(nn1in); @@ -103,7 +103,7 @@ public final class RHyper extends RandFunction3_Double { double kkint = forceint(kkin); if (nn1int < 0 || nn2int < 0 || kkint < 0 || kkint > nn1int + nn2int) { - return RMath.mlError(); + return RMathError.defaultError(); } if (nn1int >= Integer.MAX_VALUE || nn2int >= Integer.MAX_VALUE || kkint >= Integer.MAX_VALUE) { /* @@ -227,7 +227,7 @@ public final class RHyper extends RandFunction3_Double { nUv++; if (nUv >= 10000) { RError.warning(RError.SHOW_CALLER, Message.GENERIC, String.format("rhyper() branch III: giving up after %d rejections", nUv)); - return RMath.mlError(); + return RMathError.defaultError(); } if (u < p1) { /* rectangular region */ diff --git a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/RMath.java b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/RMath.java index 644dff67b50c3d46d7608bb10c5401f973a6d665..a7f1cd01da654d6c683b5f33d355995655b0e976 100644 --- a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/RMath.java +++ b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/RMath.java @@ -16,43 +16,19 @@ import static com.oracle.truffle.r.library.stats.LBeta.lbeta; import com.oracle.truffle.api.CompilerDirectives.CompilationFinal; import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary; -import com.oracle.truffle.r.runtime.RError; import com.oracle.truffle.r.runtime.RRuntime; /** * Encapsulates functions to be found in Rmath.h or in nmath directory in GnuR except for random - * distribution related functions, which usually have their own files. + * distribution related functions, which usually have their own files, and other well defined groups + * of functions/macros referenced below. * * @see DPQ + * @see RMathError + * @see MathConstants */ public class RMath { - public enum MLError { - DOMAIN, - RANGE, - NOCONV, - PRECISION, - UNDERFLOW - } - - /** - * Corresponds to macro {@code ML_ERR_return_NAN} in GnuR. - */ - public static double mlError() { - return mlError(MLError.DOMAIN, ""); - } - - /** - * Corresponds to macro {@code ML_ERR} in GnuR. TODO: raise corresponding warning - */ - public static double mlError(@SuppressWarnings("unused") MLError error, @SuppressWarnings("unused") String message) { - return Double.NaN; - } - - public static void mlWarning(RError.Message message, Object... args) { - RError.warning(null, message, args); - } - public static boolean mlValid(double d) { return !Double.isNaN(d); } @@ -99,7 +75,7 @@ public class RMath { return x; } if (!Double.isFinite(x)) { - return mlError(); + return RMathError.defaultError(); } double x2 = fmod(x, 1.); // tan(pi(x + k)) == tan(pi x) for all integer k diff --git a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/RMathError.java b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/RMathError.java new file mode 100644 index 0000000000000000000000000000000000000000..31ab7145dccb5391f74d7fc05f509526ba73d2e7 --- /dev/null +++ b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/RMathError.java @@ -0,0 +1,70 @@ +/* + * This material is distributed under the GNU General Public License + * Version 2. You may review the terms of this license at + * http://www.gnu.org/licenses/gpl-2.0.html + * + * Copyright (c) 1998-2016, The R Core Team + * Copyright (c) 2016, Oracle and/or its affiliates + * + * All rights reserved. + */ +package com.oracle.truffle.r.library.stats; + +import com.oracle.truffle.r.runtime.RError; +import com.oracle.truffle.r.runtime.RError.Message; + +/** + * Encapsulates functionality related to errors/warnings reporting in FastR port of R's math + * library. Contains methods that correspond to various macros such as {@code ML_ERROR} or + * {@code ML_ERR_return_NAN}. + */ +public final class RMathError { + private RMathError() { + // only static members + } + + public enum MLError { + DOMAIN(Message.GENERIC), + RANGE(Message.ML_ERROR_RANGE), + NOCONV(Message.ML_ERROR_NOCONV), + PRECISION(Message.ML_ERROR_PRECISION), + UNDERFLOW(Message.ML_ERROR_UNDERFLOW); + + private final RError.Message message; + + MLError(Message message) { + this.message = message; + } + + public void warning(String arg) { + RError.warning(RError.SHOW_CALLER, message, arg); + } + } + + /** + * Corresponds to macro {@code ML_ERR_return_NAN} in GnuR. We also do not report the default + * warning directly and let the caller handle the {@code NaN} value. + */ + public static double defaultError() { + return Double.NaN; + } + + /** + * Corresponds to macro {@code ML_ERR} in GnuR. As long as the error is not the default + * {@link MLError#DOMAIN} a warning is reported by this method, otherwise the caller should + * return {@code NaN}, which should be handled by the caller's caller. + */ + public static double error(@SuppressWarnings("unused") MLError error, @SuppressWarnings("unused") String messageArg) { + if (error != MLError.DOMAIN) { + error.warning(messageArg); + } + return Double.NaN; + } + + /** + * Corresponds to macros {@code MATHLIB_WARNINGX} in GnuR. + */ + public static void warning(RError.Message message, Object... args) { + RError.warning(RError.SHOW_CALLER, message, args); + } +} diff --git a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/RNbinomMu.java b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/RNbinomMu.java index cfbb7798c6594f952c5b6f7ce9a5935a1c6cb800..cf5f8b04016170b0b45f36962c4588980edc39c5 100644 --- a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/RNbinomMu.java +++ b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/RNbinomMu.java @@ -20,7 +20,7 @@ public final class RNbinomMu extends RandFunction2_Double { @Override public double execute(double initialSize, double mu, RandomNumberProvider rand) { if (!Double.isFinite(mu) || Double.isNaN(initialSize) || initialSize <= 0 || mu < 0) { - return RMath.mlError(); + return RMathError.defaultError(); } double size = Double.isFinite(initialSize) ? initialSize : Double.MAX_VALUE / 2.; return (mu == 0) ? 0 : RPois.rpois(rgamma.execute(size, mu / size, rand), rand); diff --git a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/RNchisq.java b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/RNchisq.java index 12dc037c2c18aae629e67fe502c97dfe86cb35e3..f0d523cf14d7fd2bccbac019ffeb3d1dfe75a0b0 100644 --- a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/RNchisq.java +++ b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/RNchisq.java @@ -22,7 +22,7 @@ public final class RNchisq extends RandFunction2_Double { @Override public double execute(double df, double lambda, RandomNumberProvider rand) { if (!Double.isFinite(df) || !Double.isFinite(lambda) || df < 0. || lambda < 0.) { - return RMath.mlError(); + return RMathError.defaultError(); } if (lambda == 0.) { diff --git a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/RPois.java b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/RPois.java index 420a81dc44c6cbcef837c9bec66befe439a58145..8ed6d66484b423f7b4c830ec6660764b4c9bb56f 100644 --- a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/RPois.java +++ b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/RPois.java @@ -80,7 +80,7 @@ public final class RPois extends RandFunction1_Double { boolean newBigMu = false; if (!Double.isFinite(mu) || mu < 0) { - return RMath.mlError(); + return RMathError.defaultError(); } if (mu <= 0.) { diff --git a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/RWeibull.java b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/RWeibull.java index 638e406f5404fb7cf7613e122f0a31b2ab5b5a42..78d9e38318d59cea2ea982a18ea98f573fa1376d 100644 --- a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/RWeibull.java +++ b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/RWeibull.java @@ -18,7 +18,7 @@ public final class RWeibull extends RandFunction2_Double { @Override public double execute(double shape, double scale, RandomNumberProvider rand) { if (!Double.isFinite(shape) || !Double.isFinite(scale) || shape <= 0. || scale <= 0.) { - return scale == 0. ? 0. : RMath.mlError(); + return scale == 0. ? 0. : RMathError.defaultError(); } return scale * Math.pow(-Math.log(rand.unifRand()), 1.0 / shape); diff --git a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/Rf.java b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/Rf.java index be70cde936be8c393b14a9743bdce13d68366585..0c1643b0244f60259de6106d60cd0ab1056d01ed 100644 --- a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/Rf.java +++ b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/Rf.java @@ -18,7 +18,7 @@ public final class Rf extends RandFunction2_Double { @Override public double execute(double n1, double n2, RandomNumberProvider rand) { if (Double.isNaN(n1) || Double.isNaN(n2) || n1 <= 0. || n2 <= 0.) { - return RMath.mlError(); + return RMathError.defaultError(); } double v1; diff --git a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/Rnorm.java b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/Rnorm.java index be60d6863d13ddd4bf96b974ef6a97b40ccfe4d4..5cdb828e5849d72ec08c661d5e4755a7965294e7 100644 --- a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/Rnorm.java +++ b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/Rnorm.java @@ -29,7 +29,7 @@ public final class Rnorm extends RandFunction2_Double { double mu = muValueProfile.profile(muIn); if (Double.isNaN(mu) || !Double.isFinite(sigma) || sigma < 0.) { errorProfile.enter(); - return RMath.mlError(); + return RMathError.defaultError(); } if (zeroSigmaProfile.profile(sigma == 0. || !Double.isFinite(mu))) { return mu; /* includes mu = +/- Inf with finite sigma */ diff --git a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/Rt.java b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/Rt.java index a319beed65cf78521fccb36b2b81070fbce797e3..3804a509615dbb609969e00f40a82cc5f19d9ddc 100644 --- a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/Rt.java +++ b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/Rt.java @@ -20,7 +20,7 @@ public final class Rt extends RandFunction1_Double { @Override public double execute(double df, RandomNumberProvider rand) { if (Double.isNaN(df) || df <= 0.0) { - return RMath.mlError(); + return RMathError.defaultError(); } if (!Double.isFinite(df)) { diff --git a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/Signrank.java b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/Signrank.java index f13e125ea9afa203be520a6b20d3622e74612d13..662ca852559619924ca46e1f35232f451d3089b0 100644 --- a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/Signrank.java +++ b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/Signrank.java @@ -30,12 +30,12 @@ public final class Signrank { if (Double.isInfinite(nIn)) { // In GnuR these "results" seem to be generated due to the behaviour of R_forceint, // and the "(int) n" cast, which ends up casting +/-infinity to integer... - return nIn < 0 ? RMath.mlError() : 0; + return nIn < 0 ? RMathError.defaultError() : 0; } double n = forceint(nIn); if (n < 0) { - return RMath.mlError(); + return RMathError.defaultError(); } if (n == 0) { diff --git a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/Unif.java b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/Unif.java index 3110d7e227f8d096abbb6f4c72433963c0602524..b708907b8ec250a468ea69465e2269a46144979f 100644 --- a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/Unif.java +++ b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/Unif.java @@ -38,7 +38,7 @@ public final class Unif { double max = maxValueProfile.profile(maxIn); if (!RRuntime.isFinite(min) || !RRuntime.isFinite(max) || max < min) { errorProfile.enter(); - return RMath.mlError(); + return RMathError.defaultError(); } if (minEqualsMaxProfile.profile(min == max)) { return min; @@ -54,7 +54,7 @@ public final class Unif { return x + min + max; } if (max < min || !Double.isFinite(min) || !Double.isFinite(max)) { - return RMath.mlError(); + return RMathError.defaultError(); } if (x >= max) { return DPQ.rdt1(lowerTail, logP); @@ -77,7 +77,7 @@ public final class Unif { return x + min + max; } if (max <= min) { - return RMath.mlError(); + return RMathError.defaultError(); } if (min <= x && x <= max) { return giveLog ? -Math.log(max - min) : 1. / (max - min); @@ -101,7 +101,7 @@ public final class Unif { } if (max < min || !Double.isFinite(min) || !Double.isFinite(max)) { - return RMath.mlError(); + return RMathError.defaultError(); } if (max == min) { diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/RError.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/RError.java index e61db9860abc7e1c0f104a9ab3636eca04da66f1..71a773f40370e557819700005a3f0f87291abb6f 100644 --- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/RError.java +++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/RError.java @@ -282,6 +282,11 @@ public final class RError extends RuntimeException { ITEMS_NOT_MULTIPLE("number of items read is not a multiple of the number of columns"), TRACEMEM_NOT_NULL("cannot trace NULL"), INPUT_MUST_BE_STRING("input must be a character string"), + // mathlib errors/warnings + ML_ERROR_RANGE("value out of range in '%s'"), + ML_ERROR_NOCONV("convergence failed in '%s'"), + ML_ERROR_PRECISION("full precision may not have been achieved in '%s'"), + ML_ERROR_UNDERFLOW("underflow occurred in '%s'"), // below: GNU R gives also expression for the argument NOT_FUNCTION("'%s' is not a function, character or symbol"), NOT_A_FUNCTION("'%s' is not a function"), diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/RErrorHandling.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/RErrorHandling.java index 4b5b757cc622462911f7785b5707fdea6293530a..ed629c5bf0c273f7355f60937823d5305c0b3194 100644 --- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/RErrorHandling.java +++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/RErrorHandling.java @@ -695,7 +695,7 @@ public class RErrorHandling { if (nWarnings < errorHandlingState.maxWarnings) { Utils.writeStderr(String.format("There were %d warnings (use warnings() to see them)", nWarnings), true); } else { - Utils.writeStderr(String.format("There were %d or more warnings (use warnings() to see the first %d)", nWarnings, errorHandlingState.maxWarnings), true); + Utils.writeStderr(String.format("There were %d or more warnings (use warnings() to see the first %d)", errorHandlingState.maxWarnings, errorHandlingState.maxWarnings), true); } } Object[] wData = new Object[nWarnings]; diff --git a/mx.fastr/copyrights/gnu_r.core.copyright.star.regex b/mx.fastr/copyrights/gnu_r.core.copyright.star.regex index e625a25f307693d9872191aad9ce88e5fab49ef1..b89f17651f1f7a735e95943483166542481ca401 100644 --- a/mx.fastr/copyrights/gnu_r.core.copyright.star.regex +++ b/mx.fastr/copyrights/gnu_r.core.copyright.star.regex @@ -1 +1 @@ -/\*\n \* This material is distributed under the GNU General Public License\n \* Version 2. You may review the terms of this license at\n \* http://www.gnu.org/licenses/gpl-2.0.html\n \*\n \* Copyright \(c\) (?:[1-2][09][0-9][0-9]--)?[1-2][09][0-9][0-9], The R Core Team\n \* Copyright \(c\) (?:(20[0-9][0-9]), )?(20[0-9][0-9]), Oracle and/or its affiliates\n \*\n \* All rights reserved.\n \*/\n.* \ No newline at end of file +/\*\n \* This material is distributed under the GNU General Public License\n \* Version 2. You may review the terms of this license at\n \* http://www.gnu.org/licenses/gpl-2.0.html\n \*\n \* Copyright \(c\) (?:[1-2][09][0-9][0-9]--?)?[1-2][09][0-9][0-9], The R Core Team\n \* Copyright \(c\) (?:(20[0-9][0-9]), )?(20[0-9][0-9]), Oracle and/or its affiliates\n \*\n \* All rights reserved.\n \*/\n.* diff --git a/mx.fastr/copyrights/overrides b/mx.fastr/copyrights/overrides index 3a48c15e4f5199e6512f64594c45572a37db05ee..f44ee24f908372ef50df860df5074e7a33b8643c 100644 --- a/mx.fastr/copyrights/overrides +++ b/mx.fastr/copyrights/overrides @@ -69,6 +69,7 @@ com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/SplineFuncti com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/StatsFunctions.java,gnu_r_gentleman_ihaka.copyright com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/RandGenerationFunctions.java,gnu_r_gentleman_ihaka.copyright com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/RMath.java,gnu_r_ihaka.copyright +com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/RMathError.java,gnu_r.core.copyright com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/LogNormal.java,gnu_r_ihaka.copyright com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/MathConstants.java,gnu_r_ihaka.copyright com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/TOMS708.java,gnu_r.copyright