Lokathor / wide

A crate to help you go wide. By which I mean use SIMD stuff.
https://docs.rs/wide
zlib License
298 stars 25 forks source link

Add powf #50

Closed ronniec95 closed 4 years ago

ronniec95 commented 4 years ago

Added powf() functions for all the f32/f64 types. Also fixed ln() for i586 Disabled some tests in 0.5.2 for asin_acos which aren't working yet on i586

ronniec95 commented 4 years ago

Do not merge!

Lokathor commented 4 years ago

okay, will not merge it

ronniec95 commented 4 years ago

Now you can merge.

Please check the notes. There is a bug but it should only affect nan handling in some cases. If you can take a look and fix it, it would be appreciated. (f64x4,f64x2 sign_bits)

Lokathor commented 4 years ago

i can look at and probably merge this later today.

I'm not sure I'll have time for wide bug fixing today or this weekend.

However, T-libs is starting a project group for portable simd in core very soon, so with luck a lot of code either here or in packed_simd will slot right in. The timeline goal is to have it done and stable by late 2021

https://github.com/rust-lang/rfcs/pull/2977

ronniec95 commented 4 years ago

packed_simd is the more powerful library with it's comprehensive set of math functions and everything, and I would use it except that it doesn't work on stable. But yes, keep in the loop, I'd love to contribute

Lokathor commented 4 years ago

oops, looks like the other PR made a few conflicts here.

ronniec95 commented 4 years ago

Conflicts resolved. Looks better. Feel free to merge. When's the next release? I want to push some of my own code up with depends on these new functions

Perhaps a 0.5.1 before a formal 0.6?

Lokathor commented 4 years ago

Have there been breaking changes yet? i think we can keep publishing under the 0.5 series at the moment

ronniec95 commented 4 years ago

Great - will wait for your next 0.5.4 release.

Also had a look at packed_simd, it uses Sleef to implement the math functions; for a core library it would be strange to then depend on a C++ library. A pure rust implementation which you now have would be much better

Lokathor commented 4 years ago

okay, just put it out as 0.5.3