diff --git a/include/random b/include/random
index 86663af..e925f6d 100644
--- a/include/random
+++ b/include/random
@@ -485,7 +485,7 @@
     basic_ostream<charT, traits>&
     operator<<(basic_ostream<charT, traits>& os,
                const uniform_int_distribution& x);
-    
+
     template <class charT, class traits>
     friend
     basic_istream<charT, traits>&
@@ -544,7 +544,7 @@
     basic_ostream<charT, traits>&
     operator<<(basic_ostream<charT, traits>& os,
                const uniform_real_distribution& x);
-    
+
     template <class charT, class traits>
     friend
     basic_istream<charT, traits>&
@@ -599,7 +599,7 @@
     basic_ostream<charT, traits>&
     operator<<(basic_ostream<charT, traits>& os,
                const bernoulli_distribution& x);
-    
+
     template <class charT, class traits>
     friend
     basic_istream<charT, traits>&
@@ -657,7 +657,7 @@
     basic_ostream<charT, traits>&
     operator<<(basic_ostream<charT, traits>& os,
                const binomial_distribution& x);
-    
+
     template <class charT, class traits>
     friend
     basic_istream<charT, traits>&
@@ -713,7 +713,7 @@
     basic_ostream<charT, traits>&
     operator<<(basic_ostream<charT, traits>& os,
                const geometric_distribution& x);
-    
+
     template <class charT, class traits>
     friend
     basic_istream<charT, traits>&
@@ -771,7 +771,7 @@
     basic_ostream<charT, traits>&
     operator<<(basic_ostream<charT, traits>& os,
                const negative_binomial_distribution& x);
-    
+
     template <class charT, class traits>
     friend
     basic_istream<charT, traits>&
@@ -827,7 +827,7 @@
     basic_ostream<charT, traits>&
     operator<<(basic_ostream<charT, traits>& os,
                const poisson_distribution& x);
-    
+
     template <class charT, class traits>
     friend
     basic_istream<charT, traits>&
@@ -883,7 +883,7 @@
     basic_ostream<charT, traits>&
     operator<<(basic_ostream<charT, traits>& os,
                const exponential_distribution& x);
-    
+
     template <class charT, class traits>
     friend
     basic_istream<charT, traits>&
@@ -941,7 +941,7 @@
     basic_ostream<charT, traits>&
     operator<<(basic_ostream<charT, traits>& os,
                const gamma_distribution& x);
-    
+
     template <class charT, class traits>
     friend
     basic_istream<charT, traits>&
@@ -999,7 +999,7 @@
     basic_ostream<charT, traits>&
     operator<<(basic_ostream<charT, traits>& os,
                const weibull_distribution& x);
-    
+
     template <class charT, class traits>
     friend
     basic_istream<charT, traits>&
@@ -1057,7 +1057,7 @@
     basic_ostream<charT, traits>&
     operator<<(basic_ostream<charT, traits>& os,
                const extreme_value_distribution& x);
-    
+
     template <class charT, class traits>
     friend
     basic_istream<charT, traits>&
@@ -1115,7 +1115,7 @@
     basic_ostream<charT, traits>&
     operator<<(basic_ostream<charT, traits>& os,
                const normal_distribution& x);
-    
+
     template <class charT, class traits>
     friend
     basic_istream<charT, traits>&
@@ -1173,7 +1173,7 @@
     basic_ostream<charT, traits>&
     operator<<(basic_ostream<charT, traits>& os,
                const lognormal_distribution& x);
-    
+
     template <class charT, class traits>
     friend
     basic_istream<charT, traits>&
@@ -1229,7 +1229,7 @@
     basic_ostream<charT, traits>&
     operator<<(basic_ostream<charT, traits>& os,
                const chi_squared_distribution& x);
-    
+
     template <class charT, class traits>
     friend
     basic_istream<charT, traits>&
@@ -1287,7 +1287,7 @@
     basic_ostream<charT, traits>&
     operator<<(basic_ostream<charT, traits>& os,
                const cauchy_distribution& x);
-    
+
     template <class charT, class traits>
     friend
     basic_istream<charT, traits>&
@@ -1345,7 +1345,7 @@
     basic_ostream<charT, traits>&
     operator<<(basic_ostream<charT, traits>& os,
                const fisher_f_distribution& x);
-    
+
     template <class charT, class traits>
     friend
     basic_istream<charT, traits>&
@@ -1401,7 +1401,7 @@
     basic_ostream<charT, traits>&
     operator<<(basic_ostream<charT, traits>& os,
                const student_t_distribution& x);
-    
+
     template <class charT, class traits>
     friend
     basic_istream<charT, traits>&
@@ -1468,7 +1468,7 @@
     basic_ostream<charT, traits>&
     operator<<(basic_ostream<charT, traits>& os,
                const discrete_distribution& x);
-    
+
     template <class charT, class traits>
     friend
     basic_istream<charT, traits>&
@@ -1543,7 +1543,7 @@
     basic_ostream<charT, traits>&
     operator<<(basic_ostream<charT, traits>& os,
                const piecewise_constant_distribution& x);
-    
+
     template <class charT, class traits>
     friend
     basic_istream<charT, traits>&
@@ -1585,7 +1585,7 @@
         piecewise_linear_distribution(InputIteratorB firstB,
                                       InputIteratorB lastB,
                                       InputIteratorW firstW);
-        
+
     template<class UnaryOperation>
         piecewise_linear_distribution(initializer_list<result_type> bl,
                                       UnaryOperation fw);
@@ -1621,7 +1621,7 @@
     basic_ostream<charT, traits>&
     operator<<(basic_ostream<charT, traits>& os,
                const piecewise_linear_distribution& x);
-    
+
     template <class charT, class traits>
     friend
     basic_istream<charT, traits>&
@@ -1882,7 +1882,7 @@
     basic_ostream<_CharT, _Traits>&
     operator<<(basic_ostream<_CharT, _Traits>& __os,
                const linear_congruential_engine<_U, _A, _C, _N>&);
-    
+
     template <class _CharT, class _Traits,
               class _U, _U _A, _U _C, _U _N>
     friend
@@ -2100,7 +2100,7 @@
                                              _B, _T, _C, _L, _F>& __x,
                const mersenne_twister_engine<_UI, _W, _N, _M, _R, _A, _U, _D, _S,
                                              _B, _T, _C, _L, _F>& __y);
-    
+
     template <class _UI, size_t _W, size_t _N, size_t _M, size_t _R,
               _UI _A, size_t _U, _UI _D, size_t _S,
               _UI _B, size_t _T, _UI _C, size_t _L, _UI _F>
@@ -2457,21 +2457,21 @@
     operator==(
         const subtract_with_carry_engine<_UI, _W, _S, _R>& __x,
         const subtract_with_carry_engine<_UI, _W, _S, _R>& __y);
-    
+
     template<class _UI, size_t _W, size_t _S, size_t _R>
     friend
     bool
     operator!=(
         const subtract_with_carry_engine<_UI, _W, _S, _R>& __x,
         const subtract_with_carry_engine<_UI, _W, _S, _R>& __y);
-    
+
     template <class _CharT, class _Traits,
               class _UI, size_t _W, size_t _S, size_t _R>
     friend
     basic_ostream<_CharT, _Traits>&
     operator<<(basic_ostream<_CharT, _Traits>& __os,
                const subtract_with_carry_engine<_UI, _W, _S, _R>& __x);
-    
+
     template <class _CharT, class _Traits,
               class _UI, size_t _W, size_t _S, size_t _R>
     friend
@@ -2688,7 +2688,7 @@
 #ifdef _LIBCPP_MOVE
     explicit discard_block_engine(_Engine&& __e)
         : __e_(_STD::move(__e)), __n_(0) {}
-#endif
+#endif  // _LIBCPP_MOVE
     explicit discard_block_engine(result_type __sd) : __e_(__sd), __n_(0) {}
     template<class _Sseq> explicit discard_block_engine(_Sseq& __q,
         typename enable_if<!is_convertible<_Sseq, result_type>::value &&
@@ -2717,21 +2717,21 @@
     operator==(
         const discard_block_engine<_Eng, _P, _R>& __x,
         const discard_block_engine<_Eng, _P, _R>& __y);
-    
+
     template<class _Eng, size_t _P, size_t _R>
     friend
     bool
     operator!=(
         const discard_block_engine<_Eng, _P, _R>& __x,
         const discard_block_engine<_Eng, _P, _R>& __y);
-    
+
     template <class _CharT, class _Traits,
               class _Eng, size_t _P, size_t _R>
     friend
     basic_ostream<_CharT, _Traits>&
     operator<<(basic_ostream<_CharT, _Traits>& __os,
                const discard_block_engine<_Eng, _P, _R>& __x);
-    
+
     template <class _CharT, class _Traits,
               class _Eng, size_t _P, size_t _R>
     friend
@@ -2875,7 +2875,7 @@
 #ifdef _LIBCPP_MOVE
     explicit independent_bits_engine(_Engine&& __e)
         : __e_(_STD::move(__e)) {}
-#endif
+#endif  // _LIBCPP_MOVE
     explicit independent_bits_engine(result_type __sd) : __e_(__sd) {}
     template<class _Sseq> explicit independent_bits_engine(_Sseq& __q,
         typename enable_if<!is_convertible<_Sseq, result_type>::value &&
@@ -2904,21 +2904,21 @@
     operator==(
         const independent_bits_engine<_Eng, _W, _UI>& __x,
         const independent_bits_engine<_Eng, _W, _UI>& __y);
-    
+
     template<class _Eng, size_t _W, class _UI>
     friend
     bool
     operator!=(
         const independent_bits_engine<_Eng, _W, _UI>& __x,
         const independent_bits_engine<_Eng, _W, _UI>& __y);
-    
+
     template <class _CharT, class _Traits,
               class _Eng, size_t _W, class _UI>
     friend
     basic_ostream<_CharT, _Traits>&
     operator<<(basic_ostream<_CharT, _Traits>& __os,
                const independent_bits_engine<_Eng, _W, _UI>& __x);
-    
+
     template <class _CharT, class _Traits,
               class _Eng, size_t _W, class _UI>
     friend
@@ -3067,7 +3067,7 @@
 public:
     // engine characteristics
     static const/*expr*/ size_t table_size = __k;
-    
+
     static const result_type _Min = _Engine::_Min;
     static const result_type _Max = _Engine::_Max;
     static_assert(_Min < _Max, "shuffle_order_engine invalid parameters");
@@ -3083,7 +3083,7 @@
 #ifdef _LIBCPP_MOVE
     explicit shuffle_order_engine(_Engine&& __e)
         : __e_(_STD::move(__e)) {__init();}
-#endif
+#endif  // _LIBCPP_MOVE
     explicit shuffle_order_engine(result_type __sd) : __e_(__sd) {__init();}
     template<class _Sseq> explicit shuffle_order_engine(_Sseq& __q,
         typename enable_if<!is_convertible<_Sseq, result_type>::value &&
@@ -3113,21 +3113,21 @@
     operator==(
         const shuffle_order_engine<_Eng, _K>& __x,
         const shuffle_order_engine<_Eng, _K>& __y);
-    
+
     template<class _Eng, size_t _K>
     friend
     bool
     operator!=(
         const shuffle_order_engine<_Eng, _K>& __x,
         const shuffle_order_engine<_Eng, _K>& __y);
-    
+
     template <class _CharT, class _Traits,
               class _Eng, size_t _K>
     friend
     basic_ostream<_CharT, _Traits>&
     operator<<(basic_ostream<_CharT, _Traits>& __os,
                const shuffle_order_engine<_Eng, _K>& __x);
-    
+
     template <class _CharT, class _Traits,
               class _Eng, size_t _K>
     friend
@@ -3297,7 +3297,7 @@
     seed_seq() {}
     template<class _Tp>
         seed_seq(initializer_list<_Tp> __il) {init(__il.begin(), __il.end());}
-            
+
     template<class _InputIterator>
         seed_seq(_InputIterator __first, _InputIterator __last)
              {init(__first, __last);}
@@ -3955,7 +3955,7 @@
     basic_ostream<_CharT, _Traits>&
     operator<<(basic_ostream<_CharT, _Traits>& __os,
                const normal_distribution<_RT>& __x);
-    
+
     template <class _CharT, class _Traits, class _RT>
     friend
     basic_istream<_CharT, _Traits>&
@@ -4068,7 +4068,7 @@
         basic_ostream<_CharT, _Traits>&
         operator<<(basic_ostream<_CharT, _Traits>& __os,
                    const lognormal_distribution<_RT>& __x);
-        
+
         template <class _CharT, class _Traits, class _RT>
         friend
         basic_istream<_CharT, _Traits>&
@@ -4115,7 +4115,7 @@
     basic_ostream<_CharT, _Traits>&
     operator<<(basic_ostream<_CharT, _Traits>& __os,
                const lognormal_distribution<_RT>& __x);
-    
+
     template <class _CharT, class _Traits, class _RT>
     friend
     basic_istream<_CharT, _Traits>&
@@ -4413,7 +4413,6 @@
     result_type min() const {return 0;}
     result_type max() const {return numeric_limits<result_type>::infinity();}
 
-
     friend bool operator==(const weibull_distribution& __x,
                            const weibull_distribution& __y)
         {return __x.__p_ == __y.__p_;}
@@ -4607,7 +4606,7 @@
     void param(const param_type& __p) {__p_ = __p;}
 
     result_type min() const {return 0;}
-    result_type max() const {return numeric_limits<result_type>::infinity();} 
+    result_type max() const {return numeric_limits<result_type>::infinity();}
 
     friend bool operator==(const gamma_distribution& __x,
                            const gamma_distribution& __y)
@@ -4959,8 +4958,7 @@
     void param(const param_type& __p) {__p_ = __p;}
 
     result_type min() const {return 0;}
-    result_type max() const {return numeric_limits<result_type>::infinity();} 
-
+    result_type max() const {return numeric_limits<result_type>::infinity();}
 
     friend bool operator==(const chi_squared_distribution& __x,
                            const chi_squared_distribution& __y)
@@ -5051,7 +5049,7 @@
     void param(const param_type& __p) {__p_ = __p;}
 
     result_type min() const {return -numeric_limits<result_type>::infinity();}
-    result_type max() const {return numeric_limits<result_type>::infinity();} 
+    result_type max() const {return numeric_limits<result_type>::infinity();}
 
     friend bool operator==(const cauchy_distribution& __x,
                            const cauchy_distribution& __y)
@@ -5156,7 +5154,7 @@
     void param(const param_type& __p) {__p_ = __p;}
 
     result_type min() const {return 0;}
-    result_type max() const {return numeric_limits<result_type>::infinity();} 
+    result_type max() const {return numeric_limits<result_type>::infinity();}
 
     friend bool operator==(const fisher_f_distribution& __x,
                            const fisher_f_distribution& __y)
@@ -5347,7 +5345,7 @@
         basic_ostream<_CharT, _Traits>&
         operator<<(basic_ostream<_CharT, _Traits>& __os,
                    const discrete_distribution<_IT>& __x);
-        
+
         template <class _CharT, class _Traits, class _IT>
         friend
         basic_istream<_CharT, _Traits>&
@@ -5400,7 +5398,7 @@
     basic_ostream<_CharT, _Traits>&
     operator<<(basic_ostream<_CharT, _Traits>& __os,
                const discrete_distribution<_IT>& __x);
-    
+
     template <class _CharT, class _Traits, class _IT>
     friend
     basic_istream<_CharT, _Traits>&
@@ -5558,7 +5556,7 @@
         basic_ostream<_CharT, _Traits>&
         operator<<(basic_ostream<_CharT, _Traits>& __os,
                    const piecewise_constant_distribution<_RT>& __x);
-        
+
         template <class _CharT, class _Traits, class _RT>
         friend
         basic_istream<_CharT, _Traits>&
@@ -5620,7 +5618,7 @@
     basic_ostream<_CharT, _Traits>&
     operator<<(basic_ostream<_CharT, _Traits>& __os,
                const piecewise_constant_distribution<_RT>& __x);
-    
+
     template <class _CharT, class _Traits, class _RT>
     friend
     basic_istream<_CharT, _Traits>&
@@ -5635,7 +5633,7 @@
     // __densities_ contains non-normalized areas
     __area_type __total_area = _STD::accumulate(__densities_.begin(),
                                                 __densities_.end(),
-                                                __area_type()); 
+                                                __area_type());
     for (size_t __i = 0; __i < __densities_.size(); ++__i)
         __densities_[__i] /= __total_area;
     // __densities_ contains normalized areas
@@ -5839,7 +5837,7 @@
         basic_ostream<_CharT, _Traits>&
         operator<<(basic_ostream<_CharT, _Traits>& __os,
                    const piecewise_linear_distribution<_RT>& __x);
-        
+
         template <class _CharT, class _Traits, class _RT>
         friend
         basic_istream<_CharT, _Traits>&
@@ -5858,7 +5856,7 @@
                                       _InputIteratorB __lB,
                                       _InputIteratorW __fW)
         : __p_(__fB, __lB, __fW) {}
-        
+
     template<class _UnaryOperation>
         piecewise_linear_distribution(initializer_list<result_type> __bl,
                                       _UnaryOperation __fw)
@@ -5901,7 +5899,7 @@
     basic_ostream<_CharT, _Traits>&
     operator<<(basic_ostream<_CharT, _Traits>& __os,
                const piecewise_linear_distribution<_RT>& __x);
-    
+
     template <class _CharT, class _Traits, class _RT>
     friend
     basic_istream<_CharT, _Traits>&
@@ -6025,7 +6023,7 @@
         return static_cast<result_type>(__u / __dk + __bk);
     const result_type __bk1 = __p.__b_[__k+1];
     const result_type __deltab = __bk1 - __bk;
-    return static_cast<result_type>((__bk * __dk1 - __bk1 * __dk + 
+    return static_cast<result_type>((__bk * __dk1 - __bk1 * __dk +
         _STD::sqrt(__deltab * (__deltab * __dk * __dk + 2 * __deltad * __u))) /
         __deltad);
 }
