seq.h (2020-10-27 00:11:00 -0400, (build d99887ae))
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  * https://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:
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
double step
Step size between sequence values.
Definition: seq.h:28
Definition: algorithm.h:14
seq operator*(double x)
Multiplication operator spaces the sequence by a factor x.
Definition: seq.h:199
seq operator-()
Negation operator creates a sequence with the signs negated.
Definition: seq.h:149
struct af_seq af_seq
size_t size
Get&#39;s the length of the sequence.
Definition: seq.h:56
double begin
Start position of the sequence.
Definition: seq.h:22
friend seq operator*(double x, seq y)
Definition: seq.h:205
double end
End position of the sequence (inclusive)
Definition: seq.h:25
bool m_gfor
Flag for gfor.
Definition: seq.h:61
AFAPI af_seq af_make_seq(double begin, double end, double step)
Create a new af_seq object.
AFAPI seq span
A special value representing the entire axis of an af::array.
seq is used to create sequences for indexing af::array
Definition: seq.h:45
seq operator-(double x)
Subtraction operator offsets the begin and end by x.
Definition: seq.h:181
#define AFAPI
Definition: defines.h:38
friend seq operator+(double x, seq y)
Definition: seq.h:201
C-style struct to creating sequences for indexing.
Definition: seq.h:20
af_seq s
Get the af_seq C-style struct.
Definition: seq.h:51
friend seq operator-(double x, seq y)
Definition: seq.h:203
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
static const af_seq af_span
Definition: seq.h:31
seq operator+(double x)
Addition operator offsets the begin and end by x.
Definition: seq.h:164