seq.h Source File

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 afs, 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
228 extern AFAPI int end;
229 extern AFAPI seq span;
230
231 }
232 #endif
233
234 #ifdef __cplusplus
235 extern "C" {
236 #endif
237 AFAPI af_seq af_make_seq(double begin, double end, double step);
238
239 #ifdef __cplusplus
240 }
241 #endif
af_seq::step
double step
Step size between sequence values.
Definition: seq.h:28
af
Definition: algorithm.h:14
af::seq::operator*
seq operator*(double x)
Multiplication operator spaces the sequence by a factor x.
Definition: seq.h:199
af::seq::operator-
seq operator-()
Negation operator creates a sequence with the signs negated.
Definition: seq.h:149
af_seq
struct af_seq af_seq
af::seq::size
size_t size
Get&#39;s the length of the sequence.
Definition: seq.h:56
af_seq::begin
double begin
Start position of the sequence.
Definition: seq.h:22
af::seq::operator*
friend seq operator*(double x, seq y)
Definition: seq.h:205
af_seq::end
double end
End position of the sequence (inclusive)
Definition: seq.h:25
af::seq::m_gfor
bool m_gfor
Flag for gfor.
Definition: seq.h:61
af_make_seq
AFAPI af_seq af_make_seq(double begin, double end, double step)
af::span
AFAPI seq span
af::seq
seq is used to create seq for indexing af::array
Definition: seq.h:45
defines.h
af::seq::operator-
seq operator-(double x)
Subtraction operator offsets the begin and end by x.
Definition: seq.h:181
AFAPI
#define AFAPI
Definition: defines.h:31
af::seq::operator+
friend seq operator+(double x, seq y)
Definition: seq.h:201
af_seq
C-style struct to creating sequences for indexing.
Definition: seq.h:20
af::seq::s
af_seq s
Get the af_seq C-style struct.
Definition: seq.h:51
af::seq::operator-
friend seq operator-(double x, seq y)
Definition: seq.h:203
afcl::array
static af::array array(af::dim4 idims, cl_mem buf, af::dtype type, bool retain=false)
Create an af::array object from an OpenCL cl_mem buffer.
Definition: opencl.h:327
af_span
static const af_seq af_span
Definition: seq.h:31
af::seq::operator+
seq operator+(double x)
Addition operator offsets the begin and end by x.
Definition: seq.h:164