Skip to content
This repository was archived by the owner on Jul 10, 2023. It is now read-only.

Commit 30fb884

Browse files
Merge pull request #6 from phpsci/dev
Implemented Rangeable trait for ranges initializers. Implemented aran…
2 parents a6001fa + 6d6a453 commit 30fb884

File tree

2 files changed

+44
-1
lines changed

2 files changed

+44
-1
lines changed

src/PHPSci/Kernel/CArray/CArrayWrapper.php

+3-1
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,20 @@
44
use PHPSci\Kernel\Initializers\Creatable;
55
use PHPSci\Kernel\LinearAlgebra\Operatable;
66
use PHPSci\Kernel\Orchestrator\MemoryPointer;
7+
use PHPSci\Kernel\Ranges\Rangeable;
78
use PHPSci\Kernel\Transform\Transformable;
89
use PHPSci\PHPSci;
910

1011
/**
1112
* Class CArrayWrapper
1213
*
14+
* @author Henrique Borba <henrique.borba.dev@gmail.com>
1315
* @package PHPSci\Kernel\CArray
1416
*/
1517
abstract class CArrayWrapper implements Stackable, \ArrayAccess, \Countable
1618
{
1719

18-
use Transformable, Creatable, Operatable;
20+
use Transformable, Creatable, Operatable, Rangeable;
1921

2022
/**
2123
* @var
+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
<?php
2+
3+
namespace PHPSci\Kernel\Ranges;
4+
5+
use PHPSci\Kernel\CArray\CArrayWrapper;
6+
use PHPSci\Kernel\Orchestrator\MemoryPointer;
7+
use PHPSci\PHPSci;
8+
9+
/**
10+
* Trait Rangeable
11+
*
12+
* @author Henrique Borba <henrique.borba.dev@gmail.com>
13+
* @package PHPSci\Kernel\Ranges
14+
*/
15+
trait Rangeable
16+
{
17+
18+
/**
19+
* Return evenly spaced CArray with values within a given interval.
20+
*
21+
* Values are generated within the half-open interval [start, stop)
22+
* (in other words, the interval including start but excluding stop)
23+
*
24+
* @author Henrique Borba <henrique.borba.dev@gmail.com>
25+
* @param float $stop
26+
* @param float $start
27+
* @param float $step
28+
* @return CArrayWrapper
29+
*/
30+
public static function arange(float $stop, float $start = 0., float $step = 1.) : CArrayWrapper {
31+
$new_ptr = \CArray::arange($start, $stop, $step);
32+
return new PHPSci(
33+
new MemoryPointer(
34+
$new_ptr,
35+
$new_ptr->rows,
36+
$new_ptr->cols
37+
)
38+
);
39+
}
40+
41+
}

0 commit comments

Comments
 (0)