Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

C library question

Tags:
  1. Jul 13, 2011 #1
    So I'm trying to use max_element from the "thrust" library http://developer.nvidia.com/thrust" [Broken] but am not sure the header file has the function it claims to have.
    The header file for max_element can be found http://wiki.thrust.googlecode.com/hg/html/group__extrema.html#ga06e155dabb91848ffd1c5725f8e0ce14" [Broken]

    I am specifically interested in this version of the function:
    Code (Text):
    template<typename ForwardIterator >
    ForwardIterator     thrust::max_element (ForwardIterator first, ForwardIterator last)
    However, when I run my code it breaks when it tries to use the BinaryPredicate comp that is found in this version of the function:
    Code (Text):
    template<typename ForwardIterator , typename BinaryPredicate >
    ForwardIterator     thrust::max_element (ForwardIterator first, ForwardIterator last, BinaryPredicate comp)
    The header file, extrema.h is as follows (Note comment denoting where error occurs):
    Code (Text):
    /*
     *  Copyright 2008-2011 NVIDIA Corporation
     *
     *  Licensed under the Apache License, Version 2.0 (the "License");
     *  you may not use this file except in compliance with the License.
     *  You may obtain a copy of the License at
     *
     *      http://www.apache.org/licenses/LICENSE-2.0
     *
     *  Unless required by applicable law or agreed to in writing, software
     *  distributed under the License is distributed on an "AS IS" BASIS,
     *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     *  See the License for the specific language governing permissions and
     *  limitations under the License.
     */


    /*! \file extrema.h
     *  \brief Host implementations of extrema functions.
     */

    #pragma once

    #include <thrust/pair.h>

    namespace thrust
    {
    namespace detail
    {
    namespace host
    {

    template <typename ForwardIterator, typename BinaryPredicate>
    ForwardIterator min_element(ForwardIterator first,
                                ForwardIterator last,
                                BinaryPredicate comp)
    {
        ForwardIterator imin = first;

        for (; first != last; first++)
        {
            if (comp(*first, *imin)) imin = first;
        }

        return imin;
    }


    template <typename ForwardIterator, typename BinaryPredicate>
    ForwardIterator max_element(ForwardIterator first,
                                ForwardIterator last,
                                BinaryPredicate comp)
    {
        ForwardIterator imax = first;

        for (; first != last; first++)
        {
            if (comp(*imax, *first)) imax = first; // ERROR OCCURS ON THIS LINE
        }

        return imax;
    }


    template <typename ForwardIterator, typename BinaryPredicate>
    thrust::pair<ForwardIterator,ForwardIterator> minmax_element(ForwardIterator first,
                                                                 ForwardIterator last,
                                                                 BinaryPredicate comp)
    {
        ForwardIterator imin = first;
        ForwardIterator imax = first;

        for (; first != last; first++)
        {
            if (comp(*first, *imin)) imin = first;
            if (comp(*imax, *first)) imax = first;
        }

        return thrust::make_pair(imin, imax);
    }

    } // end namespace host
    } // end namespace detail
    } // end namespace thrust
     
    Here is the line where I call the function:
    Code (Text):
    max_loc = thrust::max_element(PsiRes,(PsiRes+Nx*My));
    So is it just me, or is the problem that the version of the function I'm trying to use is missing from the header file?
     
    Last edited by a moderator: May 5, 2017
  2. jcsd
  3. Jul 15, 2011 #2
    Last edited by a moderator: Apr 26, 2017
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook




Similar Discussions: C library question
  1. C Library Problem (Replies: 2)

Loading...