Line data Source code
1 : #include "grib2.h" 2 : /* 3 : * w. ebisuzaki 4 : * 5 : * return x**y 6 : * 7 : * 8 : * input: double x 9 : * int y 10 : */ 11 129614 : double int_power(double x, g2int y) { 12 : 13 : double value; 14 : 15 129614 : if (y < 0) { 16 45 : y = -y; 17 45 : x = 1.0 / x; 18 : } 19 129614 : value = 1.0; 20 : 21 445087 : while (y) { 22 315473 : if (y & 1) { 23 192261 : value *= x; 24 : } 25 315473 : x = x * x; 26 315473 : y >>= 1; 27 : } 28 129614 : return value; 29 : } 30 :