Line  Count  Source (jump to first uncovered line) 
1   /* 
2   * Copyright 2017 Uber Technologies, Inc. 
3   * 
4   * Licensed under the Apache License, Version 2.0 (the "License"); 
5   * you may not use this file except in compliance with the License. 
6   * You may obtain a copy of the License at 
7   * 
8   * http://www.apache.org/licenses/LICENSE2.0 
9   * 
10   * Unless required by applicable law or agreed to in writing, software 
11   * distributed under the License is distributed on an "AS IS" BASIS, 
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
13   * See the License for the specific language governing permissions and 
14   * limitations under the License. 
15   */ 
16   /** @file mathExtensions.c 
17   * @brief Math functions that should've been in math.h but aren't 
18   */ 
19   
20   #include "mathExtensions.h" 
21   
22   /** 
23   * _ipow does integer exponentiation efficiently. Taken from StackOverflow. 
24   * 
25   * @param base the integer base (can be positive or negative) 
26   * @param exp the integer exponent (should be nonnegative) 
27   * 
28   * @return the exponentiated value 
29   */ 
30  0  int64_t _ipow(int64_t base, int64_t exp) { 
31  0  int64_t result = 1; 
32  0  while (exp) { 
33  0  if (exp & 1) result *= base; 
34  0  exp >>= 1; 
35  0  base *= base; 
36  0  } 
37  

38  0  return result; 
39  0  } 