diff --git a/src/main/java/org/apache/commons/math4/analysis/integration/gauss/GaussIntegratorFactory.java b/src/main/java/org/apache/commons/math4/analysis/integration/gauss/GaussIntegratorFactory.java
index 14a73ef..2504692 100644
--- a/src/main/java/org/apache/commons/math4/analysis/integration/gauss/GaussIntegratorFactory.java
+++ b/src/main/java/org/apache/commons/math4/analysis/integration/gauss/GaussIntegratorFactory.java
@@ -43,7 +43,7 @@
      * The call to the
      * {@link GaussIntegrator#integrate(org.apache.commons.math4.analysis.UnivariateFunction)
      * integrate} method will perform an integration on the interval
-     * \([0, +\infinity)\): the computed value is the improper integral of
+     * \([0, +\infty)\): the computed value is the improper integral of
      * \(e^{-x} f(x)\)
      * where \(f(x)\) is the function passed to the
      * {@link SymmetricGaussIntegrator#integrate(org.apache.commons.math4.analysis.UnivariateFunction)
@@ -131,7 +131,7 @@
      * The call to the
      * {@link SymmetricGaussIntegrator#integrate(org.apache.commons.math4.analysis.UnivariateFunction)
      * integrate} method will perform a weighted integration on the interval
-     * \([-\infinity, +\infinity]\): the computed value is the improper integral of
+     * \([-\infty, +\infty]\): the computed value is the improper integral of
      * \(e^{-x^2}f(x)\)
      * where \(f(x)\) is the function passed to the
      * {@link SymmetricGaussIntegrator#integrate(org.apache.commons.math4.analysis.UnivariateFunction)
diff --git a/src/main/java/org/apache/commons/math4/stat/descriptive/moment/Kurtosis.java b/src/main/java/org/apache/commons/math4/stat/descriptive/moment/Kurtosis.java
index 3046679..7218d75 100644
--- a/src/main/java/org/apache/commons/math4/stat/descriptive/moment/Kurtosis.java
+++ b/src/main/java/org/apache/commons/math4/stat/descriptive/moment/Kurtosis.java
@@ -143,7 +143,7 @@
         return moment.getN();
     }
 
-    /* UinvariateStatistic Approach  */
+    /* UnivariateStatistic Approach  */
 
     /**
      * Returns the kurtosis of the entries in the specified portion of the
diff --git a/src/main/java/org/apache/commons/math4/stat/descriptive/moment/SemiVariance.java b/src/main/java/org/apache/commons/math4/stat/descriptive/moment/SemiVariance.java
index 8d9ae1d..e490fb4 100644
--- a/src/main/java/org/apache/commons/math4/stat/descriptive/moment/SemiVariance.java
+++ b/src/main/java/org/apache/commons/math4/stat/descriptive/moment/SemiVariance.java
@@ -92,7 +92,7 @@
      * property and default (Downside) <code>varianceDirection</code> property.
      *
      * @param biasCorrected  setting for bias correction - true means
-     * bias will be corrected and is equivalent to using the non-argument
+     * bias will be corrected and is equivalent to using the "no arg"
      * constructor
      */
     public SemiVariance(final boolean biasCorrected) {
@@ -115,7 +115,7 @@
      * property and the specified <code>Direction</code> property.
      *
      * @param corrected  setting for bias correction - true means
-     * bias will be corrected and is equivalent to using the non-argument
+     * bias will be corrected and is equivalent to using the "no arg"
      * constructor
      *
      * @param direction  setting for the direction of the SemiVariance
diff --git a/src/main/java/org/apache/commons/math4/stat/descriptive/moment/Variance.java b/src/main/java/org/apache/commons/math4/stat/descriptive/moment/Variance.java
index 250cc0f..fcfb798 100644
--- a/src/main/java/org/apache/commons/math4/stat/descriptive/moment/Variance.java
+++ b/src/main/java/org/apache/commons/math4/stat/descriptive/moment/Variance.java
@@ -118,7 +118,7 @@
      * property.
      *
      * @param isBiasCorrected  setting for bias correction - true means
-     * bias will be corrected and is equivalent to using the non-argument
+     * bias will be corrected and is equivalent to using the "no arg"
      * constructor
      */
     public Variance(boolean isBiasCorrected) {
diff --git a/src/main/java/org/apache/commons/math4/stat/inference/KolmogorovSmirnovTest.java b/src/main/java/org/apache/commons/math4/stat/inference/KolmogorovSmirnovTest.java
index d7a284d..52e28ab 100644
--- a/src/main/java/org/apache/commons/math4/stat/inference/KolmogorovSmirnovTest.java
+++ b/src/main/java/org/apache/commons/math4/stat/inference/KolmogorovSmirnovTest.java
@@ -862,7 +862,7 @@
     }
 
     /**
-     * Computes \( 1 + 2 \sum_{i=1}^\infinity (-1)^i e^{-2 i^2 t^2} \) stopping when successive partial
+     * Computes \( 1 + 2 \sum_{i=1}^\infty (-1)^i e^{-2 i^2 t^2} \) stopping when successive partial
      * sums are within {@code tolerance} of one another, or when {@code maxIterations} partial sums
      * have been computed. If the sum does not converge before {@code maxIterations} iterations a
      * {@link TooManyIterationsException} is thrown.
@@ -951,7 +951,7 @@
      * {@link #kolmogorovSmirnovStatistic(double[], double[])} for the definition of \(D_{n,m}\).
      * <p>
      * Specifically, what is returned is \(1 - k(d \sqrt{mn / (m + n)})\) where \(k(t) = 1 + 2
-     * \sum_{i=1}^\infinity (-1)^i e^{-2 i^2 t^2}\). See {@link #ksSum(double, double, int)} for
+     * \sum_{i=1}^\infty (-1)^i e^{-2 i^2 t^2}\). See {@link #ksSum(double, double, int)} for
      * details on how convergence of the sum is determined.
      * </p>
      *
