Skip to content

Commit 0313640

Browse files
authored
Reorder list construction in the function php_intpow10 (#11683)
* Reorder array construction in the function * Optimize function php_intlog10abs
1 parent 5572975 commit 0313640

File tree

1 file changed

+17
-18
lines changed

1 file changed

+17
-18
lines changed

ext/standard/math.c

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -19,33 +19,32 @@
1919

2020
#include "php.h"
2121
#include "php_math.h"
22-
#include "zend_multiply.h"
22+
#include "zend_bitset.h"
2323
#include "zend_exceptions.h"
24+
#include "zend_multiply.h"
2425
#include "zend_portability.h"
25-
#include "zend_bitset.h"
2626

27-
#include <math.h>
2827
#include <float.h>
28+
#include <math.h>
2929
#include <stdlib.h>
3030

3131
#include "basic_functions.h"
3232

3333
/* {{{ php_intlog10abs
3434
Returns floor(log10(fabs(val))), uses fast binary search */
3535
static inline int php_intlog10abs(double value) {
36-
int result;
3736
value = fabs(value);
3837

3938
if (value < 1e-8 || value > 1e22) {
40-
result = (int)floor(log10(value));
39+
return (int)floor(log10(value));
4140
} 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};
4741
/* 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+
4948
if (value < values[result]) {
5049
result -= 8;
5150
} else {
@@ -70,23 +69,23 @@ static inline int php_intlog10abs(double value) {
7069
result -= 1;
7170
}
7271
result -= 8;
72+
return result;
7373
}
74-
return result;
7574
}
7675
/* }}} */
7776

7877
/* {{{ php_intpow10
7978
Returns pow(10.0, (double)power), uses fast lookup table for exact powers */
8079
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-
8680
/* Not in lookup table */
8781
if (power < 0 || power > 22) {
8882
return pow(10.0, (double)power);
8983
}
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+
9089
return powers[power];
9190
}
9291
/* }}} */
@@ -1023,7 +1022,7 @@ PHPAPI zend_string *_php_math_number_format_ex(double d, int dec, const char *de
10231022
size_t integral;
10241023
size_t reslen = 0;
10251024
int count = 0;
1026-
int is_negative=0;
1025+
int is_negative = 0;
10271026

10281027
if (d < 0) {
10291028
is_negative = 1;

0 commit comments

Comments
 (0)