|
#include <stdlib.h> |
|
#include <math.h> |
|
#include <iostream> |
|
#include "Vector.h" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define TEST_FUNCS(TYPE, SNAME) \ |
|
\ |
|
TYPE SNAME ## Length(TYPE vector[3]) { \ |
|
double result = 0; \ |
|
for (int i=0; i<3; ++i) result += vector[i]*vector[i]; \ |
|
return (TYPE)sqrt(result); \ |
|
} \ |
|
\ |
|
TYPE SNAME ## Prod(TYPE * series, int size) { \ |
|
TYPE result = 1; \ |
|
for (int i=0; i<size; ++i) result *= series[i]; \ |
|
return result; \ |
|
} \ |
|
\ |
|
TYPE SNAME ## Sum(int size, TYPE * series) { \ |
|
TYPE result = 0; \ |
|
for (int i=0; i<size; ++i) result += series[i]; \ |
|
return result; \ |
|
} \ |
|
\ |
|
void SNAME ## Reverse(TYPE array[3]) { \ |
|
TYPE temp = array[0]; \ |
|
array[0] = array[2]; \ |
|
array[2] = temp; \ |
|
} \ |
|
\ |
|
void SNAME ## Ones(TYPE * array, int size) { \ |
|
for (int i=0; i<size; ++i) array[i] = 1; \ |
|
} \ |
|
\ |
|
void SNAME ## Zeros(int size, TYPE * array) { \ |
|
for (int i=0; i<size; ++i) array[i] = 0; \ |
|
} \ |
|
\ |
|
void SNAME ## EOSplit(TYPE vector[3], TYPE even[3], TYPE odd[3]) { \ |
|
for (int i=0; i<3; ++i) { \ |
|
if (i % 2 == 0) { \ |
|
even[i] = vector[i]; \ |
|
odd[ i] = 0; \ |
|
} else { \ |
|
even[i] = 0; \ |
|
odd[ i] = vector[i]; \ |
|
} \ |
|
} \ |
|
} \ |
|
\ |
|
void SNAME ## Twos(TYPE* twoVec, int size) { \ |
|
for (int i=0; i<size; ++i) twoVec[i] = 2; \ |
|
} \ |
|
\ |
|
void SNAME ## Threes(int size, TYPE* threeVec) { \ |
|
for (int i=0; i<size; ++i) threeVec[i] = 3; \ |
|
} |
|
|
|
TEST_FUNCS(signed char , schar ) |
|
TEST_FUNCS(unsigned char , uchar ) |
|
TEST_FUNCS(short , short ) |
|
TEST_FUNCS(unsigned short , ushort ) |
|
TEST_FUNCS(int , int ) |
|
TEST_FUNCS(unsigned int , uint ) |
|
TEST_FUNCS(long , long ) |
|
TEST_FUNCS(unsigned long , ulong ) |
|
TEST_FUNCS(long long , longLong ) |
|
TEST_FUNCS(unsigned long long, ulongLong) |
|
TEST_FUNCS(float , float ) |
|
TEST_FUNCS(double , double ) |
|
|