Container System 0.1.0
High-performance C++20 type-safe container framework with SIMD-accelerated serialization
Loading...
Searching...
No Matches
kcenon::container::simd::scalar_simd_policy Struct Reference

Scalar (non-SIMD) implementation of operations. More...

#include <simd_policies.h>

Collaboration diagram for kcenon::container::simd::scalar_simd_policy:
Collaboration graph

Public Member Functions

float sum_floats (const float *data, size_t count) const noexcept
 
float min_float (const float *data, size_t count) const noexcept
 
float max_float (const float *data, size_t count) const noexcept
 
double sum_doubles (const double *data, size_t count) const noexcept
 

Static Public Member Functions

static constexpr std::string_view name () noexcept
 

Static Public Attributes

static constexpr size_t simd_width = 1
 

Detailed Description

Scalar (non-SIMD) implementation of operations.

Used as fallback when no SIMD instructions are available, or for testing/comparison purposes.

Definition at line 109 of file simd_policies.h.

Member Function Documentation

◆ max_float()

float kcenon::container::simd::scalar_simd_policy::max_float ( const float * data,
size_t count ) const
inlinenodiscardnoexcept

Definition at line 132 of file simd_policies.h.

132 {
133 if (count == 0) return std::numeric_limits<float>::lowest();
134 float max_val = data[0];
135 for (size_t i = 1; i < count; ++i) {
136 if (data[i] > max_val) {
137 max_val = data[i];
138 }
139 }
140 return max_val;
141 }

◆ min_float()

float kcenon::container::simd::scalar_simd_policy::min_float ( const float * data,
size_t count ) const
inlinenodiscardnoexcept

Definition at line 121 of file simd_policies.h.

121 {
122 if (count == 0) return std::numeric_limits<float>::max();
123 float min_val = data[0];
124 for (size_t i = 1; i < count; ++i) {
125 if (data[i] < min_val) {
126 min_val = data[i];
127 }
128 }
129 return min_val;
130 }

◆ name()

static constexpr std::string_view kcenon::container::simd::scalar_simd_policy::name ( )
inlinestaticconstexprnoexcept

Definition at line 110 of file simd_policies.h.

110{ return "scalar"; }

◆ sum_doubles()

double kcenon::container::simd::scalar_simd_policy::sum_doubles ( const double * data,
size_t count ) const
inlinenodiscardnoexcept

Definition at line 143 of file simd_policies.h.

143 {
144 double sum = 0.0;
145 for (size_t i = 0; i < count; ++i) {
146 sum += data[i];
147 }
148 return sum;
149 }

◆ sum_floats()

float kcenon::container::simd::scalar_simd_policy::sum_floats ( const float * data,
size_t count ) const
inlinenodiscardnoexcept

Definition at line 113 of file simd_policies.h.

113 {
114 float sum = 0.0f;
115 for (size_t i = 0; i < count; ++i) {
116 sum += data[i];
117 }
118 return sum;
119 }

Member Data Documentation

◆ simd_width

size_t kcenon::container::simd::scalar_simd_policy::simd_width = 1
staticconstexpr

Definition at line 111 of file simd_policies.h.


The documentation for this struct was generated from the following file: