00001 #ifndef _theplu_yat_normalizer_gauss_
00002 #define _theplu_yat_normalizer_gauss_
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #include "Spearman.h"
00027 #include "yat/utility/concept_check.h"
00028 #include "yat/utility/iterator_traits.h"
00029
00030 #include <boost/concept_check.hpp>
00031
00032 #include <gsl/gsl_cdf.h>
00033
00034 #include <iterator>
00035
00036 namespace theplu {
00037 namespace yat {
00038 namespace normalizer {
00039
00052 class Gauss
00053 {
00054 public:
00068 template<typename RandomAccessIter1, typename RandomAccessIter2>
00069 void operator()(RandomAccessIter1 first, RandomAccessIter1 last,
00070 RandomAccessIter2 result) const
00071 {
00072 BOOST_CONCEPT_ASSERT((utility::DataIteratorConcept<RandomAccessIter1>));
00073 BOOST_CONCEPT_ASSERT((utility::DataIteratorConcept<RandomAccessIter2>));
00074 BOOST_CONCEPT_ASSERT((boost::RandomAccessIterator<RandomAccessIter1>));
00075 BOOST_CONCEPT_ASSERT((boost::Mutable_RandomAccessIterator<RandomAccessIter2>));
00076 Spearman spearman;
00077 spearman(first, last, result);
00078 RandomAccessIter2 end = result + std::distance(first, last);
00079 utility::iterator_traits<RandomAccessIter2> trait;
00080 while (result != end) {
00081 trait.data(result) = gsl_cdf_ugaussian_Pinv(trait.data(result));
00082 ++result;
00083 }
00084 }
00085
00086
00087 private:
00088 };
00089
00090 }}}
00091 #endif