16cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi/*
26cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi * Copyright (C) 2013 The Android Open Source Project
36cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi *
46cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi * Licensed under the Apache License, Version 2.0 (the "License");
56cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi * you may not use this file except in compliance with the License.
66cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi * You may obtain a copy of the License at
76cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi *
86cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi *      http://www.apache.org/licenses/LICENSE-2.0
96cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi *
106cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi * Unless required by applicable law or agreed to in writing, software
116cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi * distributed under the License is distributed on an "AS IS" BASIS,
126cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
136cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi * See the License for the specific language governing permissions and
146cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi * limitations under the License.
156cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi */
166cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi
176cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi#ifndef LE_FX_ENGINE_DSP_CORE_BASIC_INL_H_
186cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi#define LE_FX_ENGINE_DSP_CORE_BASIC_INL_H_
196cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi
206cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi#include <math.h>
216cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi
226cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivinamespace le_fx {
236cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi
246cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivinamespace sigmod {
256cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi
266cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivitemplate <typename T>
276cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Triviint SearchIndex(const T x_data[],
286cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi                T x,
296cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi                int start_index,
306cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi                int end_index) {
316cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi  int start = start_index;
326cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi  int end = end_index;
336cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi  while (end > start + 1) {
346cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi    int i = (end + start) / 2;
356cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi    if (x_data[i] > x) {
366cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi      end = i;
376cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi    } else {
386cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi      start = i;
396cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi    }
406cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi  }
416cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi  return start;
426cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi}
436cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi
446cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi}  // namespace sigmod
456cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi
466cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi}  // namespace le_fx
476cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi
486cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi#endif  // LE_FX_ENGINE_DSP_CORE_BASIC_INL_H_
49