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_H_
186cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi#define LE_FX_ENGINE_DSP_CORE_BASIC_H_
196cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi
206cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi#include <limits.h>
216cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi#include "common/core/math.h"
226cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi#include "common/core/types.h"
236cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi
246cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivinamespace le_fx {
256cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi
266cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivinamespace sigmod {
276cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi
286cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi// Searchs for the interval that contains <x> using a divide-and-conquer
296cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi// algorithm.
306cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi// X[]: a vector of sorted values (X[i+1] > X[i])
316cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi// x:   a value
326cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi// StartIndex: the minimum searched index
336cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi// EndIndex: the maximum searched index
346cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi// returns: the index <i> that satisfies: X[i] <= x <= X[i+1] &&
356cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi//          StartIndex <= i <= (EndIndex-1)
366cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivitemplate <typename T>
376cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Triviint SearchIndex(const T x_data[],
386cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi                T x,
396cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi                int start_index,
406cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi                int end_index);
416cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi
426cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi}  // namespace sigmod
436cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi
446cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi}  // namespace le_fx
456cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi
466cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi#include "dsp/core/basic-inl.h"
476cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi
486cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi#endif  // LE_FX_ENGINE_DSP_CORE_BASIC_H_
49