diff --git a/Modules/_math.c b/Modules/_math.c
index b5d8b45..d5974e3 100644
--- a/Modules/_math.c
+++ b/Modules/_math.c
@@ -56,13 +56,13 @@
         if (Py_IS_INFINITY(x)) {
             return x+x;
         } else {
-            return log(x)+ln2;                  /* acosh(huge)=log(2x) */
+            return log(x)+ln2;          /* acosh(huge)=log(2x) */
         }
     }
     else if (x == 1.) {
-        return 0.0;                             /* acosh(1) = 0 */
+        return 0.0;                     /* acosh(1) = 0 */
     }
-    else if (x > 2.) {                          /* 2 < x < 2**28 */
+    else if (x > 2.) {                  /* 2 < x < 2**28 */
         double t = x*x;
         return log(2.0*x - 1.0 / (x + sqrt(t - 1.0)));
     }
@@ -94,7 +94,7 @@
         return x+x;
     }
     if (absx < two_pow_m28) {           /* |x| < 2**-28 */
-        return x;               /* return x inexact except 0 */
+        return x;                       /* return x inexact except 0 */
     }
     if (absx > two_pow_p28) {           /* |x| > 2**28 */
         w = log(absx)+ln2;
@@ -114,9 +114,9 @@
  * Method :
  *    1.Reduced x to positive by atanh(-x) = -atanh(x)
  *    2.For x>=0.5
- *                1           2x                          x
- *      atanh(x) = --- * log(1 + -------) = 0.5 * log1p(2 * --------)
- *                2          1 - x                    1 - x
+ *                  1              2x                          x
+ *      atanh(x) = --- * log(1 + -------) = 0.5 * log1p(2 * -------)
+ *                  2             1 - x                      1 - x
  *
  *      For x<0.5
  *      atanh(x) = 0.5*log1p(2x+2x*x/(1-x))
@@ -194,7 +194,7 @@
     /* For x small, we use the following approach.  Let y be the nearest float
        to 1+x, then
 
-      1+x = y * (1 - (y-1-x)/y)
+         1+x = y * (1 - (y-1-x)/y)
 
        so log(1+x) = log(y) + log(1-(y-1-x)/y).  Since (y-1-x)/y is tiny, the
        second term is well approximated by (y-1-x)/y.  If abs(x) >=
