| ... | @@ -146,7 +146,7 @@ export fn bcmp(vl: [*]allowzero const u8, vr: [*]allowzero const u8, n: usize) i | ... | @@ -146,7 +146,7 @@ export fn bcmp(vl: [*]allowzero const u8, vr: [*]allowzero const u8, n: usize) i |
| 146 | var index: usize = 0; | 146 | var index: usize = 0; |
| 147 | while (index != n) : (index += 1) { | 147 | while (index != n) : (index += 1) { |
| 148 | if (vl[index] != vr[index]) { | 148 | if (vl[index] != vr[index]) { |
| 149 | return 1; | 149 | return 1; |
| 150 | } | 150 | } |
| 151 | } | 151 | } |
| 152 | | 152 | |
| ... | @@ -254,32 +254,110 @@ export fn fmod(x: f64, y: f64) f64 { | ... | @@ -254,32 +254,110 @@ export fn fmod(x: f64, y: f64) f64 { |
| 254 | | 254 | |
| 255 | // TODO add intrinsics for these (and probably the double version too) | 255 | // TODO add intrinsics for these (and probably the double version too) |
| 256 | // and have the math stuff use the intrinsic. same as @mod and @rem | 256 | // and have the math stuff use the intrinsic. same as @mod and @rem |
| 257 | export fn floorf(x: f32) f32 {return math.floor(x);} | 257 | export fn floorf(x: f32) f32 { |
| 258 | export fn ceilf(x: f32) f32 {return math.ceil(x);} | 258 | return math.floor(x); |
| 259 | export fn floor(x: f64) f64 {return math.floor(x);} | 259 | } |
| 260 | export fn ceil(x: f64) f64 {return math.ceil(x);} | 260 | |
| 261 | export fn fma(a: f64, b: f64, c: f64) f64 {return math.fma(f64, a, b, c);} | 261 | export fn ceilf(x: f32) f32 { |
| 262 | export fn fmaf(a: f32, b: f32, c: f32) f32 {return math.fma(f32, a, b, c);} | 262 | return math.ceil(x); |
| 263 | export fn sin(a: f64) f64 {return math.sin(a);} | 263 | } |
| 264 | export fn sinf(a: f32) f32 {return math.sin(a);} | 264 | |
| 265 | export fn cos(a: f64) f64 {return math.cos(a);} | 265 | export fn floor(x: f64) f64 { |
| 266 | export fn cosf(a: f32) f32 {return math.cos(a);} | 266 | return math.floor(x); |
| 267 | export fn exp(a: f64) f64 {return math.exp(a);} | 267 | } |
| 268 | export fn expf(a: f32) f32 {return math.exp(a);} | 268 | |
| 269 | export fn exp2(a: f64) f64 {return math.exp2(a);} | 269 | export fn ceil(x: f64) f64 { |
| 270 | export fn exp2f(a: f32) f32 {return math.exp2(a);} | 270 | return math.ceil(x); |
| 271 | export fn log(a: f64) f64 {return math.ln(a);} | 271 | } |
| 272 | export fn logf(a: f32) f32 {return math.ln(a);} | 272 | |
| 273 | export fn log2(a: f64) f64 {return math.log2(a);} | 273 | export fn fma(a: f64, b: f64, c: f64) f64 { |
| 274 | export fn log2f(a: f32) f32 {return math.log2(a);} | 274 | return math.fma(f64, a, b, c); |
| 275 | export fn log10(a: f64) f64 {return math.log10(a);} | 275 | } |
| 276 | export fn log10f(a: f32) f32 {return math.log10(a);} | 276 | |
| 277 | export fn fabs(a: f64) f64 {return math.fabs(a);} | 277 | export fn fmaf(a: f32, b: f32, c: f32) f32 { |
| 278 | export fn fabsf(a: f32) f32 {return math.fabs(a);} | 278 | return math.fma(f32, a, b, c); |
| 279 | export fn trunc(a: f64) f64 {return math.trunc(a);} | 279 | } |
| 280 | export fn truncf(a: f32) f32 {return math.trunc(a);} | 280 | |
| 281 | export fn round(a: f64) f64 {return math.round(a);} | 281 | export fn sin(a: f64) f64 { |
| 282 | export fn roundf(a: f32) f32 {return math.round(a);} | 282 | return math.sin(a); |
| | 283 | } |
| | 284 | |
| | 285 | export fn sinf(a: f32) f32 { |
| | 286 | return math.sin(a); |
| | 287 | } |
| | 288 | |
| | 289 | export fn cos(a: f64) f64 { |
| | 290 | return math.cos(a); |
| | 291 | } |
| | 292 | |
| | 293 | export fn cosf(a: f32) f32 { |
| | 294 | return math.cos(a); |
| | 295 | } |
| | 296 | |
| | 297 | export fn exp(a: f64) f64 { |
| | 298 | return math.exp(a); |
| | 299 | } |
| | 300 | |
| | 301 | export fn expf(a: f32) f32 { |
| | 302 | return math.exp(a); |
| | 303 | } |
| | 304 | |
| | 305 | export fn exp2(a: f64) f64 { |
| | 306 | return math.exp2(a); |
| | 307 | } |
| | 308 | |
| | 309 | export fn exp2f(a: f32) f32 { |
| | 310 | return math.exp2(a); |
| | 311 | } |
| | 312 | |
| | 313 | export fn log(a: f64) f64 { |
| | 314 | return math.ln(a); |
| | 315 | } |
| | 316 | |
| | 317 | export fn logf(a: f32) f32 { |
| | 318 | return math.ln(a); |
| | 319 | } |
| | 320 | |
| | 321 | export fn log2(a: f64) f64 { |
| | 322 | return math.log2(a); |
| | 323 | } |
| | 324 | |
| | 325 | export fn log2f(a: f32) f32 { |
| | 326 | return math.log2(a); |
| | 327 | } |
| | 328 | |
| | 329 | export fn log10(a: f64) f64 { |
| | 330 | return math.log10(a); |
| | 331 | } |
| | 332 | |
| | 333 | export fn log10f(a: f32) f32 { |
| | 334 | return math.log10(a); |
| | 335 | } |
| | 336 | |
| | 337 | export fn fabs(a: f64) f64 { |
| | 338 | return math.fabs(a); |
| | 339 | } |
| | 340 | |
| | 341 | export fn fabsf(a: f32) f32 { |
| | 342 | return math.fabs(a); |
| | 343 | } |
| | 344 | |
| | 345 | export fn trunc(a: f64) f64 { |
| | 346 | return math.trunc(a); |
| | 347 | } |
| | 348 | |
| | 349 | export fn truncf(a: f32) f32 { |
| | 350 | return math.trunc(a); |
| | 351 | } |
| | 352 | |
| | 353 | export fn round(a: f64) f64 { |
| | 354 | return math.round(a); |
| | 355 | } |
| | 356 | |
| | 357 | export fn roundf(a: f32) f32 { |
| | 358 | return math.round(a); |
| | 359 | } |
| | 360 | |
| 283 | fn generic_fmod(comptime T: type, x: T, y: T) T { | 361 | fn generic_fmod(comptime T: type, x: T, y: T) T { |
| 284 | @setRuntimeSafety(false); | 362 | @setRuntimeSafety(false); |
| 285 | | 363 | |