UmbralRaptor changed the topic of #kspacademia to: https://gist.github.com/pdn4kd/164b9b85435d87afbec0c3a7e69d3e6d | Dogs are cats. Spiders are cat interferometers. | Космизм сегодня! | Document well, for tomorrow you may get mauled by a ネコバス. | <UmbralRaptor> … one of the other grad students just compared me to nomal O_o | <ferram4> I shall beat my problems to death with an engineer.
<Ellied> I keep hearing what is either rambunctious kids or really pissed cats in the distance
<Ellied> I think it must be kids. I don't think Edgewater has cats that get quite that pissed.
egg is now known as egg|zzz|egg
* egg|zzz|egg gives Ellied a negative 0
AppliedRaptor is now known as UmbralRaptor
e_14159 has quit [Ping timeout: 180 seconds]
<soundnfury> !wpn -add:adj specific
<Qboid> soundnfury: Adjective added!
<soundnfury> !wpn egg|zzz|egg
* Qboid gives egg|zzz|egg a bovine denormal
<soundnfury> floating point of oxen!
icefire has quit [Read error: Connection reset by peer]
e_14159 has joined #kspacademia
<soundnfury> !wpn -add:adj unit in the last
<Qboid> soundnfury: Adjective added!
<soundnfury> !wpn e_14159
* Qboid gives e_14159 a graviton comma
<UmbralRaptor> !wpn soundnfury
* Qboid gives soundnfury a Lyman culverin
<UmbralRaptor> !wpn e_14159
* Qboid gives e_14159 a biologically active instability/comma hybrid
* soundnfury fires small cannonballs at hydrogen
<soundnfury> !wpn UmbralRaptor
* Qboid gives UmbralRaptor a xenon halberd
<UmbralRaptor> The halberd melts above 120 K?
<soundnfury> it's for fighting Charlemagne's army on Neptune.
<UmbralRaptor> !wpn -add:wpn Durandal
<Qboid> UmbralRaptor: Weapon already added!
<UmbralRaptor> >_>
* Ellied pokes AliExpress with an intercontinental stick.
<Ellied> I want my solid-state relays, dammit!
<Ellied> also the IR LEDs I ordered like half a year ago.
<Ellied> also, surely I've proved myself not to be a robot enough times now.
* UmbralRaptor had to go through something like 6 or 8 in a row the other day.
<Ellied> wh- I'm looking at the page for the IR LEDs (850nm, 5mm packet, 50 count) and the "customers who bought this item also bought:" is nothing but dildos.
<Ellied> wait no, this is the microwave doppler radar motion sensors.
<Ellied> or maybe both. I'm looking at my pending order page.
<Ellied> Okay, so people who bought IR LEDs and/or doppler motion sensors... often also bought dildos?
* Ellied is confuse
<soundnfury> 0_o
<UmbralRaptor> Maybe they're building sexbots?
<soundnfury> apparently ones designed to work in the dark, too
<soundnfury> infrared leds, doppler radar...
<soundnfury> actually, now I'm curious, what's _Ellied_ building?
<soundnfury> is it a killbot? It's a killbot, isn't it?
<Ellied> Sadly my plans don't yet involve putting both of those devices in the same machine, but focused R&D could change this
<Ellied> I got the doppler sensors because they were literally cheaper than dirt (like 30¢ for a fully assembled board) and wanted to see what they were like, and the IR LEDs because I want to be able to operate IR-controlled devices from an RPi.
<soundnfury> I suppose you could have semi-autonomous attack drones (probably quadcopters because that's what everyone's doing now) that the RPi shepherds normally, but when they detect a moving target with their dopplers they POUNCE
<Ellied> I need to figure out how good the dopplers are at operating in proximity to each other. If they don't interfere, or if the interference can be minimized or compensated out, then I might be able to use them to build a rudimentary direction finder, but if not, then they're pretty much useless for actual positioning.
<soundnfury> maybe you can run all but one of them in a passive mode? you know, bistatic radar?
<Ellied> hmm, possibly.
<Ellied> I think the problem with that is that they're very, very simply designed and rely on having their own transmission signal close at hand to compare with the returning signal.
<soundnfury> though then you'd need to vectorially subtract out half of the Δf from the transmitting one from what all the others see...
<soundnfury> Ellied: hmm, maybe they can also receive the direct-line signal from the xmitter?
<soundnfury> also gives a timing reference, as long as they know how far away the xmitter is
<Ellied> honestly what I probably want to do is just get them all spaced out far enough that the band-pass filter cuts out the combined frequencies of different transmitters.
<Ellied> If the filter gives me about 10-10000 Hz (the highest I'd be likely to go for finding most human-scale movement) and the things are operating at ~10 GHz, I can play it safe and step around by a MHz or so, and stay out of the way.
<Ellied> They might already vary by that much. I haven't done tests with the modules I have yet.
<Ellied> the ones I already have would be best suited for this because they don't have integrated filters and do have tuning screws.
<Ellied> the ones on order are purpose-built for security systems, I think they even have those BIS0001 chips or whatever PIR modules usually have.
<soundnfury> hmm, c * 10kHz / 10 GHz = μc = 300m/s, halve it because reflection... Yeah, 150m/s is probably enough for stuff you're likely to be detectifying.
<Ellied> cool, that was about where I thought that would land speed-wise.
<kmath> <3PSboyd> Birb content https://t.co/QMnIXfkRPL
<Ellied> let's see, if you know the magnitude of an object's radial velocity from n different known positions, can you figure out where it is?
<Ellied> I feel like you can't.
<Ellied> I guess if you had a finely-spaced cubical lattice of measurement points, you could get an approximation with uncertainty roughly equal to the lattice spacing, since you'd see a line of measurements with local maximum values, and then a dip somewhere along that line where the object actually is.
<soundnfury> Ellied: I suspect you probably _can_ find it
<Ellied> and I suppose if your object is moving with a constant velocity, you could use a mobile measurement location (e.g. drone) to find its path by just moving toward higher frequencies.
<soundnfury> three, or maybe four, measurements will give you its velocity vector, then combining that with the radial velocity from another sensor gives you info about its bearing from that sensor
<soundnfury> You could probably just brute-force it with Bayes tbh, you have the forward ((x,v) -> radial velocities) mapping, it's only the reverse that's hard
<soundnfury> and iirc Bayes basically inverts functions by magic ;)
<Ellied> how do you get ahold of the velocity vector from a few measurements of the magnitude of the radial velocity? Antenna cleverness aside, you don't know anything about bearing, distance, or direction.
<Ellied> that is, direction of motion, towards or away.
<soundnfury> you know the positions of all your measurement points
<soundnfury> you know that there is one single (x,v) of the target that's got to be consistent with all your measurements
<soundnfury> (oh and you _do_ know towards-or-away, that's the sign of the Δf)
<soundnfury> so you've got a system of simultaneous (probably nonlinear) equations
<soundnfury> v . (x - x_i) = r_i
<Ellied> not with these devices, the necessary information to find towards-or-away doesn't make it out of the shielded magic box. (when all is said and done, you just get a sine (or square, as the case may be) wave of some frequency, with nothing to reference phase to)
<soundnfury> where x_i is location of sensor i, and r_i is radial velocity measured by that sensor
<soundnfury> Ellied: oh what, you get the heterodyne of TX and RX signals? :'(
<Ellied> yup.
<Ellied> cheaaaap modules.
<soundnfury> and because this is all happening in reals (no quadrature component) you can't distinguish positive from negative frequency :(
<soundnfury> ah well, that probably means you need more sensors, and there are more constraints on placing them
<soundnfury> (in the same way that multiple coplanar sensors are singular and don't get enough data, there'll be some weird cohyperboloid singularities)
<soundnfury> but I'm pretty sure you can still constrain to a point with enough sensors
<Ellied> oh, with multiple devices in operation, I might be able to compare amplitudes. the amplitude isn't especially useful for just one device, since it's dependent on size, conductivity, and a bunch of other stuff in addition to distance, but I think you might get away with assuming that those other things are constant for a single object and relative amplitude will relate to distance.
<soundnfury> hmm, beware of assuming the mixer is linear
<Ellied> oh, it's probably not, but it might be calibratable.
<soundnfury> but think about it, each radial velocity measurement specifies a 5-dimensional subset of your 6-dimensional phase space (it might be a subspace but I'm not sure)
<soundnfury> combine six of those and, absent singularities, you've constrained to a point. Simples.
<Ellied> hrm
<soundnfury> The fact that the r.v. isn't signed means that each sensor gets _two_ 5D subsets, so six sensors gives you 64 solutions rather than just one,
<soundnfury> but a seventh sensor will (again, assuming nonsingular) select just one of those
<soundnfury> oh and they definitely _aren't_ subspaces because the equation isn't linear, I've just realised. It has v.x in it.
<soundnfury> although... that's a single term, so if you can solve for that _first_ and subtract it out from all your r_i,
<soundnfury> you now have a bunch of v . x_i = (adjusted r_i)
<soundnfury> so that's a simple matrix inversion to get v
<soundnfury> buuuut then the only information you have about x is v.x, which is kinda weird
<soundnfury> you can only locate it up to a plane perpendicular to its velocity
<soundnfury> oh btw Ellied, can you make your modules emit pulses, or just CW?
<soundnfury> 'cos if you could get round-trip time, or even just TDOA, that would help soooo much ;)
<Ellied> Pulsing is possible, but I don't know to what degree. I understand it's mostly done to limit power consumption, because they each draw about 40 mA while running CW.
<Ellied> I suppose I could try smacking the power supply input with a delta function from an avalanche transistor and seeing if anything interesting happens.
<soundnfury> mmm, tasty δ functions :)
<Ellied> oh, here's a thought - what if I somehow made it produce a pulse which rapidly increased in frequency, say over the course of a few tens of nanoseconds, and looked at the behavior of the mixed output? that might give range information.
<Ellied> not sure *how* I would convince these modules to do that, but whatever
<soundnfury> ah, a chirp
<soundnfury> I think you actually want something more subtle: you want to *frequency modulate* the transmission
<soundnfury> then the lag in the returned signal produces a phase delay in the modulation, from which you can deduce the range :D
<soundnfury> however, the modulation frequency would have to be rather high, since the range accuracy is the product of phase accuracy and modulation wavelength
<Ellied> yeah, dunno about that
<soundnfury> but it can be done, if you can modulate the transmitters the rest is comparatively simple
<Ellied> I haven't the faintest idea how long these things take to start up/shut down. for all I know it could be in the milliseconds.
<Ellied> Also not entirely sure how to measure, since I don't exactly have a 10 GHz oscilloscope lying around.
<soundnfury> Try just coupling some RF into the power supply input (while also providing DC I guess), and see what the output does.
<soundnfury> Hmm, for measurement I guess you could have one in CW and another as the DUT
<soundnfury> both transmitting at once
<soundnfury> then measure the output of the CW one
<soundnfury> now it conveniently heterodynes the DUT TX signal down for you ;)
<Ellied> assuming they both operate on exactly the same frequency normally, I guess.
<Ellied> given that they have adjustment screws, that might be a bad assumption, but it also might be fixable.
<Ellied> set two up, watch the output of one, tweak the screw on the other till the first starts jumping.
<soundnfury> yup, you should be able to tune them to zero beat frequency (or at least low)
<soundnfury> I mean, really you just need to get the beat frequency into a range your scope can handle
<soundnfury> mmm, instant noodles + paprika
<soundnfury> not exactly michelin-starred cuisine, but warm and filling :)
<UmbralRaptor> This seems a bit optimistic http://www.phdcomics.com/comics.php?f=1951
<soundnfury> heh
* UmbralRaptor should probably make ramen tonight…
<soundnfury> π/2! the answer is π/2!
<kmath> <Astro_Wright> @david_kipping As long as we're musing that the dips might repeat, let me try a far more optimistic scenario for yo… https://t.co/gqZYSuB6YW
<egg|zzz|egg> !wpn UmbralRaptor
* Qboid gives UmbralRaptor a principal cat
<egg|zzz|egg> !wpn -add:wpn gazebo
<Qboid> egg|zzz|egg: Weapon already added!
egg|phone|egg has joined #kspacademia
egg|cell|egg has quit [Ping timeout: 180 seconds]
<egg|phone|egg> !wpn
* Qboid gives egg|phone|egg a [DATA EXPUNGED] polytrope
<egg|work|egg> !wpn
* Qboid gives egg|work|egg a nominal hydrofluoroolefin
e_14159 has quit [Ping timeout: 204 seconds]
e_14159 has joined #kspacademia
<soundnfury> !wpn -add:wpn wolf
<Qboid> soundnfury: Weapon added!
<soundnfury> !wpn
* Qboid gives soundnfury a fall emitter
<soundnfury> is that just a gravitating body?
Thomas|AWAY is now known as Thomas
<Iskierka> isn't everything a gravitating body?
<Ellied> YIL there's a MATLAB kernel for Jupyter Notebook
<Ellied> my prof is about to start working with some high-power Linux boxes and MATLAB for data analysis, he might be interested in that.
<SnoopJeDi> Interesting!
<egg|work|egg> !wpn Ellied
* Qboid gives Ellied an ellied conducting catenoid
<SnoopJeDi> Apparently Sandia has been writing their own plotting library for Python: https://github.com/sandialabs/toyplot/
<Iskierka> who isn't?
<SnoopJeDi> I like the philosophical approach they have to browser-friendly animations, if not the actual implementation
<SnoopJeDi> They have some uhhh opinions about "legacy" formats that are paper-friendly
egg|cell|egg has joined #kspacademia
egg|phone|egg has quit [Read error: -0x1: UNKNOWN ERROR CODE (0001)]
<egg|zzz|egg> !wpn Ellied
* Qboid gives Ellied a harmless theory of everything
<egg|zzz|egg> !wpn Iskierka
* Qboid gives Iskierka an unitary gantlet
<egg|zzz|egg> !wpn UmbralRaptor
* Qboid gives UmbralRaptor a bipolar junction factor
<egg|zzz|egg> !wpn whitequark
* Qboid gives whitequark an uranium jellyfish
egg|phone|egg has joined #kspacademia
egg|cell|egg has quit [Ping timeout: 383 seconds]
<kmath> YouTube - How Fast Can a Fidget Spinner Spin? (Before Exploding)
<Technicalfool> he watched a Scott Manley video and decided to test it.
<egg|zzz|egg> nice!
regex has joined #kspacademia
<egg|zzz|egg> bofh: so, fun question: assuming you want to compute arc tg (y/x) close to (and below) y/x = i; should you just divide and use the arc th, or use either of the arc sh or arc ch
<egg|zzz|egg> I think the answer strongly depends on whether you have a way to exactly compute x^2+y^2 for floating-point numbers x and y, but I may be entirely misunderstanding error analysis
<whitequark> Technicalfool: wow, the comments on those video are hateful.
<whitequark> like, okay, I get that level of bile when we're talking about a certain president. the fuck is that much wrong with a tiny toy?
Dingbat1967 has joined #kspacademia
Dingbat1967 has left #kspacademia [#kspacademia]
<egg|zzz|egg> whitequark: wow, I had not looked at those
<egg|zzz|egg> !wpn whitequark
* Qboid gives whitequark a circular superuser/asterism hybrid
* UmbralRaptor wishes that youtube had a setting that always hid comments.
<whitequark> adblock
<whitequark> actually I should follow my own advice
<UmbralRaptor> I, uh, haven't seen a setting that does that.
<whitequark> just pretend that it's an ad that adblock doesn't yet know
<whitequark> and follow the same process
<UmbralRaptor> For every single video?
<whitequark> hm?
<whitequark> adblock rules work globally on the domain
<UmbralRaptor> I can select the comments with ublock's picker, but…
<egg|zzz|egg> UmbralRaptor: on my laptop I need to scroll to see the comments so that mostly keeps me sane
<UmbralRaptor> Ah, I can edit the filter
<UmbralRaptor> Now it is all of youtube!
<UmbralRaptor> \o/
<bofh> egg|zzz|egg: do you mean just x*x+y*y, or sqrt(x*x+y*y)? b/c if the former, the only place that can cause precision loss is at the addition when x*x and y*y vary greatly in magnitude (or when one of them is around machine-epsilon in size)
<bofh> as for the question, you mean computing the arctangent for numbers of the form x = -iy?
<bofh> i.e. along that line?
<e_14159> noscript works, too.
<Ellied> whitequark: I'd been playing with my friend's fidget spinners he 3D-printed for like a year before I stuck my head out into the social media and discovered that they're apparently a federal fucking issue
<bofh> egg|zzz|egg: so first of all, am I being a total idiot here or isn't that generally where you take a branch cut for arctan(z)?
<Ellied> like, all this time I thought he was just playing with the magics of ceramic bearings. But apparently people have been cranking out both these things and thinkpieces about whether they're Good or Bad.
<egg|zzz|egg> bofh: ah but the branch cut is above i, or below -i
<bofh> anyway I'd probably collapse it to an arcsine
<bofh> at least I'm fairly confident doing so would work.
<bofh> ahh, right.
<bofh> hm.
<egg|zzz|egg> bofh: I think that just increases the error?
<egg|zzz|egg> the thing is you get 1 ulp from the division, and then feed that into arc th (assuming that the implementation of arc th isn't shit, which is a tall order)
Thomas is now known as Thomas|AWAY
<egg|zzz|egg> so the only thing that can help is if you can push the great condition earlier so that the ulps don't get amplified quite as much or get squashed altogether
<bofh> arc th being what, arc hyperbolic tangent?
<egg|zzz|egg> yes
<bofh> like most places I've seen that's just implemented as arctan(i*z)
<bofh> ...I guess those would qualify as "shite implementations" :P
<egg|zzz|egg> well, that just means you support complex numbers, but how do you compute arc tg of an imaginary
<egg|zzz|egg> (I tend to use the french conventions in trig, tg, sh, ch, th, etc.)
<egg|zzz|egg> I think now in france tan has caught on, sh, ch, and th are still current
<egg|zzz|egg> very old french texts have stuff like tang. :-p
<egg|zzz|egg> bofh: but the question remains the same; assuming the arctg(z) is good, can you do arctg(y/x) better below i
<egg|zzz|egg> obviously you can do arctg(y/x) better than division then arctangent for reals
<egg|zzz|egg> but there the issue is rather different, you don't have fundamental condition woes
<bofh> sec, brb food
<egg|zzz|egg> hmmm you *might* be able to do better with an fma
<egg|zzz|egg> or maybe I'm not doing the error analysis reasonably
<egg|zzz|egg> should I use the backward error or something
* egg|zzz|egg should learn how to do error analysis properly someday
icefire has joined #kspacademia
<soundnfury> bofh, egg|zzz|egg: there's no such thing as arc hyperbolic functions. They're *area* hyperbolic functions, that's why it's called (e.g.) artanh
<egg|zzz|egg> soundnfury: they're angles of hyperbolic triangles \o/
<egg|zzz|egg> (and yes, I know you can also do areas on hyperbolae, but that's silly, why not circle areas while you're at it)
<soundnfury> well they're still called arfooh and not arcfooh, at least in English
<egg|zzz|egg> soundnfury: oh absolutely
<soundnfury> also: if sinh is pronounced 'shine', then sith...
<egg|zzz|egg> soundnfury: but I say hippopotamoi and eggsplaining, I'm not going to refrain from saying arc th :-p
<soundnfury> that's eggsecrable behaviour
<soundnfury> I eggspect better from you.
<egg|zzz|egg> soundnfury: wat, sinh is pronounced shine? O_o
<soundnfury> yup
<soundnfury> standard: shine, coshine, tansh.
<soundnfury> me: shine, choz, þan
<soundnfury> (or maybe ðan if I'm being lazy)
<egg|zzz|egg> you mean it's not pronounced [zinus hyperbolikus]
<soundnfury> now I want to pronounce that y germanly.
<soundnfury> "Hyper-" just sounds so good auf Deutsch :)
<egg|zzz|egg> soundnfury: well that was in IPA brackets
<egg|zzz|egg> that's how sinh is read in german
<soundnfury> oh, is that what they were
<egg|zzz|egg> bofh or e_14159 should be able to confirm
<soundnfury> !wpn
* Qboid gives soundnfury a rotary door
<egg|zzz|egg> !wpn -add:adj scary
<Qboid> egg|zzz|egg: Adjective added!
<soundnfury> it's like a revolving door, except the door stays still and the building rotates around it.
* soundnfury enters the vicinity of a place adjacent to a location.
<soundnfury> !wpn egg|zzz|egg
* Qboid gives egg|zzz|egg a Jeans python
<soundnfury> ... is that a trouser snake?
<SnoopJeDi> something something pants decomposition
<soundnfury> Qboid's getting a bit risqué there I think.
<egg|zzz|egg> soundnfury: I hear sometimes french student do the silly thing and read sh and ch as [ʃ]
<soundnfury> Why shouldn't you ride a bike while wearing denim?
<egg|zzz|egg> s/dent/dents
<Qboid> egg|zzz|egg meant to say: soundnfury: I hear sometimes french students do the silly thing and read sh and ch as [ʃ]
<soundnfury> Because of the Raleigh-jeans instability.
<SnoopJeDi> ?
<soundnfury> !wpn SnoopJeDi
* Qboid gives SnoopJeDi a Renesas geodesic
<bofh> soundnfury: heh, whoops. I always keep forgetting that fact, thanks.
<soundnfury> !wpn bofh
* Qboid gives bofh a pigeon-guided Orcrist
<bofh> egg|zzz|egg: yes, do backward error. but if you're already getting a bound of 1ULP given correctly-rounded artanh and hypot(), who cares? :P
<egg|zzz|egg> bofh: uuuh, in forward error you're getting really shitty things if arc th amplifies your ulp near 1
<egg|zzz|egg> I think above 0.9 you can do smarter than divide-then-arcth
<bofh> so I'm curious where the main issue is. since the division is just complex mul followed by a real div-by-norm
<egg|zzz|egg> namely arc sh (y / sqrt(x^2 + y^2))
<bofh> yeah
<bofh> like that's what I'd do in that case (20:12:19 <@bofh> anyway I'd probably collapse it to an arcsine
<bofh> (by which I mean asin(z))
<egg|zzz|egg> bofh: well the main issue is that the division is a perfectly fine operation with a condition of +/-1 in either argument, but it gives you half an ULP
<egg|zzz|egg> which directly gets fed into something whose condition is rocketing towards infinity
<bofh> ahh, point, its condition *is* that bad...
<egg|zzz|egg> whereas with arc sh (y / sqrt(x^2 + y^2)) you put your ill-condition (in the canceling sum) much earlier
<egg|zzz|egg> and by the theorem of great madness of conditions and roundings, putting your ill-conditions earlier is better (qualitatively)
<egg|zzz|egg> bofh: in fact if you could put the ill-condition as *the first operation* you would be entirely fine
<egg|zzz|egg> (i.e. with an atomic x^2+y^2)
<egg|zzz|egg> you can probably get close with an fma, but not quite (need a square before)
<egg|zzz|egg> bofh: because if the near-infinite condition is first, it's not amplifying any rounding
<bofh> so the square should be fine always. worst-case scenario you do the square of one in the FMA (iirc, the larger) and the smaller outside.
<egg|zzz|egg> bofh: the square *is* fine, the thing is that the half-ulp from that gets fed into horrible cancellation
<egg|zzz|egg> bofh: if we managed to move the horrible condition one step up, we'd be talking ULPs on the whole thing, but here it's amplified beyond recognition still (though better than the divition amplified by arc th)
<egg|zzz|egg> (arth? argth?)
<egg|zzz|egg> fhtagn
<egg|zzz|egg> bofh: error analysis is surprisingly addictive :-p
<bofh> Hm.
<bofh> Like really the issue is can we get a better conditioned version of atan/asinh?
<egg|zzz|egg> well arc sh is perfectly fine where we're looking at it
<egg|zzz|egg> and arc tg is arc tg, not much you can do to it
<egg|zzz|egg> you can't really talk it into not having a singularity at i (hell, the beginning of a branch cut even)
<egg|zzz|egg> (now in the larger scheme of things, do you want to use arc tg in Kepler's problem, but that's a completely different question)
<egg|zzz|egg> provided you want to compute arc tg y/x for imaginary y/x, you *can* do better than divide-then-arctg
<egg|zzz|egg> but how much better can you do, and can you get to the point where you can bound the number of ULPs lost
<egg|zzz|egg> bofh: the larger scheme of how to solve Kepler's problem is also interesting, but it intersects this, also has fundamentally bad conditions, and is much harder
<egg|zzz|egg> what with Kepler's equation being a fresh hell
<egg|zzz|egg> (esp. as e->1)
<egg|zzz|egg> bofh: yeah fma won't save you (but it would enable moving the handoff from arctg to arcsin to 0.86 i instead of 0.90 i, so that's that)
<egg|zzz|egg> bofh: a fused multiply-multiply-and-add, on the other hand, would move that to 0.79 i *and* bound the (forward) error on the whole thing to 3 ULPs or somesuch
<egg|zzz|egg> maybe 2
<egg|zzz|egg> bofh: is there a way to get an exact x^2+y^2 with some fancy shuffling of compensated sums/fmadds/whatever
<egg|zzz|egg> (or just an x^2+y^2 with a bounded number of ULPs really)
* egg|zzz|egg tries looking for something in https://twitter.com/hashtag/floatingPointWithAtlas?src=hash
<egg|zzz|egg> (cat.)
<egg|zzz|egg> waitwaitwaitwaitwait https://twitter.com/stephentyrone/status/849398027089580032 am I reading this right
<kmath> <stephentyrone> #FloatingPointWithAtlas #SterbenzLemma https://t.co/5o9SjEs0Ci
<egg|zzz|egg> bofh: doesn't that solve things? ^
<egg|zzz|egg> also very cute cat
<egg|zzz|egg> hmmm, not quite, because the problem isn't the error *from the subtraction*, it's that the subtraction amplifies the error from the squarings...
<egg|zzz|egg> I feel like you could combine the preceding catpic with https://twitter.com/stephentyrone/status/852210867232006149 to get an exact x^2+y^2 with a lot of fancy footwork
<kmath> <stephentyrone> #FloatingPointWithAtlas https://t.co/rIMQcB4PGo
<egg|zzz|egg> bofh: thoughts?
<soundnfury> !wpn egg|zzz|egg
* Qboid gives egg|zzz|egg a discrete symbol
<egg|zzz|egg> bofh: of course all this relies on the trig/hyperbolic trig functions themselves being correct to a bit more than half an ULP, and, well, many implementations of <cmath> suck infinitely (and in the rare cases where they don't, it's not documented)
* egg|zzz|egg weeps
<soundnfury> egg|zzz|egg: and that's why ghod invented inline asms :P
<soundnfury> !wpn
* Qboid gives soundnfury a prime sabre
<egg|zzz|egg> soundnfury: that's hardly relevant is it
<soundnfury> if you don't trust <cmath>, you write the implementations yourself :P
<soundnfury> (note: do not do this. But you knew that already)
<egg|zzz|egg> well, even if you did write your own transcendental functions (the thought has crossed my mind of course), you could use things like std::fma for fma, and intrinsics for where you really need to call a specific instruction
<soundnfury> std::fml
<egg|zzz|egg> (arguably you could do it faster by directly writing SSE, so you do have a point, but you should be able to write functionally equivalent things at a higher level)
<egg|zzz|egg> soundnfury: also, while I don't think that's a thing we'll do in the foreseeable future, phl *has* implemented elementary functions in the past
<egg|zzz|egg> (for Apex's implementation of Ada.Numerics)
<egg|zzz|egg> so we should be able to know what we're doing if it comes to that :-p
* soundnfury gives egg|zzz|egg an elemental function
<soundnfury> I'll stick to integer maths (currently rewriting the kernel's eBPF verifier at work)
<Ellied> !wpn add Van Allen wrench
* Qboid gives add Van Allen wrench a faithful inequality
<egg|zzz|egg> soundnfury: but there are cats teaching floating point
<Ellied> !wpn -add:wpn Van Allen wrench
<Qboid> Ellied: Weapon added!
regex has quit [Remote host closed the connection]
* UmbralRaptor points a Geiger counter at the wrench.
<egg|zzz|egg> Ellied: shouldn't you add Van Allen as an adjective and wrench as a weapon?
<egg|zzz|egg> !wpn UmbralRaptor
* Qboid gives UmbralRaptor a thorium matrix with a heptode attachment
<UmbralRaptor> egg|zzz|egg: But the pun!
<egg|zzz|egg> ooooh
* egg|zzz|egg just noticed
<egg|zzz|egg> UmbralRaptor: see I read that with the English pronunciation, something like [ælən], but I'm used to the french pronunciation for the key/wrench/thing, [alɛn]
<Ellied> egg|zzz|egg: yes but that would be boring
<Ellied> !wpn -add:adj Van Allen
<Qboid> Ellied: Adjective added!
<soundnfury> !wpn -add:wpn van
<Qboid> soundnfury: Weapon added!
<soundnfury> !wpn Ellied
* Qboid gives Ellied a McShipFace
<egg|zzz|egg> Ellied: yeah it's just that I had missed the pun
<kmath> YouTube - Appalling Visual Puns № 5
<Ellied> I'd been jokingly calling them "alien wrenches" before but I think I like "Van Allen wrench" better
<soundnfury> (who the hell calls allen keys 'wrenches'?)
* egg|zzz|egg is also used to seeing "keys" in english
<egg|zzz|egg> in french they're the same word
<Ellied> my friend has been trying to tell me that it's "alien key"
<Ellied> idk I've always said wrench
<SnoopJeDi> I've heard it both ways and the meaning is clear enough
<soundnfury> I guess you could say learning to use a different word... is a bit of a wrench xD
<soundnfury> /me|zzz|em\
<kmath> <Newpa_Hasai> @whitequark The second Death Star was vulnerable because Palpatine decided to test in production.
<egg|zzz|egg> Ellied: alien key does sound even more alien, so that's nice
<egg|zzz|egg> possibly enough to be entirely abstruse
<egg|zzz|egg> which is good
<Ellied> what the fuck. MATLAB is fucked up.
<SnoopJeDi> "Anyone [who does not] have acrophobia are eligible to participate...During the experiment, the participant will be asked to walk through a bridge between two high-rise buildings in the virtual environment with viewing different situations."
<Ellied> s = ["foo","bar"]; s(1) returns "f"
<SnoopJeDi> Ellied, IIRC strings themselves are vectors, perhaps you want {"foo", "bar"}
<SnoopJeDi> But yes, MATLAB is...uh, special.
<Ellied> yeah, I figured out that I wanted a cell array, I guess expecting vectors to act like python lists was wrong
<SnoopJeDi> The lower your expectations are with MATLAB, the better, heh