egg|nomz|egg 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> egg|nomz|egg: generally if your eyes are dewing over, that's not the weather. | <ferram4> I shall beat my problems to death with an engineer.
<egg|overheated|egg>
!u अ
<Qboid>
U+0905 DEVANAGARI LETTER A (अ)
<egg|overheated|egg>
!u 𝐴𝐀𝔸ア𝕬𒀀𐌀अ阿𐠀
<Qboid>
egg|overheated|egg: Too many characters! (Maximum: 10)
<egg|overheated|egg>
Qboid, you can't count
<egg|overheated|egg>
!u 𝐴𝐀𝔸ア𝕬
<Qboid>
U+1D434 MATHEMATICAL ITALIC CAPITAL A (𝐴)
<Qboid>
U+1D400 MATHEMATICAL BOLD CAPITAL A (𝐀)
<Qboid>
U+1D538 MATHEMATICAL DOUBLE-STRUCK CAPITAL A (𝔸)
<Qboid>
U+30A2 KATAKANA LETTER A (ア)
<Qboid>
U+1D56C MATHEMATICAL BOLD FRAKTUR CAPITAL A (𝕬)
<egg|overheated|egg>
!u 𒀀𐌀अ阿𐠀
<Qboid>
U+12000 CUNEIFORM SIGN A (𒀀)
<Qboid>
U+10300 OLD ITALIC LETTER A (𐌀)
<Qboid>
U+0905 DEVANAGARI LETTER A (अ)
<Qboid>
U+963F CJK IDEOGRAPH-963F (阿)
<Qboid>
U+10800 CYPRIOT SYLLABLE A (𐠀)
e_14159_ has joined #kspacademia
e_14159 has quit [Ping timeout: 202 seconds]
<UmbralRaptor>
!u ℃
<Qboid>
U+2103 DEGREE CELSIUS (℃)
<bofh>
egg|overheated|egg: I have questions. Or rather I would if you didn't already link me that tweet :P
* UmbralRaptor
's main questions involve how much math would be needed to understand the quotes that @chordbug posted.
<kmath>
<bofh453> @FioraAeterna I *did* tell you the ethyl cyanoacrylate party balloon trick, iirc?
<bofh>
UmbralRaptor: cyanoacrylates will not polymerize in an environment without water or oxygen (iirc the reaction is mediated by water and greatly accelerated by free oxygen)
<bofh>
UmbralRaptor: so you take a balloon, some Et-2-Cyanoacrylate and some glitter and take that all into a Nitrogen glovebox (prolly dessicating it first w/P4O10 or something)
<bofh>
fill the balloon with glitter, then carefully with the cyanoacrylate, which should stay freely running and liquid if you did this correctly.
<bofh>
then inflate the balloon (preferably with Hydrogen) and *carefully* seal it then cauterize the seal if it's a rubber balloon (this is safe, there's no Oxygen in the glovebox, the Hydrogen won't catch fire)
<bofh>
anyway now take this to someone you really hate and pop it, glitter falls onto every surface and is instantly superglued whereever it lands.
<kmath>
<bofh453> @stephentyrone @eggleroy I take it to be ~1/sqrt(epsilon) or ~1/(epsilon^{1/4}) depending on situation, since yeah,… https://t.co/Y19Uyl02x9
<egg|overheated|egg>
for higher harmonics of gravitational fields
<bofh>
egg|overheated|egg: uhh double-double-double or Payne-Hanek for arg reduction then just use a minimax polynomial on [0,π/4)?
<egg|overheated|egg>
bofh: sin2п
<egg|overheated|egg>
um
<egg|overheated|egg>
okay that's a cyrillic п >_>
<bofh>
like that's what I do in my fast sincosf (iirc 4 ULP max error, which is good enough for gov't work^W^Waudio/RF DSP)
<bofh>
uhh
<bofh>
also oh you specifically need sin(πx) and not sin(x)? that's like *so* much easier like holy crap
<bofh>
your argument reduction can be done trivially for sin(πx) with at most a single ULP difference (or is it half a ULP? not sure) because you're just computing the integer truncation (can be done exactly) and then subtracting it from the original (can be done to high precision with a tiny bit of exponent twiddling first).
<kmath>
<stephentyrone> ✅ Surrounded by mountains ⏎ ✅ Cannot just walk into a restaurant ⏎ ... is Switzerland Mordor? https://t.co/wMe7XuUmGp
<egg|overheated|egg>
bofh: well it's more that we don't care whether it's sin or sin 2π
<egg|overheated|egg>
bofh: we store the angular velocity of planets, we can just as easily store their frequency :-p
<egg|overheated|egg>
bofh: uh, argument reduction is exact? it's just taking the fractional part
<bofh>
erm. not sure I follow? if you can either use a sin(x) or a sin(πx) just as easily, you *obviously* want to implement sin(πx)
<bofh>
I thought taking fractional parts is not guaranteed to be rounded faithfully for sufficiently large values?
<egg|overheated|egg>
ah right subtraction gives you some ulp
<bofh>
like trunc(x) is exact but the subtraction isn't guaranteed to be nice.
<egg|overheated|egg>
yeah
<egg|overheated|egg>
bofh: wait, Sterbenz
<egg|overheated|egg>
bofh: (assume x positive wlog) x - entier(x) is either x - 0 or Sterbenz applies and it's exact
<egg|overheated|egg>
bofh: yeah, we have a choice so it's sin2п and not σιν
<egg|overheated|egg>
bofh: in practice one has a choice quite often for physics-related stuff, if your inpuct has measurement error turning angular velocities into frequencies is inconsequential
<bofh>
OH RIGHT YES STERBENZ SAVES YOU
<bofh>
thank fuck
<bofh>
I completely forgot about that >_>
<bofh>
(in my defense I blame the heat and the past... day of ""fun"")
<egg|overheated|egg>
tbh heat is awful
<egg|overheated|egg>
how are you
<egg|overheated|egg>
bofh: also any suggestion for the name other than "FastSinCos2π"?
<egg|overheated|egg>
okay that sounds horribly silly because "pif" is slang for "nose" in french
<egg|overheated|egg>
bofh: yeah but see my comment about SlowPoch :-p
<bofh>
I mean I'm sticking to libm naming convention so that means all lowercase, ascii and an 'f' at the end since it's single precision.
<bofh>
:P
<bofh>
I'd prolly call it exactly what you said if I didn't want to do that.
<bofh>
sure, sec.
<egg|overheated|egg>
FistfulOfULPsSinCos2π is a tad too verbose
<bofh>
so for me "fast_" <-> "fistfulofULPs_" :P
<bofh>
since that's usually what -ffast-math gives you, for varying sizes of fist.
<egg|overheated|egg>
so in principia we like reproducibility, so fast math is emphatically not ok :_p
<bofh>
I mean -ffast-math -fno-associative-math -fno-finite-math-only is essentially reproducible, just requires a different theoretical framework in parts.
<bofh>
*usually* -fno-math-errno -fno-trapping-math suffices tho and that *IS* fully reproducible.
<bofh>
anyhow sec, looking at that issue right now.
<bofh>
yeah why the hell are they running the minimization on those quotients
<bofh>
particularly for cos
<bofh>
I guess that -1 in the argument prevents the divide-by-x from giving you a pole, at least
<bofh>
but that's still insane
<bofh>
like just compute Remez on [0,π/4) for sin(πx), cos(πx) via Mathematica or lolremez or something.
<bofh>
like that seems eggstremely silly, honestly, and I think unneeded. *ESPECIALLY* the random sqrt in sin(πx).
<egg|overheated|egg>
bofh: re. why 1/23, because otherwise mathematica gets confused and misses an eggstremum
<egg|overheated|egg>
bofh: and re. the square root, because you want an appropriately odd or even function
<egg|overheated|egg>
(without having to do surgery around 0)
<egg|overheated|egg>
bofh: the square root makes some sense to me, the 1/23 less so
<bofh>
uhh, wait, why do you have to do surgery around 0 without it? that doesn't make any sense.
<egg|overheated|egg>
you want the function to be exact in 0
<egg|overheated|egg>
and hopefully sufficiently regular
<bofh>
that's much easier to do with a conditional for sufficiently small values of x that just returns x, tho >_>
<bofh>
LMAO
<egg|overheated|egg>
bofh: ?
<bofh>
so uh, SNCF's DNS server (that I inexplicably still had in my resolv.conf) blocks urbandictionary.
<egg|overheated|egg>
Ꙩ_ꙩ
<egg|overheated|egg>
bofh: so, discussed with phl on the polynomials
<bofh>
as in according to 213.111.4.90 it's NXDOMAIN, according to like 8.8.8.8 it exists
<egg|overheated|egg>
bofh: apparently it's well known that you always want to divide by the parity
<bofh>
egg|overheated|egg: again, I'm still skeptical
<bofh>
*does* this actually help you much? and in what cases is it visible
<egg|overheated|egg>
bofh: in practice, if you remez sin, you need degree 7 to get a better error than this degree 3 on the square
<egg|overheated|egg>
the even terms are wasteful to approximate an odd function
<egg|overheated|egg>
and then you have the mess of connecting sin x = x with the polynomial sufficiently regularly
<bofh>
OHH RIGHT, I completely forgot about that.
<bofh>
so uh I do that too >_>
<egg|overheated|egg>
you do what?
<bofh>
it's needed to get rid of the even terms in an odd function polynomial and the odd terms in an even function polynomial
<egg|overheated|egg>
ah right, you divide by the parity too :-p
<bofh>
divide by the parity when computing my Remez polynomials
<egg|overheated|egg>
yay :-p
<egg|overheated|egg>
bofh: do you also fudge away the start of the optimization interval because the pole confuses remez :-p
<bofh>
Yes, but that's standard practise I find.
<egg|overheated|egg>
bofh: in practice one would tune the value of 1/23 but this is a fistful-of-ulps implementation so shrug :-p
<bofh>
You want to avoid the immediate nbhds of simple poles and split up your approximation over intervals delineated by them if there are multiple (i.e. ln(Gamma(x)) and the like)
<bofh>
1/23 is honestly good enough, I think I use FLT_EPSILON*(float)M_1_PI as my interval start.
<egg|overheated|egg>
bofh: also how do you like SlowPoch as a function name,
<bofh>
Why Poch?
<egg|overheated|egg>
Pochhammer,
<bofh>
I mean yes, but why Pochhammer
<bofh>
where are you using those functions in Principia?
<egg|overheated|egg>
bofh: now, for the SlowPoch joke
<Qboid>
egg|overheated|egg meant to say: bofh: no, for the SlowPoch joke
<bofh>
I mean I get the pun, it is a good pun, but why is it a pun that is relevant in Principia numerics? :P
<egg|overheated|egg>
not at all :-p
<bofh>
or are we implementing gamma function quotients for fun, in which case that is something I can get behind,
<egg|overheated|egg>
bofh: mostly because characterizing "fistful of ULPs" as "Fast" sounds a bit silly, and hypothetically calling "correctly-rounded" "Slow" to make it sillier :-p
<egg|overheated|egg>
and then slowpoke pun
<bofh>
I mean those two statements are correct,
<egg|overheated|egg>
bofh: still can't come up with a good name for Fast tho
<egg|overheated|egg>
bofh: "HalfPrecision" is potentially misleading (could be read as faithful binary32 or something), "FistfulOfULPs" is too verbose...
<kmath>
<eggleroy> @stephentyrone Accordingly, shouldn’t sinPi(±∞) be ±0? Why does IEEE 754-2008 recommend instead that it signal the… https://t.co/dJCk8J3wrG
APlayer has quit [Ping timeout: 383 seconds]
APlayer has joined #kspacademia
<bofh>
egg|overheated|egg: I mean the limit at infinity of sin/cos is not well-defined, it just becomes more and more oscillatory
<bofh>
so like, I can make a justification for NaN, 0, +1 and -1
<bofh>
granted, they're not all equal justifications, I think 0 is the sanest thing to set that to
<bofh>
but yeah.
<bofh>
egg|overheated|egg: also I maintain a good name for it *is* 'Fast',
<egg|overheated|egg>
bofh: no, I'm not talking about sin
<bofh>
also was there like a crime wave or something this past weekend? literally every metro line is just constantly repeating "please keep an eye on your bags at all times" and "beware of pickpockets" like with no pauses the entire line's worth.
<egg|overheated|egg>
bofh: I'm talking about sinPi
<bofh>
egg|overheated|egg: for the case of limits at infinity they're mathematically equivalent >_>
<egg|overheated|egg>
bofh: yes, but this is floating point :-p
<kmath>
<eggleroy> @chordowl @stephentyrone Yes, this is the idea (also the idea underlying @stephentyrone’s comment,… https://t.co/kSvYhbLuxu
<egg|overheated|egg>
infinity clearly an even integer >_>
<bofh>
oh, right, for x a sufficiently large float, x is purely integral
<bofh>
right. in that case zero is the only sensible result for sinPi(±∞).
<bofh>
YEAH OKAY WHY IS IT NaN, THAT MAKES NO SENSE.
<egg|overheated|egg>
bofh: exactly
<egg|overheated|egg>
bofh: the cat liked my tweet but did not reply i am confused,
<bofh>
I am doubly confused,
<egg|overheated|egg>
double-double confusion
<bofh>
eggactly
<egg|overheated|egg>
!pet bofh
* Qboid
pets bofh
<egg|overheated|egg>
bofh: tbh for sin NaN is perfectly good, I can't really see 0 making sense; but sinPi is an entirely different animal :-p
<bofh>
egg|overheated|egg: well for sin the limit at ±∞ doesn't exist, so putting NaN, the middle of the interval of the range, or one of the extreme points of the range are all (in different contexts) possibly sensible answers.
<bofh>
sinPi is only a different animal b/c large floats don't have fractional parts :P
<egg|overheated|egg>
yeah, but only NaN won't cause any miscomputations from an intermediate over/underflow, the other ones seem like they can introduce nasty things
<egg|overheated|egg>
whereas sinPi at infinity won't only cause problems that aren't already there for a shittonne of finite numbers
<egg|overheated|egg>
s/ only /
<Qboid>
egg|overheated|egg meant to say: whereas sinPi at infinity won'tcause problems that aren't already there for a shittonne of finite numbers
<egg|overheated|egg>
close enough
<bofh>
egg|overheated|egg: well no, NaN will feed thru functions as NaN, thus causing miscomputations with 100% probability b/c NaNs are like gremlins. the others will introduce nasty edge cases in some cases but work in others.
<egg|overheated|egg>
bofh: well yes, that's not a miscomputation, that's a visible failure
<egg|overheated|egg>
a nasty edge case is harder to detect
<bofh>
I mean, true.
<bofh>
I guess it depends on if visibly failing 100% of the time is desired or not.
<egg|overheated|egg>
bofh: well it's a case where there is no sound result, so that should be handled by a caller that knows whether it should recover in some clever way because it's part of an expression that does have a limit or something
<egg|overheated|egg>
bofh: contrast sinPi, where one can argue that if 0 is a problem at infinity it's not just a problem there, and affects 0xdead.beefp38 just as well
<bofh>
I mean yes, sinPi is obvious, I'm not contesting that :P
<egg|overheated|egg>
bofh: well, not completely
<egg|overheated|egg>
bofh: sinPi being 0 at infinity wouldn't raise FE_INEXACT (there's no rounding or anything), and then you have something that's clearly not a correct result (on extended reals) without any flags
<egg|overheated|egg>
arguably it's a mess from that standpoint whenever one is manipulating infinities, so shrug
<egg|overheated|egg>
otoh the only other thing that does assumptions on the even integer nature of infinity is pow and pow is full of shit
<kmath>
<stephentyrone> @volatile_void `powr`, `pown` and `rootn` are what IEEE 754 actually wants. Including `pow` was a case of someone t… https://t.co/W6PLzAhtxh
APlayer has quit [Read error: Connection reset by peer]
<egg|overheated|egg>
!meow bofh
* Qboid
meows at bofh
<UmbralRaptor>
!choose trigonometric sin|Catholic sin
<Qboid>
UmbralRaptor: Your options are: trigonometric sin, Catholic sin. My choice: Catholic sin
<UmbralRaptor>
;choose trigonometric sin|Catholic sin
<kmath>
UmbralRaptor: Catholic sin
APlayer has joined #kspacademia
<egg|overheated|egg>
UmbralRaptor: cf. the sting of death is a trigonometric line,
<egg|overheated|egg>
bofh: it should get cooler around thursday here, i should have stayed at anbo another week >_>
<APlayer>
Do overheating eggs eggsplode?
APlayer is now known as BPlayer
<UmbralRaptor>
Boiling Liquid Expanding Vapor Egg
<bofh>
egg|overheated|egg: I mean the same for Paris, it's currently slightly less hot today but tomrrow will be bad and Tues bullshit-bad.
hillexed has joined #kspacademia
<bofh>
Also yes, clearly, then I could've just taken the train up to Yvetot a few days ago,
<bofh>
it's perfectly well-defined and this is where the difficulty comes in.
<bofh>
it's perfectly well-defined but the argument is an *integer* and it turns out that diving an integer by Pi doesn't result in something nice
<bofh>
and you need that value to reasonably high precision to return the correct argument
<bofh>
so argument reduction for large arguments of sin(x)/cos(x) is eggstremely ""fun"".
<UmbralRaptor>
aaaa
<egg|overheated|egg>
bofh: yes, it's hard, but that doesn't make it ill-defined
<egg|overheated|egg>
it's ill-defined for infinity but that's a different can of worms
<bofh>
egg|overheated|egg: so I never said it was ill-defined, I said it was *well-defined* and that's why it's hard. were it ill-defined in general and not just at infinity things'd be a ton easier. :P
<bofh>
also ROFL so two girls sat down next to me and I *think* in retrospect they were making fun of me (or trying to hit on me, the context was ambiguous given my level of French)
UmbralRaptor has quit [Read error: Connection reset by peer]
UmbralRaptop has joined #kspacademia
<egg|overheated|egg>
bofh: what were they saying
<bofh>
naturally, the combination of language barrier and me needing to fix a bloody acpid script right then before it initiates a system halt led to comedy
<egg|overheated|egg>
how so
UmbralRaptop has quit [Read error: -0x1: UNKNOWN ERROR CODE (0001)]
<bofh>
uh commenting on how my hair looks nice and being strangely impressed at how fast I can switch VTs on a computer (amusingly one thing I *did* understand clearly was them asking if I had a virus to which the response was 'no, linux commandline')
<egg|overheated|egg>
hah
<iximeow>
lol
<BPlayer>
UmbralRaptor: Dish washer died over here. Let's mourn our fallen together
<bofh>
egg|overheated|egg: like, hitting on me generally doesn't work, even without the language barrier I either will be oblivious or think you're actually making fun of me, and I'm not interested regardless. :-P
UmbralRaptop has joined #kspacademia
<bofh>
uhh someone just went by on a bike with a bunch of flashing lights and like 40 toy chirpy birds
* Qboid
gives UmbralRaptop's connection a spring roc
UmbralRaptop has quit [Ping timeout: 186 seconds]
* UmbralRaptor
🔪 📶
<egg|overheated|egg>
!u 📶
<Qboid>
U+1F4F6 ANTENNA WITH BARS (📶)
BPlayer has quit [Ping timeout: 182 seconds]
<bofh>
egg|overheated|egg: sec
<bofh>
egg|overheated|egg: also I am now imagining some sort of horrible targeted CRISPR activation of melanocytes so as to enable one to encode messages in patterns on cat fur, thanks for that,
<egg|overheated|egg>
haha
<egg|overheated|egg>
bofh: did you see the chessboard
<bofh>
egg|overheated|egg: yeah I went to there shortly after you mentioned it, it was like one of the last things I saw.
<egg|overheated|egg>
oh you went out that early?
<egg|overheated|egg>
clearly you need to go back :-p
<egg|overheated|egg>
also blarg i need to go back there too
<bofh>
egg|overheated|egg: things came up (long story, you know one of them)
<bofh>
and I mean duh
<bofh>
and YES YOU DO
<egg|overheated|egg>
hah
pthag has quit [Remote host closed the connection]
<egg|overheated|egg>
!wpn bofh
* Qboid
gives bofh a vorpal nephroid
<egg|overheated|egg>
!wpn cats that interact with bofh
* Qboid
gives cats that interact with bofh a zygohistomorphic d7
<bofh>
LOL
<bofh>
!wpn egg|overheated|egg
* Qboid
gives egg|overheated|egg a helical prepromorphism
<egg|overheated|egg>
is Qboid running a morphism sale or what
<bofh>
I feel like someone needs to commission @chordbug to do art of a Morphism Sale
egg|work|egg has quit [Remote host closed the connection]
hillexed has joined #kspacademia
hillexed has quit [Ping timeout: 194 seconds]
hillexed has joined #kspacademia
<egg|overheated|egg>
!wpn bofh
* Qboid
gives bofh a short sabre
<egg|overheated|egg>
blarg too hot to zzz
<egg|phone|egg>
!Wpn UmbralRaptor
* Qboid
gives UmbralRaptor a rhombic iridium breadbasket
* UmbralRaptor
stares at Qboid. Are you suggesting something by using iridium?
<iximeow>
!wpn egg
* Qboid
gives egg a DEC torch/segmentation fault hybrid