@@ -44,6 +44,7 @@ var_dump($range[2]); // 5
4444try {
4545 $range[3];
4646} catch(OutOfRangeException $e) {
47+ echo "cannot get value from index out of range\n";
4748}
4849
4950var_dump($range[-1]); // 5
@@ -76,6 +77,63 @@ foreach($range as $value) {
7677// out: 1.1 3.2 5.3
7778```
7879
80+ #### Exponential
81+
82+ ``` php
83+ use Smoren\Sequence\Structs\IntExponential;
84+ use Smoren\Sequence\Structs\FloatExponential;
85+
86+ /* Simple int exponential sequence */
87+ $sequence = new IntRange(1, 4, 2); // (from, size, step)
88+ var_dump($sequence->isInfinite()); // false
89+
90+ foreach($sequence as $value) {
91+ echo "{$value} ";
92+ }
93+ // out: 1 2 4 8
94+
95+ var_dump($sequence[0]); // 1
96+ var_dump($sequence[1]); // 2
97+ var_dump($sequence[2]); // 4
98+ var_dump($sequence[3]); // 8
99+
100+ try {
101+ $sequence[4];
102+ } catch(OutOfRangeException $e) {
103+ echo "cannot get value from index out of range\n";
104+ }
105+
106+ var_dump($sequence[-1]); // 8
107+ var_dump($sequence[-2]); // 4
108+ var_dump($sequence[-3]); // 2
109+ var_dump($sequence[-4]); // 1
110+
111+ try {
112+ $sequence[-5];
113+ } catch(OutOfRangeException $e) {
114+ echo "cannot get value from index out of range\n";
115+ }
116+
117+ /* Infinite int exponential sequence */
118+ $sequence = new IntExponential(1, null, 2);
119+ var_dump($sequence->isInfinite()); // true
120+
121+ foreach($sequence as $i => $value) {
122+ echo "{$value} ";
123+ if($i > 100) break;
124+ }
125+ // out: 1 2 4 8 16 32 64...
126+
127+ /* Infinite float exponential sequence */
128+ $sequence = new FloatRange(0.5, null, 2);
129+ var_dump($sequence->isInfinite()); // true
130+
131+ foreach($sequence as $value) {
132+ echo "{$value} ";
133+ }
134+ // out: 0.5 0.25 0.125...
135+ ```
136+
79137#### IndexedArray
80138
81139``` php
0 commit comments