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.
<UmbralRaptor> ;choose homework|something else
<kmath> UmbralRaptor: homework
<UmbralRaptor> !choose homework|something else
<Qboid> UmbralRaptor: Your options are: homework, something else. My choice: homework
awang has joined #kspacademia
<soundnfury> …
<UmbralRaptor> soundnfury: 🦎🦎🦎
<soundnfury> What's an iguana's favourite comedian?
<soundnfury> Eddie Lizzard.
awang has quit [Read error: Connection reset by peer]
awang has joined #kspacademia
<egg> !csharp "\u0C1C\u0C4D\u0C1E\u0C3E"
<Qboid> జ్ఞా
<egg> (note: this is visually identical to the cursed string, but it is not cursed, it has no ZWNJ)
<UmbralRaptor> Please include curses in Indo-European languages?
<soundnfury> ncurses
<UmbralRaptor> !csharp "\u0C1C \u0C4D \u0C1E \u200C \u0C3E"
<Qboid> జ ్ ఞ ‌ ా
<UmbralRaptor> !csharp "\u0C1C\u0C4D\u0C1E\u200C\u0C3E"
<Qboid> జ్ఞ‌ా
<UmbralRaptor> right
<UmbralRaptor> !csharp "\u09B8\u09CD\u09B0\u200C\u09C1"
<Qboid> স্র‌ু
icefire has quit [Read error: Connection reset by peer]
* UmbralRaptor begins writing another homework in LaTeX.
* UmbralRaptor may have a problem.
<kmath> <TSHamiltonAstro> .@ObservatoryCats I brought home SDSS spectrograph plug plates today. My cats aren't sure what to make of them. https://t.co/uVEqvWoTdU
ferram4_ has joined #kspacademia
ferram4 has quit [Read error: Connection reset by peer]
APlayer has joined #kspacademia
APlayer has quit [Read error: Connection reset by peer]
BPlayer has joined #kspacademia
BPlayer is now known as APlayer
APlayer has quit [Read error: Connection reset by peer]
APlayer has joined #kspacademia
APlayer has quit [Ping timeout: 383 seconds]
tawny has quit [Ping timeout: 383 seconds]
APlayer has joined #kspacademia
APlayer has quit [Read error: Connection reset by peer]
APlayer has joined #kspacademia
APlayer has quit [Read error: Connection reset by peer]
BPlayer has joined #kspacademia
BPlayer is now known as APlayer
<egg> !wpn UmbralRaptor
* Qboid gives UmbralRaptor a molten dog
<APlayer> !wpn egg
* Qboid gives egg an extensive gooey Eva
<APlayer> egg: I must have screwed up, because the numbers make no sense
<APlayer> Also, I found some text on the internet that calculates k_s as f(t_n+c_s * h, Y_n + a_s,1 * k_1 ...), rather than f(t_n+c_s * h, Y_n + h * (a_s,1 * k_1 ...))
<APlayer> That is, they skip the h-multiplication. Does that even make sense?
<egg> no
<egg> unless you define a to be already multiplied by h, but you have a variable step so you can't do that
<APlayer> Alright
<APlayer> I am kind of lost, then
<APlayer> f(t, Y) seems to be fine, but the numbers are definitely not
icefire has joined #kspacademia
APlayer has quit [Read error: Connection reset by peer]
APlayer has joined #kspacademia
<APlayer> Dammit
<APlayer> I was doing vel = pos + h * acc, approximately. Instead of vel = vel + h * acc.
<APlayer> Huh
<APlayer> I am drawing the velocity vector on-screen and it's definitely pointing in the right direction, yet the altitude readout is decreasing
<APlayer> I might have messed one thing up, though...
<APlayer> No
<APlayer> So I somehow had to subtract the velocity from the position in order to correct this
APlayer has quit [Ping timeout: 182 seconds]
APlayer has joined #kspacademia
<APlayer> !seen lamont
<Qboid> APlayer: I last saw lamont on [16.02.2018 00:20:18] in #principia saying: "would certainly solve global warming as well…"
APlayer has quit [Read error: Connection reset by peer]
APlayer has joined #kspacademia
<APlayer> egg: Does it perhaps make sense to add the error estimate of the integration to the function in the hope of cancelling it out?
<APlayer> Because it looks like I need an absurdly large computation time in order to get reasonably precise results
<APlayer> RK4 running at about 2 iterations/second and stepsize tends below 0.05s
<APlayer> Double the stepsize and the result is like completely different
<egg> either the tolerance is too high or your implementation is incorrect
<egg> Ellied: https://twitter.com/diodelass/status/964555875540258817 FYI this is actually fine, they didn't include the ZWNJ, so even though it looks exactly like the crash-inducer it is safe
<kmath> <diodelass> @tuxnani @rams2226 So, I made a point of not posting the actual string in my tweet so that people with iPhones who… https://t.co/QMATfSd68z
<egg> !wpn awang
* Qboid gives awang a fish-compatible spectrometer/saw hybrid
<egg> !wpn Ellied
* Qboid gives Ellied a Terran laser
<awang> !wpn -add:adj bash-compatible
<Qboid> awang: Adjective added!
<awang> !wpn -add:adj csh-compatible
<Qboid> awang: Adjective added!
<awang> !wpn -add:adj POSIX-compatible
<Qboid> awang: Adjective added!
<awang> !wpn -add:adj sh-compatible
<Qboid> awang: Adjective added!
<awang> !wpn -add:adj ksh-compatible
<Qboid> awang: Adjective added!
<APlayer> egg: I have a bit of an interesting situation with tolerance
<APlayer> I have two components of vastly different dimensions
<egg> what do you mean
<APlayer> That is, position which is on the order of 10⁶ and velocity, which is on the order of 10³
<APlayer> I currently calculate the difference by averaging the differences between the two, but that is dubious
<egg> yeah that's nonsense
<egg> just use the position error and ignore the velocity error, it's not great but it'll do the job
<egg> and then you know that your tolerance is a length
<APlayer> Would it make sense to calculate a weighted average? That is, say, 0.5 * 10⁻³ pos + 0.5 vel?
<APlayer> That's not even weighted
<APlayer> Well, let's say, would it make sense to scale the position error?
<egg> APlayer: no that doesn't make sense unless you give a dimension to your magical constants, please think about the dimensional analysis
<egg> 1 m + 1 m/s doesn't make sense
<APlayer> Well, if you introduce an error variable, I guess anything makes sense
<egg> ......
<APlayer> And how would that be done given a 6D state vector?
<egg> I don't understand the question
<APlayer> Well, I have an interesting implementation with velocity and position separated to different 3D vectors
<APlayer> Standard is to use a single 6D state vector
<egg> there is no difference
<egg> it's just another way of saying the same thing
<egg> from the point of view of dimensional analysis that 6d vector is a little weird anyway, what with the position part not being homogeneous with the velocity part
<egg> (i.e., it doesn't have a norm)
<APlayer> By the way, is it really 1 m + 1 m/s, or is it 1 m + 1 m'?
<egg> what is m'?
<egg> a metre is a metre, it's not a function of time
<egg> you can't derive it
<APlayer> Well
<APlayer> Alright
<APlayer> I am a bit thick sometimes, sorry
<APlayer> But let's say I have two tolerances, one for position, one for velocity. From that, I obtain two factors to multiply my current h with. Can I create a weighted average of those? Or apply both?
<egg> take the max if you want to go that way
<APlayer> And one last thing. The tolerance is the error I am willing to accept /per iteration/? That is, to get the total error estimate I multiply by the number of iterations?
<egg> that will be some sort of L-infinity-ish norm, which is as sane as it will get
<egg> relating the tolerance to the overall error is *hard*
<APlayer> Okay
<egg> conceptually yes, it's the error on one iteration, but what that implies in the long run depends on your problem
<egg> (i.e. if a small error is amplified you can't just add up the errors)
<APlayer> Makes sense
<APlayer> Also creates problems
<APlayer> Alright, thank you for the advice, I'll try to make the best of it
APlayer has quit [Ping timeout: 383 seconds]
<egg> !wpn Ellied
* Qboid gives Ellied a smol Bucket O' Nitrogens™
<egg> !wpn bofh
* Qboid gives bofh an intensional quill
<egg> !wpn B787_300
* Qboid gives B787_300 a Zener state machine
<B787_300> !wpn egg
* Qboid gives egg a plurdled ISO 8601 dæmon
<B787_300> i think i would win
<UmbralRaptor> !wpn B787_300, egg, Ellied, etc.
* Qboid gives B787_300, egg, Ellied, etc. a singular Pokémon
<awang> !wpn everyone
* Qboid gives everyone a haloalkane
<B787_300> !slap UmbralRaptor
* Qboid compresses UmbralRaptor into a .zip file.
<egg> !slap egg
* Qboid forks the source code of egg, replaces all semicolons with greek question marks and submits a pull request
<awang> Oh a new command!
<B787_300> do greek question marks look like semicolns
<awang> !slap everyone
* Qboid [LOG 02/12/2018 19:18:51]: Exception Was Recorded: Object reference not set to an instance of an object. everyone was slapped so hard that is now read only.
<awang> !u u+037e
<Qboid> U+037E GREEK QUESTION MARK (;)
<B787_300> so yes
<awang> Wikipedia says that it's literally equivalent to the regular semicolon
APlayer has joined #kspacademia
<awang> Well, canonically decomposes as equivalent, whatever that means
<egg> yeah
<egg> NFC maps it to semicolon
<awang> NFC?
<egg> but many programming languages aren't aware of the normalization forms
<awang> Probably not near-field communication, right?
<egg> Ada was, and so requires that the program be in NFCD
<egg> uh KC I mean
<egg> NFKC
<awang> !adj -add:NFC Near-Field Communication or Normalization Form Canonical Composition
<egg> awang: NF is Normalization Form
<awang> Uh
<egg> and the Normalization Forms are called C, D, KC, and KD
<awang> !acr -add:NFc Near-Field Communication or Normalization Form Canonical Composition
<Qboid> awang: I added the explanation for this acronym.
<awang> Dangit
<egg> those aren't really abbreviations though
<awang> !acr -remove NFc
<Qboid> awang: This key is not registered!
<awang> !acr -remove:NFc
<Qboid> awang: I removed the explanation for NFc
<awang> !acr -add:NFC Near-Field Communication or Normalization Form Canonical Composition
<Qboid> awang: I added the explanation for this acronym.
<awang> Oh, really?
<egg> awang: but it's not really an acronym
<egg> it's Normalization Form C
<awang> Oh
<egg> much like KC isn't an acronym of Kompatibility Composition :-p
<awang> !acr -update:NFC Near-Field Communication
<Qboid> awang: I updated the explanation for NFC
<egg> So you have fun things like "The semantics of an Ada program whose text is not in Normalization Form KC (as defined by section 24 of ISO/IEC 10646:2003) is implementation defined."
<egg> oh they're revising it to require C?
<awang> ?
<awang> Ah, I see what you're talking about
<awang> Require NF C instead of NF KC?
<egg> yeah
<egg> so once this is standardized you can have Fraktur identifiers and their semantics are standard
<awang> What are Fraktur identifiers?
<awang> Google doesn't seem to yield anything useful
<egg> 𝕶𝖎𝖙𝖙𝖊𝖓
<egg> and so they have this remark: "Correction: The interpretation of Ada source that is in Normalization Form C but not in Normalization Form KC is no longer implementation-defined. This change could potentially change the meaning of a program for a compiler that normalized all program source to Normalization Form KC before processing it. We don't document this as an inconsistency as such handling was previously implementation
<egg> defined (so any such code was already defined to be not portable), and we're not aware of any compiler that normalized source code (so we don't expect to see this problem in the real world)."
<awang> !u 𝕶𝖎𝖙𝖙𝖊𝖓
<Qboid> U+1D576 MATHEMATICAL BOLD FRAKTUR CAPITAL K (𝕶)
<Qboid> U+1D58E MATHEMATICAL BOLD FRAKTUR SMALL I (𝖎)
<Qboid> U+1D599 MATHEMATICAL BOLD FRAKTUR SMALL T (𝖙)
<Qboid> U+1D599 MATHEMATICAL BOLD FRAKTUR SMALL T (𝖙)
<Qboid> U+1D58A MATHEMATICAL BOLD FRAKTUR SMALL E (𝖊)
<Qboid> U+1D593 MATHEMATICAL BOLD FRAKTUR SMALL N (𝖓)
<egg> hmm so an odd thing here is that case folding doesn't apply to mathematical alphanumerics
<egg> so with that version you'll have case-insensitive identifiers in Ada, but with mathematical alphanumerics
<egg> which I guess makes some amount of sense
<egg> !wpn bofh
* Qboid gives bofh an electromagnetic nova
tawny has joined #kspacademia
<bofh> egg: well I would *hope* casefolding wouldn't apply, since say italic capital H & italic lowercase h mean different things >_>
<bofh> 17:51:50 <@egg> much like KC isn't an acronym of Kompatibility Composition :-p
<bofh> huh, I thought it *was* an acronym of exactly that
<egg> bofh: well, I'm pretty sure it's not spelled Kompatibility
<egg> bofh: the UTC is not KSP
<egg> bofh: otoh ISO recommends that you use upright type for standard symbols, so π is π, but in a case insensitive language that also means it's Π
<bofh> so I'm used to π *always* being in upright type as a symbol.
<egg> bofh: yes, that's what ISO says too; but that means it's the greek letter, not a mathematical one
<egg> bofh: which means case folding applies to it :D
<bofh> so the thing that I don't understand is why Unicode says to use Ω (U+03A9 CAPITAL GREEK LETTER OMEGA) even in contexts where using Ω (U+2126 OHM SYMBOL) would make immensely more sense.
<bofh> I mean Ω & Ω are *semantically* different, it makes sense to have separate codepoints for the letter & the symbol, so this backtracking on the part of the UTC makes *zero* sense to me.
<UmbralRaptor> UTC?
<Qboid> UmbralRaptor: [UTC] => Coordinated Universal Time / Temps Universel Coordonné
<bofh> Unicode Technical Committee
<egg> bofh: because the goal is not to carry the semantics; you're not going to have a character "π but it's a permutation" and "π but it's the constant"; the goal is compatibility with existing encoding, and people use Omega for the Ohm symbol (it's probably defined in many places an being Omega, which, really, it is)
<egg> bofh: similar to the Turkish I issue; given that in Turkish (pre-Unicode) texts i meant both the non-Turkish i and the Turkish dotted i, you cannot separate them without just making things worse
<egg> bofh: unrelated, this pull request is somewhat odd: #1725
<Qboid> [#1725] title: link DOIs against preferred resolver | Hello!... | https://github.com/mockingbirdnest/principia/issues/1725
<bofh> what in the actual hell
<UmbralRaptor> Yay, I think.
<kmath> <europamilkshake> the hard, unsung work in science - Beth Lymer had to create an entire database of Laser-Induced Fluorescence (LIF)… https://t.co/Kz9ReN0ICD
<egg> bofh: seems they just crawled all the githubs for doi.org?
<egg> bofh: of course we could also replace this by sci-hub.hk :-p
<bofh> I am 100% fine with prefixing all DOIs with sci-hub.hk :P
<egg> bofh: ah so Ada 202x actually says something slightly less silly than I thought
<egg> the *text* may be in Normalization Form C
<egg> but identifiers must comprise characters that may be present in Normalization Form KC
<egg> s/se /se only/
<Qboid> egg meant to say: but identifiers must comprise onlycharacters that may be present in Normalization Form KC
<egg> bofh: otherwise it's just silly in a case-insensitive language
<egg> bofh: also there's this fun discussion in 2.3(6) which has 2.3(6.g/3) "An implementation targeting the Turkish market is allowed (in fact, expected) to provide a nonstandard mode where case folding is appropriate for Turkish."
<bofh> eurgh
<bofh> seriously want to time travel to 1928 & yell at Mustafa Kemal about that one stupid letter.
APlayer has quit [Ping timeout: 383 seconds]
icefire has quit [Quit: Leaving]
<egg> bofh: can you space-travel to Kazakhstan and have a chat with Нұрсұлтан Әбішұлы Назарбаев
<egg> aiui he wants to use *ASCII* apostrophes D:
<egg> (Nursultan A'bis'uly Nazarbaev)
<egg> )نۇرسۇلتان ٵبٸشۇلى نازاربايەۆ(
* egg stares at hexchat's mangling of LTR parentheses
<iximeow> hmmm i need to learn more languages
<iximeow> the parenthesis there are )......( which i can't imagine to be correct
<bofh> egg: yeah literally everyone in Kazakhstan is like "NO APOSTROPHES DAMNIT"
<UmbralRaptor> iximeow: so, LISP?
<egg> bofh: yeah, chatted with Mark Davis on the way to work about this (we also discussed Turkish), it's madness
<egg> !u )ن
<Qboid> U+0029 RIGHT PARENTHESIS ())
<Qboid> U+0646 ARABIC LETTER NOON (ن)
<egg> um.
<egg> iximeow: I may have screwed up the parentheses on my own tbh.
<egg> s/^\)(.*)\($/($1)/
<Qboid> egg meant to say: (نۇرسۇلتان ٵبٸشۇلى نازاربايەۆ)
<egg> yeah.
<egg> bofh: so, Principia strongly types angles (we don't want to mix up a frequency and an angular velocity, to multiply radians by degree, to mix up a torque and an energy, etc.)
<egg> bofh: it leads to fun * Radian and / Radian in the formulae though
<UmbralRaptor> Also, avoid mixing up frequency with H_0.
<bofh> UmbralRaptor: LOL
<egg> bofh: otoh, depending on where we decide to put the angles, we can get most wedges to come with a * Radian, most Bivector*Vector to come with a / Radian, and a handful of InnerProduct(Bivector, Bivector) to come with a / Pow<2>(Radian)
<egg> so at least there's some weird consistency :-p
<bofh> I'm surprised you don't convert the / Radian to * InverseRadian tbh.
<egg> everything is constexpr
<egg> if the compiler doesn't strip the division by 1 it's not earning its eleggtrons :-p
<egg> bofh: we are rather more wary of the + origins occasionally involved in affine spaces when in performance-critical code, because obviously you can't strip that
<bofh> So I tend to assume that the compiler *won't* replace floating-point divisions by their reciprocals unless the result is exact or -freciprocal-math is specified, which isn't a universal flag (intel fortran for instance doesn't support it, there the flag is -no-prec-div).
<egg> bofh: we don't have any of those evil flags, this is principia
<egg> bofh: but the representation is SI
<egg> bofh: Radian is just 1
<egg> and constexpr, and the division is constexpr, so the compiler knows that the / 1 has no effect
<bofh> egg: oh, see, Radian is 2π for me.
<egg> Ꙩ_ꙩ
<bofh> which is why conversions are somewhat complicated.
<soundnfury> eww
<bofh> ...yes I know I should take my own advice and scale my Lebesgue measure by 1/2π
<egg> bofh: wait your angle unit is the 2πth of a radian? Ꙩ_ꙩ
<egg> like, cycles I would understand, but wtf is this
<bofh> wait, what, no. my radian measure goes from 0 to 2π
* egg confused
* bofh is also confused
<bofh> OH so "Radian" is just your method of strongly typing angles, *not* the conversion constant between that and degrees?
<egg> bofh: Radian is a constant (constexpr) of type Angle
<egg> bofh: it is a radian
<bofh> oh gods so you're using constexpr for THAT purpose. I'm amazed that doesn't result in a perf penalty.
<soundnfury> bofh: it's the conversion constant between radial distance and arc length
<bofh> I guess compilers are now capable of reasoning about constexpr well enough.
<egg> bofh: why would it cause a perf penalty?
<egg> you mean in compilation time?
<soundnfury> and because sane people work in radians, that conversion constant = 1
<bofh> soundnfury: okay, so I was confused earlier. that's exactly 1 for me as well.
<bofh> egg: g++ used to be fairly awful at dealing with constexpr awhile ago, it's sort of made me inherently avoid that feature unless absolutely necessary.
<egg> bofh: you'll love our constexpr UT1 literals
<egg> (our Instant type is TT; yes, UT1 to TT conversion occurs at compile time)
<bofh> so how many years does it take to compile? :P
<egg> bofh: in which reference frame?
<whitequark> egg: you have Katal but not Becquerel?!
<whitequark> why
<bofh> egg: atomic time in the rest frame of a Cesium clock
<bofh> :P
<egg> but where is the clock
* egg waves a black hole around when compiling
<bofh> is a very interesting use of Sr-87 hyper-accurate atomic clocks (tl;dr geodesy)
<kmath> <back2brains> I left the room for less than a minute & came back to this. #academicswithcats https://t.co/Si2ySDEWX2
<egg> whitequark: well, the mole is not dimensionless in the SI, so the Katal is not a Hertz; otoh our type system has no way of distinguishing Bq from Hz
<soundnfury> omg, principia.quantities.uk.admiralty 0_o
<egg> yes, this needs namespaces, because there's bipm::NauticalMile as well as uk::admiralty::NauticalMile
<iximeow> having not actually looked much at Principia i have to admit the sheer number of units i've seen in relation to it has been surprising
<UmbralRaptor> Units involve a great deal of madness.
<bofh> egg: wait, UK admiralty has a different Nautical Mile def'n than BIPM does?
<soundnfury> UmbralRaptor: s/Units/egg/
<Qboid> soundnfury thinks UmbralRaptor meant to say: egg involve a great deal of madness.
<egg> whitequark: I mean, I could have a separate dimension for disintegrations, and then I could have Bq distinct from Hz, but well, there's no radioactivity in Principia at the moment
<UmbralRaptor> soundnfury: that, too.
<whitequark> egg: oh
<egg> there's no use for the Katal either, but I just did all the things in that SI brochure table that I could meaningfully represent
<egg> bofh: and, uh, if you want to see the tables backing the UT1 literals, [CW big file] https://raw.githubusercontent.com/mockingbirdnest/Principia/master/astronomy/eop_c04.generated.h
<bofh> Nice.
<bofh> you've linked that before; I've locally saved a copy as it's handy :P
<egg> bofh: note that it occasionally changes substantially, e.g. #1587
<Qboid> [#1587] title: Bulletin C 54 | See Bulletin C 54:... | https://github.com/mockingbirdnest/principia/issues/1587
<bofh> I also saved the generating code, so :P
<egg> bofh: you could clone the entirety of principia, too :-p
<egg> bofh: note that we currently consider TT parallel to TAI, instead of using TT(BIPM)
<soundnfury> !choose ksp|wt|something productive
<Qboid> soundnfury: Your options are: ksp, wt, something productive. My choice: something productive
<soundnfury> ;choose ksp|wt|something productive
<kmath> soundnfury: wt
<UmbralRaptor> wt?
<soundnfury> 🔪choose ksp|wt|something productive
<soundnfury> UmbralRaptor: wart hunder
<UmbralRaptor> soundnfury: I choose: ksp
<soundnfury> damn botsplit -_-
<soundnfury> time to create some paradoxes
<soundnfury> !choose do what Qboid says|do what kmath says|do what UmbralRaptor says
<Qboid> soundnfury: Your options are: do what Qboid says, do what kmath says, do what UmbralRaptor says. My choice: do what Qboid says
<soundnfury> ;choose do what Qboid says|do what kmath says|do what UmbralRaptor says
<kmath> soundnfury: do what kmath says
<soundnfury> 🔪choose do what Qboid says|do what kmath says|do what UmbralRaptor says
<soundnfury> (... or not, apparently)
<UmbralRaptor> uh
* UmbralRaptor uses a snek RNG.
<soundnfury> what would your brother's bot tell me to do?
<UmbralRaptor> soundnfury: do what kmath says.
<UmbralRaptor> So, I guess slow planes.
<soundnfury> ok, we have a winner. Thankyou, bots and birbs
<egg> bofh: so the (TAI|UTC|UT1) to TT conversions of Principia are not suitable if you need nanosecond resolution
<egg> (I mean, I could just parse ftp://ftp2.bipm.org/pub/tai/ttbipm/TTBIPM.17, but I haven't bothered yet)