19
19
20
20
#include "php.h"
21
21
#include "php_math.h"
22
- #include "zend_multiply .h"
22
+ #include "zend_bitset .h"
23
23
#include "zend_exceptions.h"
24
+ #include "zend_multiply.h"
24
25
#include "zend_portability.h"
25
- #include "zend_bitset.h"
26
26
27
- #include <math.h>
28
27
#include <float.h>
28
+ #include <math.h>
29
29
#include <stdlib.h>
30
30
31
31
#include "basic_functions.h"
32
32
33
33
/* {{{ php_intlog10abs
34
34
Returns floor(log10(fabs(val))), uses fast binary search */
35
35
static inline int php_intlog10abs (double value ) {
36
- int result ;
37
36
value = fabs (value );
38
37
39
38
if (value < 1e-8 || value > 1e22 ) {
40
- result = (int )floor (log10 (value ));
39
+ return (int )floor (log10 (value ));
41
40
} else {
42
- static const double values [] = {
43
- 1e-8 , 1e-7 , 1e-6 , 1e-5 , 1e-4 , 1e-3 , 1e-2 , 1e-1 ,
44
- 1e0 , 1e1 , 1e2 , 1e3 , 1e4 , 1e5 , 1e6 , 1e7 ,
45
- 1e8 , 1e9 , 1e10 , 1e11 , 1e12 , 1e13 , 1e14 , 1e15 ,
46
- 1e16 , 1e17 , 1e18 , 1e19 , 1e20 , 1e21 , 1e22 };
47
41
/* Do a binary search with 5 steps */
48
- result = 15 ;
42
+ int result = 15 ;
43
+ static const double values [] = {
44
+ 1e-8 , 1e-7 , 1e-6 , 1e-5 , 1e-4 , 1e-3 , 1e-2 , 1e-1 , 1e0 , 1e1 , 1e2 ,
45
+ 1e3 , 1e4 , 1e5 , 1e6 , 1e7 , 1e8 , 1e9 , 1e10 , 1e11 , 1e12 , 1e13 ,
46
+ 1e14 , 1e15 , 1e16 , 1e17 , 1e18 , 1e19 , 1e20 , 1e21 , 1e22 };
47
+
49
48
if (value < values [result ]) {
50
49
result -= 8 ;
51
50
} else {
@@ -70,23 +69,23 @@ static inline int php_intlog10abs(double value) {
70
69
result -= 1 ;
71
70
}
72
71
result -= 8 ;
72
+ return result ;
73
73
}
74
- return result ;
75
74
}
76
75
/* }}} */
77
76
78
77
/* {{{ php_intpow10
79
78
Returns pow(10.0, (double)power), uses fast lookup table for exact powers */
80
79
static inline double php_intpow10 (int power ) {
81
- static const double powers [] = {
82
- 1e0 , 1e1 , 1e2 , 1e3 , 1e4 , 1e5 , 1e6 , 1e7 ,
83
- 1e8 , 1e9 , 1e10 , 1e11 , 1e12 , 1e13 , 1e14 , 1e15 ,
84
- 1e16 , 1e17 , 1e18 , 1e19 , 1e20 , 1e21 , 1e22 };
85
-
86
80
/* Not in lookup table */
87
81
if (power < 0 || power > 22 ) {
88
82
return pow (10.0 , (double )power );
89
83
}
84
+
85
+ static const double powers [] = {
86
+ 1e0 , 1e1 , 1e2 , 1e3 , 1e4 , 1e5 , 1e6 , 1e7 , 1e8 , 1e9 , 1e10 , 1e11 ,
87
+ 1e12 , 1e13 , 1e14 , 1e15 , 1e16 , 1e17 , 1e18 , 1e19 , 1e20 , 1e21 , 1e22 };
88
+
90
89
return powers [power ];
91
90
}
92
91
/* }}} */
@@ -1023,7 +1022,7 @@ PHPAPI zend_string *_php_math_number_format_ex(double d, int dec, const char *de
1023
1022
size_t integral ;
1024
1023
size_t reslen = 0 ;
1025
1024
int count = 0 ;
1026
- int is_negative = 0 ;
1025
+ int is_negative = 0 ;
1027
1026
1028
1027
if (d < 0 ) {
1029
1028
is_negative = 1 ;
0 commit comments