3 template<
typename T>
struct SincosReference
8 template<
typename T>
struct Reference
13 template<
typename T>
struct Data
16 static const Reference<T> asinReference[];
17 static const Reference<T> acosReference[];
18 static const Reference<T> atanReference[];
19 static const Reference<T> lnReference[];
20 static const Reference<T> log2Reference[];
21 static const Reference<T> log10Reference[];
29 template<
typename T, Function::Function F>
static inline const char *
filenameOut();
30 template<>
inline const char *filenameOut<float , Function::sincos>() {
return "sincos-reference-single.dat"; }
31 template<>
inline const char *filenameOut<double, Function::sincos>() {
return "sincos-reference-double.dat"; }
32 template<>
inline const char *filenameOut<float , Function::atan >() {
return "atan-reference-single.dat"; }
33 template<>
inline const char *filenameOut<double, Function::atan >() {
return "atan-reference-double.dat"; }
34 template<>
inline const char *filenameOut<float , Function::asin >() {
return "asin-reference-single.dat"; }
35 template<>
inline const char *filenameOut<double, Function::asin >() {
return "asin-reference-double.dat"; }
36 template<>
inline const char *filenameOut<float , Function::acos >() {
return "acos-reference-single.dat"; }
37 template<>
inline const char *filenameOut<double, Function::acos >() {
return "acos-reference-double.dat"; }
38 template<>
inline const char *filenameOut<float , Function::ln >() {
return "reference-ln-sp.dat"; }
39 template<>
inline const char *filenameOut<double, Function::ln >() {
return "reference-ln-dp.dat"; }
40 template<>
inline const char *filenameOut<float , Function::log2 >() {
return "reference-log2-sp.dat"; }
41 template<>
inline const char *filenameOut<double, Function::log2 >() {
return "reference-log2-dp.dat"; }
42 template<>
inline const char *filenameOut<float , Function::log10 >() {
return "reference-log10-sp.dat"; }
43 template<>
inline const char *filenameOut<double, Function::log10 >() {
return "reference-log10-dp.dat"; }
45 template<>
const SincosReference<float> Data<float>::sincosReference[] = {
46 #include "sincos-reference-single.h"
48 template<>
const SincosReference<double> Data<double>::sincosReference[] = {
49 #include "sincos-reference-double.h"
51 template<>
const Reference<float> Data<float>::asinReference[] = {
52 #include "asin-reference-single.h"
54 template<>
const Reference<double> Data<double>::asinReference[] = {
55 #include "asin-reference-double.h"
57 template<>
const Reference<float> Data<float>::acosReference[] = {
58 #include "acos-reference-single.h"
60 template<>
const Reference<double> Data<double>::acosReference[] = {
61 #include "acos-reference-double.h"
63 template<>
const Reference<float> Data<float>::atanReference[] = {
64 #include "atan-reference-single.h"
66 template<>
const Reference<double> Data<double>::atanReference[] = {
67 #include "atan-reference-double.h"
69 template<>
const Reference<float> Data<float>::lnReference[] = {
70 #include "reference-ln-sp.h"
72 template<>
const Reference<double> Data<double>::lnReference[] = {
73 #include "reference-ln-dp.h"
75 template<>
const Reference<float> Data<float>::log2Reference[] = {
76 #include "reference-log2-sp.h"
78 template<>
const Reference<double> Data<double>::log2Reference[] = {
79 #include "reference-log2-dp.h"
81 template<>
const Reference<float> Data<float>::log10Reference[] = {
82 #include "reference-log10-sp.h"
84 template<>
const Reference<double> Data<double>::log10Reference[] = {
85 #include "reference-log10-dp.h"
92 file = fopen(filenameOut<T, Function::sincos>(),
"wb");
96 file = fopen(filenameOut<T, Function::atan>(),
"wb");
97 fwrite(&Data<T>::atanReference[0],
sizeof(Reference<T>),
sizeof(Data<T>::atanReference) /
sizeof(Reference<T>), file);
100 file = fopen(filenameOut<T, Function::asin>(),
"wb");
101 fwrite(&Data<T>::asinReference[0],
sizeof(Reference<T>),
sizeof(Data<T>::asinReference) /
sizeof(Reference<T>), file);
104 file = fopen(filenameOut<T, Function::acos>(),
"wb");
105 fwrite(&Data<T>::acosReference[0],
sizeof(Reference<T>),
sizeof(Data<T>::acosReference) /
sizeof(Reference<T>), file);
108 file = fopen(filenameOut<T, Function::ln>(),
"wb");
109 fwrite(&Data<T>::lnReference[0],
sizeof(Reference<T>),
sizeof(Data<T>::lnReference) /
sizeof(Reference<T>), file);
112 file = fopen(filenameOut<T, Function::log2>(),
"wb");
113 fwrite(&Data<T>::log2Reference[0],
sizeof(Reference<T>),
sizeof(Data<T>::log2Reference) /
sizeof(Reference<T>), file);
116 file = fopen(filenameOut<T, Function::log10>(),
"wb");
117 fwrite(&Data<T>::log10Reference[0],
sizeof(Reference<T>),
sizeof(Data<T>::log10Reference) /
sizeof(Reference<T>), file);
std::vector< std::vector< double > > Data
static Array< SincosReference< T > > sincosReference()
static const char * filenameOut()