cppassist  1.0.0.f4fab4f962ff
C++ sanctuary for small but powerful and frequently required, stand alone features.
value1.h
Go to the documentation of this file.
1 
2 #pragma once
3 
4 
5 #include <cppassist/simd/value.h>
6 
7 
8 namespace cppassist
9 {
10 
11 
12 template <>
13 class CPPASSIST_TEMPLATE_API value<float, 1>
14 {
15 public:
16  static const auto simd_size = 1;
17  using store_type = float;
18  using primitive_type = float;
19 
20 public:
21  value();
22  value(const value & value);
23  value(value && value);
24  value(const store_type & value);
26 
27  value & operator=(const value & value);
28  value & operator=(value && value);
29  value & operator=(const store_type & value);
30  value & operator=(store_type && value);
31 
32  primitive_type * data();
33  const primitive_type * data() const;
34 
35  primitive_type & at(size_t i);
36  const primitive_type & at(size_t i) const;
37 
38  primitive_type & operator[](size_t i);
39  const primitive_type & operator[](size_t i) const;
40 
41  inline operator store_type();
42  inline operator const store_type &() const;
43 
44 public:
46 };
47 
48 
49 inline auto operator+(const value<float, 1> & first, const value<float, 1> & second) -> value<float, 1>;
50 inline auto operator-(const value<float, 1> & first, const value<float, 1> & second) -> value<float, 1>;
51 inline auto operator*(const value<float, 1> & first, const value<float, 1> & second) -> value<float, 1>;
52 inline auto operator/(const value<float, 1> & first, const value<float, 1> & second) -> value<float, 1>;
53 
54 inline auto operator+(const value<float, 1> & first, const value<float, 1>::primitive_type & scalar) -> value<float, 1>;
55 inline auto operator-(const value<float, 1> & first, const value<float, 1>::primitive_type & scalar) -> value<float, 1>;
56 inline auto operator*(const value<float, 1> & first, const value<float, 1>::primitive_type & scalar) -> value<float, 1>;
57 inline auto operator/(const value<float, 1> & first, const value<float, 1>::primitive_type & scalar) -> value<float, 1>;
58 
59 inline auto operator+(const value<float, 1>::primitive_type & scalar, const value<float, 1> & other) -> value<float, 1>;
60 inline auto operator-(const value<float, 1>::primitive_type & scalar, const value<float, 1> & other) -> value<float, 1>;
61 inline auto operator*(const value<float, 1>::primitive_type & scalar, const value<float, 1> & other) -> value<float, 1>;
62 inline auto operator/(const value<float, 1>::primitive_type & scalar, const value<float, 1> & other) -> value<float, 1>;
63 
64 inline auto sqrt(const value<float, 1> & first) -> value<float, 1>;
65 
66 } // namespace cppassist
67 
68 
Definition: value1.h:13
float primitive_type
Definition: value1.h:18
auto operator+(const value< float, 1 > &first, const value< float, 1 > &second) -> value< float, 1 >
Definition: value1.inl:109
auto operator*(const value< float, 1 > &first, const value< float, 1 > &second) -> value< float, 1 >
Definition: value1.inl:119
Definition: ArgumentParser.h:12
store_type m_value
Definition: value1.h:45
void sqrt(const vector< T, SIMD_SIZE > &first, vector< T, SIMD_SIZE > &result)
Definition: algorithm.inl:144
float store_type
Definition: value1.h:17
Definition: value.h:14
auto operator-(const value< float, 1 > &first, const value< float, 1 > &second) -> value< float, 1 >
Definition: value1.inl:114
auto operator/(const value< float, 1 > &first, const value< float, 1 > &second) -> value< float, 1 >
Definition: value1.inl:124