Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
11/04/18 11:05:31 (5 years ago)
Author:
bburlacu
Message:

#2958: Update dll files and C++ source code to the latest version.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/HeuristicLab.ExtLibs/HeuristicLab.NativeInterpreter/0.1/NativeInterpreter-0.1/src/vector_operations.h

    r16269 r16274  
    22#define VECTOR_OPERATIONS_H
    33
     4#define _USE_MATH_DEFINES
     5#include <cmath>
    46#include <cstring>
    5 #include <cmath>
    67
    78#ifdef USE_VDT
     
    2728#endif
    2829
    29 constexpr int BUFSIZE = 64;
     30constexpr int BATCHSIZE = 64;
    3031
    31 #define FOR(i) for(int i = 0; i < BUFSIZE; ++i)
     32#define FOR(i) for(int i = 0; i < BATCHSIZE; ++i)
    3233
    3334// When auto-vectorizing without __restrict,
     
    3637
    3738// vector - vector operations
    38 inline void load(double* __restrict a, double* __restrict b) noexcept { std::memcpy(a, b, BUFSIZE * sizeof(double)); }
    39 inline void add(double* __restrict a, double* __restrict b) noexcept { FOR(i) a[i] += b[i]; }
    40 inline void sub(double* __restrict a, double* __restrict b) noexcept { FOR(i) a[i] -= b[i]; }
    41 inline void mul(double* __restrict a, double* __restrict b) noexcept { FOR(i) a[i] *= b[i]; }
    42 inline void div(double* __restrict a, double* __restrict b) noexcept { FOR(i) a[i] /= b[i]; }
    43 inline void exp(double* __restrict a, double* __restrict b) noexcept { FOR(i) a[i] = hl_exp(b[i]); }
    44 inline void log(double* __restrict a, double* __restrict b) noexcept { FOR(i) a[i] = hl_log(b[i]); }
    45 inline void sin(double* __restrict a, double* __restrict b) noexcept { FOR(i) a[i] = hl_sin(b[i]); }
    46 inline void cos(double* __restrict a, double* __restrict b) noexcept { FOR(i) a[i] = hl_cos(b[i]); }
    47 inline void tan(double* __restrict a, double* __restrict b) noexcept { FOR(i) a[i] = hl_tan(b[i]); }
    48 inline void sqrt(double* __restrict a, double* __restrict b) noexcept { FOR(i) a[i] = hl_sqrt(b[i]); }
    49 inline void pow(double* __restrict a, double* __restrict b) noexcept { FOR(i) a[i] = hl_pow(a[i], hl_round(b[i])); };
    50 inline void root(double* __restrict a, double* __restrict b) noexcept { FOR(i) a[i] = hl_pow(a[i], 1 / hl_round(b[i])); };
    51 inline void square(double* __restrict a, double* __restrict b) noexcept { FOR(i) a[i] = b[i] * b[i]; };
     39inline void load(double* __restrict a, double const * __restrict b) noexcept { std::memcpy(a, b, BATCHSIZE * sizeof(double)); }
     40inline void add(double* __restrict a, double const * __restrict b) noexcept { FOR(i) a[i] += b[i]; }
     41inline void sub(double* __restrict a, double const * __restrict b) noexcept { FOR(i) a[i] -= b[i]; }
     42inline void mul(double* __restrict a, double const * __restrict b) noexcept { FOR(i) a[i] *= b[i]; }
     43inline void div(double* __restrict a, double const * __restrict b) noexcept { FOR(i) a[i] /= b[i]; }
     44inline void exp(double* __restrict a, double const * __restrict b) noexcept { FOR(i) a[i] = hl_exp(b[i]); }
     45inline void log(double* __restrict a, double const * __restrict b) noexcept { FOR(i) a[i] = hl_log(b[i]); }
     46inline void sin(double* __restrict a, double const * __restrict b) noexcept { FOR(i) a[i] = hl_sin(b[i]); }
     47inline void cos(double* __restrict a, double const * __restrict b) noexcept { FOR(i) a[i] = hl_cos(b[i]); }
     48inline void tan(double* __restrict a, double const * __restrict b) noexcept { FOR(i) a[i] = hl_tan(b[i]); }
     49inline void sqrt(double* __restrict a, double const * __restrict b) noexcept { FOR(i) a[i] = hl_sqrt(b[i]); }
     50inline void pow(double* __restrict a, double const * __restrict b) noexcept { FOR(i) a[i] = hl_pow(a[i], hl_round(b[i])); };
     51inline void root(double* __restrict a, double const * __restrict b) noexcept { FOR(i) a[i] = hl_pow(a[i], 1. / hl_round(b[i])); };
     52inline void square(double* __restrict a, double const * __restrict b) noexcept { FOR(i) a[i] = hl_pow(b[i], 2.); };
     53inline void inv(double* __restrict a, double const * __restrict b) noexcept { FOR(i) a[i] = 1. / b[i]; }
     54inline void neg(double* __restrict a, double const * __restrict b) noexcept { FOR(i) a[i] = -b[i]; }
    5255
    5356// vector - scalar operations
     
    6063// vector operations
    6164inline void neg(double* __restrict a) noexcept { FOR(i) a[i] = -a[i]; }
    62 inline void inv(double* __restrict a) noexcept { FOR(i) a[i] = 1 / a[i]; }
     65inline void inv(double* __restrict a) noexcept { FOR(i) a[i] = 1. / a[i]; }
    6366inline void exp(double* __restrict a) noexcept { FOR(i) a[i] = hl_exp(a[i]); }
    6467inline void log(double* __restrict a) noexcept { FOR(i) a[i] = hl_log(a[i]); }
     
    6770inline void sqrt(double* __restrict a) noexcept { FOR(i) a[i] = hl_sqrt(a[i]); }
    6871inline void round(double* __restrict a) noexcept { FOR(i) a[i] = hl_round(a[i]); }
    69 inline void square(double* __restrict a) noexcept { FOR(i) a[i] = a[i] * a[i];; }
     72inline void square(double* __restrict a) noexcept { FOR(i) a[i] = hl_pow(a[i], 2.); }
    7073
    7174#undef FOR
Note: See TracChangeset for help on using the changeset viewer.