NumberTypeInterface
last analyzed

Size/Duplication

Total Lines 150
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
dl 0
loc 150
c 0
b 0
f 0

18 Methods

Rating   Name   Duplication   Size   Complexity  
plus() 0 1 ?
minus() 0 1 ?
multipliedBy() 0 1 ?
dividedBy() 0 1 ?
compare() 0 1 ?
modulus() 0 1 ?
power() 0 1 ?
squareRoot() 0 1 ?
absolute() 0 1 ?
negate() 0 1 ?
factorial() 0 1 ?
gcd() 0 1 ?
root() 0 1 ?
getNextPrime() 0 1 ?
isPrime() 0 1 ?
isPerfectSquare() 0 1 ?
getPrecision() 0 1 ?
valueOf() 0 1 ?
1
<?php
2
3
namespace Tdn\PhpTypes\Type;
4
5
/**
6
 * Interface NumberTypeInterface.
7
 */
8
interface NumberTypeInterface extends TransmutableTypeInterface, ValueTypeInterface
9
{
10
    /**
11
     * Sums current NumberTypeInterface and number in argument.
12
     *
13
     * @param NumberTypeInterface|number|StringType|string $num
14
     *
15
     * @return NumberTypeInterface
16
     */
17
    public function plus($num): NumberTypeInterface;
18
19
    /***
20
     * Subtracts number passed from current NumberTypeInterface.
21
     *
22
     * @param NumberTypeInterface|number|StringType|string $num
23
     *
24
     * @return NumberTypeInterface
25
     */
26
    public function minus($num): NumberTypeInterface;
27
28
    /**
29
     * Multiplies current NumberTypeInterface by the number passed.
30
     *
31
     * @param NumberTypeInterface|number|StringType|string $num
32
     *
33
     * @return NumberTypeInterface
34
     */
35
    public function multipliedBy($num): NumberTypeInterface;
36
37
    /**
38
     * Divides current NumberTypeInterface by the number passed.
39
     *
40
     * @param NumberTypeInterface|number|StringType|string $num
41
     *
42
     * @return NumberTypeInterface
43
     */
44
    public function dividedBy($num): NumberTypeInterface;
45
46
    /**
47
     * Compares current NumberTypeInterface to value passed.
48
     * Same rules as spaceship or version_compare.
49
     *
50
     * @param NumberTypeInterface|number|StringType|string $num
51
     *
52
     * @return NumberTypeInterface
53
     */
54
    public function compare($num): NumberTypeInterface;
55
56
    /**
57
     * Returns value of NumberTypeInterface modulus num.
58
     *
59
     * @param NumberTypeInterface|number|StringType|string $num
60
     *
61
     * @return NumberTypeInterface
62
     */
63
    public function modulus($num): NumberTypeInterface;
64
65
    /**
66
     * Returns NumberTypeInterface to the power of num.
67
     *
68
     * @param NumberTypeInterface|number|StringType|string $num
69
     *
70
     * @return NumberTypeInterface
71
     */
72
    public function power($num): NumberTypeInterface;
73
74
    /**
75
     * Returns the square root of NumberTypeInterface.
76
     *
77
     * @return NumberTypeInterface
78
     */
79
    public function squareRoot(): NumberTypeInterface;
80
81
    /**
82
     * Returns the absolute value of NumberTypeInterface.
83
     *
84
     * @return NumberTypeInterface
85
     */
86
    public function absolute(): NumberTypeInterface;
87
88
    /**
89
     * Returns the negated/opposite of NumberTypeInterface value.
90
     *
91
     * @return NumberTypeInterface
92
     */
93
    public function negate(): NumberTypeInterface;
94
95
    /**
96
     * Returns NumberTypeInterface factorial.
97
     *
98
     * @return NumberTypeInterface
99
     */
100
    public function factorial(): NumberTypeInterface;
101
102
    /**
103
     * Returns the greatest common divider between NumberTypeInterface and num.
104
     *
105
     * @param NumberTypeInterface|number|StringType|string $num
106
     *
107
     * @return NumberTypeInterface
108
     */
109
    public function gcd($num): NumberTypeInterface;
110
111
    /**
112
     * Returns the root of NumberTypeInterface to the num.
113
     *
114
     * @param int $num
115
     *
116
     * @return NumberTypeInterface
117
     */
118
    public function root(int $num): NumberTypeInterface;
119
120
    /**
121
     * Return the next prime number after NumberTypeInterface.
122
     *
123
     * @return NumberTypeInterface
124
     */
125
    public function getNextPrime(): NumberTypeInterface;
126
127
    /**
128
     * Returns true of NumberTypeInterface is prime. False otherwise.
129
     *
130
     * @return BooleanType
131
     */
132
    public function isPrime(): BooleanType;
133
134
    /**
135
     * Returns true if NumberTypeInterface is a perfect square. False otherwise.
136
     *
137
     * @return BooleanType
138
     */
139
    public function isPerfectSquare(): BooleanType;
140
141
    /**
142
     * Gets the current precision (Should be 0 for IntType).
143
     *
144
     * @return int
145
     */
146
    public function getPrecision(): int;
147
148
    /**
149
     * Creates a new instance of NumberTypeInterface from the variable passed.
150
     *
151
     * @param mixed    $mixed
152
     * @param int|null $precision
153
     *
154
     * @return NumberTypeInterface
155
     */
156
    public static function valueOf($mixed, int $precision = null);
157
}
158