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