A high-performance general-purpose compute library

- Main Page
- Tutorials
- Release Notes
- Examples

seq.h
Go to the documentation of this file.
1/*******************************************************
2 * Copyright (c) 2014, ArrayFire
3 * All rights reserved.
4 *
5 * This file is distributed under 3-clause BSD license.
6 * The complete license agreement can be obtained at:
7 * http://arrayfire.com/licenses/BSD-3-Clause
8 ********************************************************/
9
10#pragma once
11#include <af/defines.h>
12
20 typedef struct af_seq {
22 double begin;
23
25 double end;
26
28 double step;
29} af_seq;
30
31 static const af_seq af_span = {1, 1, 0};
32
33#ifdef __cplusplus
34 namespace af
35{
36 class array;
37
45 class AFAPI seq
46{
47 public:
51 af_seq s;
52
56 size_t size;
57
61 bool m_gfor;
62
80 seq(double length = 0);
81
85 ~seq();
86
107 seq(double begin, double end, double step = 1);
108
117 seq(seq other, bool is_gfor);
118
124 seq(const af_seq& s_);
125
134 seq& operator=(const af_seq& s);
135
149 inline seq operator-() { return seq(-s.begin, -s.end, -s.step); }
150
164 inline seq operator+(double x) { return seq(s.begin + x, s.end + x, s.step); }
165
181 inline seq operator-(double x) { return seq(s.begin - x, s.end - x, s.step); }
182
199 inline seq operator*(double x) { return seq(s.begin * x, s.end * x, s.step * x); }
200
201 friend inline seq operator+(double x, seq y) { return y + x; }
202
203 friend inline seq operator-(double x, seq y) { return -y + x; }
204
205 friend inline seq operator*(double x, seq y) { return y * x; }
206
222 operator array() const;
223
224 private:
225 void init(double begin, double end, double step);
226};
227
229 extern AFAPI int end;
230
232 extern AFAPI seq span;
233
234}
235#endif
236
237#ifdef __cplusplus
238 extern "C" {
239#endif
240
242 AFAPI af_seq af_make_seq(double begin, double end, double step);
243
244#ifdef __cplusplus
245}
246#endif
af::array
A multi dimensional data container.
Definition array.h:37
af::seq
seq is used to create sequences for indexing af::array
Definition seq.h:46
af::seq::m_gfor
bool m_gfor
Flag for gfor.
Definition seq.h:61
af::seq::seq
seq(seq other, bool is_gfor)
Copy constructor.
af::seq::operator+
friend seq operator+(double x, seq y)
Definition seq.h:201
af::seq::operator-
seq operator-()
Negation operator creates a sequence with the signs negated.
Definition seq.h:149
af::seq::seq
seq(double length=0)
Creates a sequence of size length as [0, 1, 2..., length - 1].
af::seq::s
af_seq s
Get the af_seq C-style struct.
Definition seq.h:51
af::seq::~seq
~seq()
Destructor.
af::seq::seq
seq(double begin, double end, double step=1)
Creates a sequence starting at begin, ending at or before end (inclusive) with increments as step.
af::seq::operator+
seq operator+(double x)
Addition operator offsets the begin and end by x.
Definition seq.h:164
af::seq::operator*
friend seq operator*(double x, seq y)
Definition seq.h:205
af::seq::size
size_t size
Get's the length of the sequence.
Definition seq.h:56
af::seq::operator*
seq operator*(double x)
Multiplication operator spaces the sequence by a factor x.
Definition seq.h:199
af::seq::seq
seq(const af_seq &s_)
Create a seq object from an af_seq struct.
af::seq::operator=
seq & operator=(const af_seq &s)
Assignment operator to create a new sequence from an af_seq.
af::seq::operator-
seq operator-(double x)
Subtraction operator offsets the begin and end by x.
Definition seq.h:181
af::seq::operator-
friend seq operator-(double x, seq y)
Definition seq.h:203
defines.h
AFAPI
#define AFAPI
Definition defines.h:38
af
Definition algorithm.h:15
af::end
AFAPI int end
A special value representing the last value of an axis.
af::span
AFAPI seq span
A special value representing the entire axis of an af::array.
af_span
static const af_seq af_span
Definition seq.h:31
af_make_seq
AFAPI af_seq af_make_seq(double begin, double end, double step)
Create a new af_seq object.
af_seq
struct af_seq af_seq
af_seq
C-style struct to creating sequences for indexing.
Definition seq.h:20
af_seq::end
double end
End position of the sequence (inclusive)
Definition seq.h:25
af_seq::step
double step
Step size between sequence values.
Definition seq.h:28
af_seq::begin
double begin
Start position of the sequence.
Definition seq.h:22