Code Duplication    Length = 12-12 lines in 3 locations

src/Zicht/Itertools/util/Reductions.php 3 locations

@@ 17-28 (lines=12) @@
14
     *
15
     * @return \Closure
16
     */
17
    public static function add()
18
    {
19
        return function ($a, $b) {
20
            if (!is_numeric($a)) {
21
                throw new \InvalidArgumentException(sprintf('Argument $A must be numeric to perform addition, not %s', is_object($a) ? get_class($a) : gettype($a)));
22
            }
23
            if (!is_numeric($b)) {
24
                throw new \InvalidArgumentException(sprintf('Argument $B must be numeric to perform addition, not %s', is_object($b) ? get_class($b) : gettype($b)));
25
            }
26
            return $a + $b;
27
        };
28
    }
29
30
    /**
31
     * Returns a closure that subtracts one number from another
@@ 35-46 (lines=12) @@
32
     *
33
     * @return \Closure
34
     */
35
    public static function sub()
36
    {
37
        return function ($a, $b) {
38
            if (!is_numeric($a)) {
39
                throw new \InvalidArgumentException(sprintf('Argument $A must be numeric to perform subtraction, not %s', is_object($a) ? get_class($a) : gettype($a)));
40
            }
41
            if (!is_numeric($b)) {
42
                throw new \InvalidArgumentException(sprintf('Argument $B must be numeric to perform subtraction, not %s', is_object($b) ? get_class($b) : gettype($b)));
43
            }
44
            return $a - $b;
45
        };
46
    }
47
48
    /**
49
     * Returns a closure that multiplies two numbers
@@ 53-64 (lines=12) @@
50
     *
51
     * @return \Closure
52
     */
53
    public static function mul()
54
    {
55
        return function ($a, $b) {
56
            if (!is_numeric($a)) {
57
                throw new \InvalidArgumentException(sprintf('Argument $A must be numeric to perform multiplication, not %s', is_object($a) ? get_class($a) : gettype($a)));
58
            }
59
            if (!is_numeric($b)) {
60
                throw new \InvalidArgumentException(sprintf('Argument $B must be numeric to perform multiplication, not %s', is_object($b) ? get_class($b) : gettype($b)));
61
            }
62
            return $a * $b;
63
        };
64
    }
65
66
    /**
67
     * Returns a closure that returns the smallest of two numbers