2020#include "stdlib/math/base/special/sqrt.h"
2121#include "stdlib/math/base/special/floor.h"
2222#include "stdlib/constants/float64/max_safe_integer.h"
23+ #include "stdlib/math/base/special/fmod.h"
2324#include <stdint.h>
24- #include <math.h>
2525
2626static const double WHEEL_PRIMES [45 ] = {
2727 11.0 , 13.0 , 17.0 , 19.0 , 23.0 , 29.0 , 31.0 , 37.0 , 41.0 , 43.0 , 47.0 , 53.0 , 59.0 , 61.0 , 67.0 , 71.0 , 73.0 , 79.0 , 83.0 , 89.0 , 97.0 ,
@@ -54,23 +54,23 @@ bool stdlib_base_is_prime( const double x ) {
5454 return ( x > 1.0 ); // primes: 2.0, 3.0
5555 }
5656 // Check whether the number is even...
57- if ( x > STDLIB_CONSTANT_FLOAT64_MAX_SAFE_INTEGER || ( fmod ( x , 2.0 ) ) == 0.0 ) {
57+ if ( x > STDLIB_CONSTANT_FLOAT64_MAX_SAFE_INTEGER || ( stdlib_base_fmod ( x , 2.0 ) ) == 0.0 ) {
5858 return false;
5959 }
6060 // Check for small primes...
6161 if ( x < 9.0 ) {
6262 return true; // primes: 5.0, 7.0
6363 }
6464 // Check whether the number is evenly divisible by `3`...
65- if ( fmod ( x , 3.0 ) == 0.0 ) { // TODO: replace fmod usage once we have a stdlib equivalent
65+ if ( stdlib_base_fmod ( x , 3.0 ) == 0.0 ) {
6666 return false;
6767 }
6868 // Check whether the number is evenly divisible by `5`...
69- if ( fmod ( x , 5.0 ) == 0.0 ) {
69+ if ( stdlib_base_fmod ( x , 5.0 ) == 0.0 ) {
7070 return false;
7171 }
7272 // Check whether the number is evenly divisible by `7`...
73- if ( fmod ( x , 7.0 ) == 0.0 ) {
73+ if ( stdlib_base_fmod ( x , 7.0 ) == 0.0 ) {
7474 return false;
7575 }
7676 // Check whether the number is a prime number in the wheel...
@@ -83,54 +83,54 @@ bool stdlib_base_is_prime( const double x ) {
8383 N = stdlib_base_floor ( stdlib_base_sqrt ( x ) );
8484 for ( i = 11 ; i <= N ; i += 210 ) {
8585 if (
86- fmod ( x , i ) == 0.0 || // 11
87- fmod ( x , ( i + 2 ) ) == 0.0 || // 13
88- fmod ( x , ( i + 6 ) ) == 0.0 || // 17
89- fmod ( x , ( i + 8 ) ) == 0.0 || // 19
90- fmod ( x , ( i + 12 ) ) == 0.0 || // 23
91- fmod ( x , ( i + 18 ) ) == 0.0 || // 29
92- fmod ( x , ( i + 20 ) ) == 0.0 || // 31
93- fmod ( x , ( i + 26 ) ) == 0.0 || // 37
94- fmod ( x , ( i + 30 ) ) == 0.0 || // 41
95- fmod ( x , ( i + 32 ) ) == 0.0 || // 43
96- fmod ( x , ( i + 36 ) ) == 0.0 || // 47
97- fmod ( x , ( i + 42 ) ) == 0.0 || // 53
98- fmod ( x , ( i + 48 ) ) == 0.0 || // 59
99- fmod ( x , ( i + 50 ) ) == 0.0 || // 61
100- fmod ( x , ( i + 56 ) ) == 0.0 || // 67
101- fmod ( x , ( i + 60 ) ) == 0.0 || // 71
102- fmod ( x , ( i + 62 ) ) == 0.0 || // 73
103- fmod ( x , ( i + 68 ) ) == 0.0 || // 79
104- fmod ( x , ( i + 72 ) ) == 0.0 || // 83
105- fmod ( x , ( i + 78 ) ) == 0.0 || // 89
106- fmod ( x , ( i + 86 ) ) == 0.0 || // 97
107- fmod ( x , ( i + 90 ) ) == 0.0 || // 101
108- fmod ( x , ( i + 92 ) ) == 0.0 || // 103
109- fmod ( x , ( i + 96 ) ) == 0.0 || // 107
110- fmod ( x , ( i + 98 ) ) == 0.0 || // 109
111- fmod ( x , ( i + 102 ) ) == 0.0 || // 113
112- fmod ( x , ( i + 110 ) ) == 0.0 || // 121 (relatively prime)
113- fmod ( x , ( i + 116 ) ) == 0.0 || // 127
114- fmod ( x , ( i + 120 ) ) == 0.0 || // 131
115- fmod ( x , ( i + 126 ) ) == 0.0 || // 137
116- fmod ( x , ( i + 128 ) ) == 0.0 || // 139
117- fmod ( x , ( i + 132 ) ) == 0.0 || // 143 (relatively prime)
118- fmod ( x , ( i + 138 ) ) == 0.0 || // 149
119- fmod ( x , ( i + 140 ) ) == 0.0 || // 151
120- fmod ( x , ( i + 146 ) ) == 0.0 || // 157
121- fmod ( x , ( i + 152 ) ) == 0.0 || // 163
122- fmod ( x , ( i + 156 ) ) == 0.0 || // 167
123- fmod ( x , ( i + 158 ) ) == 0.0 || // 169 (relatively prime)
124- fmod ( x , ( i + 162 ) ) == 0.0 || // 173
125- fmod ( x , ( i + 168 ) ) == 0.0 || // 179
126- fmod ( x , ( i + 170 ) ) == 0.0 || // 181
127- fmod ( x , ( i + 176 ) ) == 0.0 || // 187 (relatively prime)
128- fmod ( x , ( i + 180 ) ) == 0.0 || // 191
129- fmod ( x , ( i + 182 ) ) == 0.0 || // 193
130- fmod ( x , ( i + 186 ) ) == 0.0 || // 197
131- fmod ( x , ( i + 188 ) ) == 0.0 || // 199
132- fmod ( x , ( i + 198 ) ) == 0.0 || // 209 (relatively prime)
133- fmod ( x , ( i + 200 ) ) == 0.0 // 211
86+ stdlib_base_fmod ( x , i ) == 0.0 || // 11
87+ stdlib_base_fmod ( x , ( i + 2 ) ) == 0.0 || // 13
88+ stdlib_base_fmod ( x , ( i + 6 ) ) == 0.0 || // 17
89+ stdlib_base_fmod ( x , ( i + 8 ) ) == 0.0 || // 19
90+ stdlib_base_fmod ( x , ( i + 12 ) ) == 0.0 || // 23
91+ stdlib_base_fmod ( x , ( i + 18 ) ) == 0.0 || // 29
92+ stdlib_base_fmod ( x , ( i + 20 ) ) == 0.0 || // 31
93+ stdlib_base_fmod ( x , ( i + 26 ) ) == 0.0 || // 37
94+ stdlib_base_fmod ( x , ( i + 30 ) ) == 0.0 || // 41
95+ stdlib_base_fmod ( x , ( i + 32 ) ) == 0.0 || // 43
96+ stdlib_base_fmod ( x , ( i + 36 ) ) == 0.0 || // 47
97+ stdlib_base_fmod ( x , ( i + 42 ) ) == 0.0 || // 53
98+ stdlib_base_fmod ( x , ( i + 48 ) ) == 0.0 || // 59
99+ stdlib_base_fmod ( x , ( i + 50 ) ) == 0.0 || // 61
100+ stdlib_base_fmod ( x , ( i + 56 ) ) == 0.0 || // 67
101+ stdlib_base_fmod ( x , ( i + 60 ) ) == 0.0 || // 71
102+ stdlib_base_fmod ( x , ( i + 62 ) ) == 0.0 || // 73
103+ stdlib_base_fmod ( x , ( i + 68 ) ) == 0.0 || // 79
104+ stdlib_base_fmod ( x , ( i + 72 ) ) == 0.0 || // 83
105+ stdlib_base_fmod ( x , ( i + 78 ) ) == 0.0 || // 89
106+ stdlib_base_fmod ( x , ( i + 86 ) ) == 0.0 || // 97
107+ stdlib_base_fmod ( x , ( i + 90 ) ) == 0.0 || // 101
108+ stdlib_base_fmod ( x , ( i + 92 ) ) == 0.0 || // 103
109+ stdlib_base_fmod ( x , ( i + 96 ) ) == 0.0 || // 107
110+ stdlib_base_fmod ( x , ( i + 98 ) ) == 0.0 || // 109
111+ stdlib_base_fmod ( x , ( i + 102 ) ) == 0.0 || // 113
112+ stdlib_base_fmod ( x , ( i + 110 ) ) == 0.0 || // 121 (relatively prime)
113+ stdlib_base_fmod ( x , ( i + 116 ) ) == 0.0 || // 127
114+ stdlib_base_fmod ( x , ( i + 120 ) ) == 0.0 || // 131
115+ stdlib_base_fmod ( x , ( i + 126 ) ) == 0.0 || // 137
116+ stdlib_base_fmod ( x , ( i + 128 ) ) == 0.0 || // 139
117+ stdlib_base_fmod ( x , ( i + 132 ) ) == 0.0 || // 143 (relatively prime)
118+ stdlib_base_fmod ( x , ( i + 138 ) ) == 0.0 || // 149
119+ stdlib_base_fmod ( x , ( i + 140 ) ) == 0.0 || // 151
120+ stdlib_base_fmod ( x , ( i + 146 ) ) == 0.0 || // 157
121+ stdlib_base_fmod ( x , ( i + 152 ) ) == 0.0 || // 163
122+ stdlib_base_fmod ( x , ( i + 156 ) ) == 0.0 || // 167
123+ stdlib_base_fmod ( x , ( i + 158 ) ) == 0.0 || // 169 (relatively prime)
124+ stdlib_base_fmod ( x , ( i + 162 ) ) == 0.0 || // 173
125+ stdlib_base_fmod ( x , ( i + 168 ) ) == 0.0 || // 179
126+ stdlib_base_fmod ( x , ( i + 170 ) ) == 0.0 || // 181
127+ stdlib_base_fmod ( x , ( i + 176 ) ) == 0.0 || // 187 (relatively prime)
128+ stdlib_base_fmod ( x , ( i + 180 ) ) == 0.0 || // 191
129+ stdlib_base_fmod ( x , ( i + 182 ) ) == 0.0 || // 193
130+ stdlib_base_fmod ( x , ( i + 186 ) ) == 0.0 || // 197
131+ stdlib_base_fmod ( x , ( i + 188 ) ) == 0.0 || // 199
132+ stdlib_base_fmod ( x , ( i + 198 ) ) == 0.0 || // 209 (relatively prime)
133+ stdlib_base_fmod ( x , ( i + 200 ) ) == 0.0 // 211
134134 ) {
135135 return false;
136136 }
0 commit comments