@@ -19,9 +19,13 @@ using namespace detail;
1919
2020template <typename inType,typename outType>
2121static inline af_array histogram (const af_array in, const unsigned &nbins,
22- const double &minval, const double &maxval)
22+ const double &minval, const double &maxval,
23+ const bool islinear)
2324{
24- return getHandle (histogram<inType,outType>(getArray<inType>(in),nbins,minval,maxval));
25+ if (islinear)
26+ return getHandle (histogram<inType,outType, true >(getArray<inType>(in),nbins,minval,maxval));
27+ else
28+ return getHandle (histogram<inType,outType, false >(getArray<inType>(in),nbins,minval,maxval));
2529}
2630
2731af_err af_histogram (af_array *out, const af_array in,
@@ -33,12 +37,12 @@ af_err af_histogram(af_array *out, const af_array in,
3337
3438 af_array output;
3539 switch (type) {
36- case f32 : output = histogram<float , uint>(in, nbins, minval, maxval); break ;
37- case f64 : output = histogram<double , uint>(in, nbins, minval, maxval); break ;
38- case b8 : output = histogram<char , uint>(in, nbins, minval, maxval); break ;
39- case s32: output = histogram<int , uint>(in, nbins, minval, maxval); break ;
40- case u32 : output = histogram<uint , uint>(in, nbins, minval, maxval); break ;
41- case u8 : output = histogram<uchar , uint>(in, nbins, minval, maxval); break ;
40+ case f32 : output = histogram<float , uint>(in, nbins, minval, maxval, info. isLinear () ); break ;
41+ case f64 : output = histogram<double , uint>(in, nbins, minval, maxval, info. isLinear () ); break ;
42+ case b8 : output = histogram<char , uint>(in, nbins, minval, maxval, info. isLinear () ); break ;
43+ case s32: output = histogram<int , uint>(in, nbins, minval, maxval, info. isLinear () ); break ;
44+ case u32 : output = histogram<uint , uint>(in, nbins, minval, maxval, info. isLinear () ); break ;
45+ case u8 : output = histogram<uchar , uint>(in, nbins, minval, maxval, info. isLinear () ); break ;
4246 default : TYPE_ERROR (1 , type);
4347 }
4448 std::swap (*out,output);
0 commit comments