--- Log opened Tue Nov 21 00:00:32 2023 00:04 -!- lightningbot [lightningb@azure.erisian.com.au] has quit [Remote host closed the connection] 00:04 -!- lightningbot [lightningb@azure.erisian.com.au] has joined #secp256k1 01:33 -!- tromp [~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl] has quit [Quit: My iMac has gone to sleep. ZZZzzz…] 02:50 -!- tromp [~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl] has joined #secp256k1 03:48 -!- RubenSomsen [sid301948@user/rubensomsen] has quit [Ping timeout: 246 seconds] 03:55 -!- RubenSomsen [sid301948@user/rubensomsen] has joined #secp256k1 05:26 < real_or_random> we #define this to _int128 on MSVC, and this one returns a signed _int64 05:28 < real_or_random> roconnor: so I believe we don't want this... unless we make the macro a functional-style macro that casts to uint64_t on MSVC 05:28 < real_or_random> that sounds minimally cleaner than what we have currently?! i don't know 05:30 < roconnor> Probably best to keep it as is. I'm not sure why I changed it locally. 05:30 < roconnor> Maybe I have more warnings turned on. 05:31 < real_or_random> makes sense 05:32 < real_or_random> "don't change it if the new version is not clearly better" 06:19 -!- tromp [~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl] has quit [Ping timeout: 256 seconds] 06:42 -!- preimage [~halosghos@user/halosghost] has joined #secp256k1 08:08 < roconnor> real_or_random: okay I think I see what was bothering me. 08:08 < roconnor> https://github.com/bitcoin-core/secp256k1/blob/e72103932d5421f3ae501f4eba5452b1b454cb6e/src/int128_struct_impl.h#L49C22-L49C22 on line 49 08:08 < roconnor> there is an implicit cast from unsigned to signed. 08:09 < real_or_random> ah I think we have an assumption in assumptions.h for these casts 08:10 < roconnor> yeah, I always think that is UB, but I guess it is implementation defined. 08:13 < roconnor> I think I spent a while trying to figure out an expression that would do the conversion without overflow. 08:14 < real_or_random> hehe yeah, 08:15 < real_or_random> my thinking is that it is just philosophically cleaner if the signed x signed function also returns signed 08:15 < roconnor> no this is the low bits of the product. It is very unsigned. 08:15 < real_or_random> the next C standard will set two's complement in stone, by the way 08:15 < roconnor> the thing is that _mul128 is wrong. 08:16 < real_or_random> oh hm 08:17 < real_or_random> in that case, I think I can accept the fact that we're philosophically wrong :P 08:18 < real_or_random> microsoft +shrug+ 13:43 -!- preimage [~halosghos@user/halosghost] has quit [Quit: WeeChat 4.1.1] 22:22 -!- bob_x1 [~bob_x@user/bob-x1/x-8934932] has quit [Remote host closed the connection] 22:22 -!- bob_x1 [~bob_x@user/bob-x1/x-8934932] has joined #secp256k1 23:46 -!- tromp [~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl] has joined #secp256k1 --- Log closed Wed Nov 22 00:00:33 2023