 { $values { "seq" sequence } { "elt/f" object } }
 { $description "Returns the element of " { $snippet "seq" } " that is in the majority, provided there is such an element, using a linear-time majority vote algorithm." } ;
 
+HELP: nonzero
+{ $values { "seq" sequence } { "seq'" sequence } }
+{ $description "Outputs a new sequence of the same type as " { $snippet "seq" } " with all non-zero elements removed." } ;
+
+HELP: round-away-from-zero
+{ $values { "x" number } { "y" number } }
+{ $description "Rounds " { $snippet "x" } " via " { $link ceiling } " if " { $snippet "x" } " is greater than zero, and " { $link floor } " if x is less than zero." }
+{ $examples
+    { $example "USING: math.extras prettyprint ;" "0.5 round-away-from-zero ." "1.0" }
+    { $example "USING: math.extras prettyprint ;" "-0.5 round-away-from-zero ." "-1.0" } }
+{ $see-also ceiling floor } ;
+
 HELP: round-to-decimal
 { $values { "x" real } { "n" integer } { "y" real } }
 { $description "Outputs the number closest to " { $snippet "x" } ", rounded to " { $snippet "n" } " decimal places." }

! Copyright (C) 2012 John Benediktsson
! See http://factorcode.org/license.txt for BSD license

USING: help.markup help.syntax kernel math sequences ;

IN: math.extras


    { $example "USING: math.extras prettyprint ;" "12345.6789 -3 round-to-decimal ." "12000.0" }
} ;

HELP: round-to-even
{ $values { "x" real } { "y" real } }
{ $description "Rounds " { $snippet "x" } " towards the nearest even number.  This is also known as banker's rounding or unbiased rounding." }
{ $examples
    { $example "USING: math.extras prettyprint ;" "0.5 round-to-even ." "0.0" }
    { $example "USING: math.extras prettyprint ;" "1.5 round-to-even ." "2.0" } } ;

HELP: kahan-sum
{ $values { "seq" sequence } { "n" float } }
{ $description "Calculates the summation of the sequence using the Kahan summation algorithm." } ;
