<commit_before>// A simple 4D vector with a variety of operators and other member functions 
// for doing 4D vector arithmetic. This code uses HEMI to be portable between
// standard host code (compiled with any C++ compiler, including NVCC) and 
// CUDA device code (compiled with NVCC).
#ifndef __VEC4F_H__
#define __VEC4F_H__

#include "hemi/hemi.h"

HEMI_DEV_ALIGN(16)
struct Vec4f
{
  float x, y, z, w;

  HEMI_DEV_CALLABLE_INLINE_MEMBER
  Vec4f() {};

  HEMI_DEV_CALLABLE_INLINE_MEMBER
  Vec4f(float xx, float yy, float zz, float ww) : x(xx), y(yy), z(zz), w(ww) {}

  HEMI_DEV_CALLABLE_INLINE_MEMBER
  Vec4f(const Vec4f& v) : x(v.x), y(v.y), z(v.z), w(v.w) {}

  HEMI_DEV_CALLABLE_INLINE_MEMBER
  Vec4f& operator=(const Vec4f& v) { 
    x = v.x; y = v.y; z = v.z; w = v.w; 
    return *this;
  }

  HEMI_DEV_CALLABLE_INLINE_MEMBER
  Vec4f operator+(const Vec4f& v) const { 
    return Vec4f(x+v.x, y+v.y, z+v.z, w+v.w); 
  }

  HEMI_DEV_CALLABLE_INLINE_MEMBER
  Vec4f operator-(const Vec4f& v) const {
    return Vec4f(x-v.x, y-v.y, z-v.z, w-v.w); 
  }

  HEMI_DEV_CALLABLE_INLINE_MEMBER<commit_msg>Fixed location of alignment macro on Vec4f struct.<commit_after>// A simple 4D vector with a variety of operators and other member functions 
// for doing 4D vector arithmetic. This code uses HEMI to be portable between
// standard host code (compiled with any C++ compiler, including NVCC) and 
// CUDA device code (compiled with NVCC).
#ifndef __VEC4F_H__
#define __VEC4F_H__

#include "hemi/hemi.h"


struct HEMI_DEV_ALIGN(16) Vec4f
{
  float x, y, z, w;

  HEMI_DEV_CALLABLE_INLINE_MEMBER
  Vec4f() {};

  HEMI_DEV_CALLABLE_INLINE_MEMBER
  Vec4f(float xx, float yy, float zz, float ww) : x(xx), y(yy), z(zz), w(ww) {}

  HEMI_DEV_CALLABLE_INLINE_MEMBER
  Vec4f(const Vec4f& v) : x(v.x), y(v.y), z(v.z), w(v.w) {}

  HEMI_DEV_CALLABLE_INLINE_MEMBER
  Vec4f& operator=(const Vec4f& v) { 
    x = v.x; y = v.y; z = v.z; w = v.w; 
    return *this;
  }

  HEMI_DEV_CALLABLE_INLINE_MEMBER
  Vec4f operator+(const Vec4f& v) const { 
    return Vec4f(x+v.x, y+v.y, z+v.z, w+v.w); 
  }

  HEMI_DEV_CALLABLE_INLINE_MEMBER
  Vec4f operator-(const Vec4f& v) const {
    return Vec4f(x-v.x, y-v.y, z-v.z, w-v.w); 
  }

  HEMI_DEV_CALLABLE_INLINE_MEMBER
{'fraction_non_alphanumeric': 0.12488888888888888, 'fraction_numerical': 0.017333333333333333, 'mean_word_length': 3.6701244813278007, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '745305', 'n_tokens_mistral': 1006, 'n_tokens_neox': 955, 'n_words': 244}