←2020-04-29 2020-04-30 2020-05-01→ ↑2020 ↑all
00:31:13 <zzo38> Yes, that will do it too
00:32:27 <esowiki> [[Double Helix]] N https://esolangs.org/w/index.php?oldid=71498 * Hakerh400 * (+4892) +[[Double Helix]]
00:32:31 <esowiki> [[Language list]] https://esolangs.org/w/index.php?diff=71499&oldid=71496 * Hakerh400 * (+19) +[[Double Helix]]
00:32:34 <esowiki> [[User:Hakerh400]] https://esolangs.org/w/index.php?diff=71500&oldid=71361 * Hakerh400 * (+19) +[[Double Helix]]
00:42:32 <esowiki> [[Unary Filesystem]] N https://esolangs.org/w/index.php?oldid=71501 * PythonshellDebugwindow * (+143) Wip
00:50:26 <esowiki> [[Talk:Picofuck]] https://esolangs.org/w/index.php?diff=71502&oldid=51707 * Orby * (+1827)
01:39:01 -!- tromp has joined.
01:44:21 -!- tromp has quit (Ping timeout: 272 seconds).
02:13:15 -!- Phantom__Hoover has joined.
02:20:59 -!- Phantom__Hoover has quit (Ping timeout: 258 seconds).
02:33:33 -!- tromp has joined.
02:38:11 -!- tromp has quit (Ping timeout: 272 seconds).
03:35:25 <zzo38> Does C have any function like PostScript's /ReusableStreamDecode filter?
03:37:06 <shachaf> What is that?
03:38:38 <zzo38> It reads an entire file into memory at once so that now it is seekable.
03:38:51 <zzo38> (Even if the original file wasn't seekable.)
03:39:57 <shachaf> Do you mean in the standard library?
03:40:00 <zzo38> Yes.
03:40:09 <shachaf> I'm not sure such a function belongs in the standard library.
03:40:39 <zzo38> Maybe you are correct, but I also wanted to know if GNU or POSIX has it.
03:40:57 <shachaf> POSIX has mmap which might be better for many purposes.
03:47:11 <zzo38> Yes, for some purposes it is better.
04:15:46 <imode> C's standard library doesn't have a function like that. wouldn't that just be loading a file into memory byte by byte and operating on that.
04:16:05 -!- craigo_ has joined.
04:16:42 <zzo38> Yes, it is like that. Of course it is not a problem if it doesn't have; I just was wondering about it.
04:17:29 <imode> C has functions to actively seek through files without loading them into memory.
04:18:14 <zzo38> Yes, but some files are not rewindable.
04:18:51 -!- craigo has quit (Ping timeout: 265 seconds).
04:19:05 <imode> such as?
04:19:53 <zzo38> Such as many files that aren't a disk file.
04:20:03 <imode> ah.
04:28:56 <shachaf> What is the API you want?
04:30:41 <zzo38> I was just wondering, actually.
04:31:58 <shachaf> There are all sorts of ways you might want to allocate memory for the file.
04:40:13 <imode> what happens if the file doesn't have an EOF character?
04:40:22 <imode> s/EOF character/EOF marker
04:41:33 <shachaf> Why would a file have an EOF character?
04:42:04 <zzo38> If it doesn't have EOF then it won't work, of course.
04:48:40 -!- PlasmaPower has joined.
04:51:56 -!- Train has joined.
04:53:49 <Train> Hello zzo38.
04:54:28 <zzo38> Hello
04:54:37 <pikhq> Hardly anyone uses an OS that has an EOF character as actually part of the file
04:54:47 <Train> I had an idea for an "improvement" on TrainCode.
04:54:57 <pikhq> Rather than just a weird artifact of APIs like getc()
04:56:50 <PlasmaPower> I created this Befunge-98 snippet which freezes the cfunge and rcfunge interpreters: https://gist.github.com/PlasmaPower/39f01e1289d5d4bd84953335efd5f7de
04:57:19 <PlasmaPower> I'm not sure if anyone's done this before, but it creates a flying IP that's always going to be out of bounds, then uses another thread to overwrite the currently executing instruction to put it in string mode and process a space
04:57:33 <Train> Impressive.
04:57:36 <PlasmaPower> I'm guessing the interpreters get stuck trying to skip over future spaces
04:57:37 <PlasmaPower> thanks :)
04:58:32 <zzo38> Train: What is your idea for "improvement" on TrainCode?
04:59:42 <Train> Multiple trains.
05:00:19 <Train> the character # splits a train.
05:00:46 <Train> It creates a new instruction and data pointer at it's position if the IP goes over it, and sets them to RIGHT
05:04:20 <Train> What do you think?
05:04:25 <zzo38> I suppose it can be a a possible extension
05:04:39 <Train> And two new chars: e and f
05:04:49 <Train> Change the relative data pointer for each IP
05:05:52 -!- PlasmaPower has quit (Quit: Leaving).
05:06:09 -!- Train has quit (Remote host closed the connection).
05:06:11 <zzo38> I think that perhaps they should be called separate extensions or separate levels, similar to how SNUSP does
05:20:56 -!- arseniiv_ has joined.
05:49:44 -!- imode has quit (Ping timeout: 256 seconds).
05:53:58 -!- tromp has joined.
05:59:04 -!- tromp has quit (Ping timeout: 265 seconds).
06:22:37 -!- tromp has joined.
06:24:01 -!- tromp_ has joined.
06:27:29 -!- tromp__ has joined.
06:28:05 -!- tromp has quit (Ping timeout: 272 seconds).
06:28:33 -!- tromp_ has quit (Ping timeout: 265 seconds).
06:29:03 -!- Train has joined.
06:30:40 <Train> zzo38, what do you think of multiple pointers?
06:31:32 <zzo38> Train: I mentioned after you disconnection, I can mention again
06:31:42 <zzo38> I think that perhaps they should be called separate extensions or separate levels, similar to how SNUSP does
06:31:56 <Train> Okay.
06:31:59 <zzo38> (Also, you did not quite exaplain how e and f are working)
06:32:25 -!- tromp__ has quit (Ping timeout: 265 seconds).
06:32:27 <Train> e decrements the reference for the data pointer for the current IP, and vice versa for f
06:32:40 <Train> so it changes the pairings of DP and IP
06:32:56 <Train> each IP has an assigned DP, and e/f change that assigned DP
06:33:30 <zzo38> O, OK.
06:43:22 -!- Train has quit (Remote host closed the connection).
06:49:38 -!- tromp has joined.
07:23:25 -!- Bowserinator has quit (Quit: Blame iczero something happened).
07:23:36 -!- moony has quit (Quit: Bye!).
07:23:47 -!- iovoid has quit (Quit: iovoid has quit!).
07:53:03 -!- cpressey has joined.
08:02:33 <cpressey> I'll go one further on what I said yesterday: in Jot, the 1 combinator serves the role of a prefix application operator, which lets you construct programs in "forward Polish notation", which is how it can dispense away with parentheses.
08:02:51 <cpressey> s/dispense away with/dispense with/
08:04:40 <cpressey> The "reverse Polish notation" in concatenative languages also lets you dispense with parentheses, and that's often stated as a selling point, but it's actually stronger than that: in a concatenative language, concatenation is associative, and that's the reason why you can dispense with pareentheses.
08:06:56 <cpressey> (I don't know if there is any actual signficant practical value to having concatenation be associative, actually, but it's aesthetically pleasing, at least.)
08:14:23 <shachaf> Are reverse and forward Polish notation actually different in that respect?
08:19:31 <cpressey> In the sense that in FPN a symbol sets up an expectation of what follows it (its argument(s)), and in RPN it doesn't, I would say yes.
08:27:15 <cpressey> But, I would admit that that's looking at it as syntax only.
08:33:48 <shachaf> If you reverse an RPN program, don't you get a PN program?
08:34:12 <shachaf> Maybe there's a practical thing where RPN is more amenable to things that takes a variable number of arguments or do other bizarro stack operations.
08:39:01 -!- Train has joined.
08:39:33 <Train> This is my fourth hour of debugging my interpreter... I've had to deal with the weirdest bugs.
08:40:06 -!- user24 has joined.
08:40:25 <Train> Hello.
08:44:47 <cpressey> shachaf: I don't really know; I'm mainly trying to explain to myself out loud why my idea for a concatenative version of the SKI calculus seemed obvious and easy when I first thought of it, but turned out to be much less obvious when I tried to work it out.
08:45:08 <Train> I've been converting my code, which was expressly designed for single-pointers into an n-pointer system, with two types of pointers and parallel processing.
08:45:10 <cpressey> Maybe it actually is obvious and easy and I'm just overthinking it.
08:45:45 <Train> Maybe, but many problems depend on your method of thinking.
08:46:12 <Train> For example, in my esolang, I couldn't find a quine for days, and zzo38 on here found one in less than an hour.
08:46:26 <Train> His method of thinking was very different to mine, and it worked far better.
08:46:34 <shachaf> Is 1 in Jot like ` in Unlambda?
08:47:13 <shachaf> Oh, not really.
08:50:13 -!- LKoen has joined.
08:50:21 <Train> Gudday mate!
08:56:35 -!- tswett[m] has quit (Quit: killed).
08:56:39 -!- wmww has quit (Quit: killed).
08:56:53 -!- xavo[m] has quit (Quit: killed).
08:56:58 -!- xylochoron[m] has quit (Quit: killed).
09:12:49 -!- xylochoron[m] has joined.
09:24:07 -!- craigo_ has quit (Ping timeout: 260 seconds).
09:26:35 -!- Train has quit (Remote host closed the connection).
09:30:29 -!- rain1 has joined.
09:30:33 -!- rain1 has quit (Changing host).
09:30:33 -!- rain1 has joined.
09:55:40 -!- xavo[m] has joined.
09:55:40 -!- tswett[m] has joined.
09:55:40 -!- wmww has joined.
10:41:25 -!- cpressey has quit (Quit: WeeChat 1.9.1).
10:46:56 <rain1> https://www.lmfdb.org/NumberField/?galois_group=6T4
10:46:59 <rain1> this i sa good site
11:27:01 -!- Lord_of_Life_ has joined.
11:29:37 -!- Lord_of_Life has quit (Ping timeout: 264 seconds).
11:29:50 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
11:43:10 -!- wib_jonas has joined.
12:04:23 -!- cpressey has joined.
12:33:49 -!- BWBellairs[NNRF] has joined.
12:34:04 -!- BWBellairs has quit (Read error: Connection reset by peer).
12:34:37 -!- BWBellairs[NNRF] has changed nick to BWBellairs.
12:54:26 -!- sftp has quit (Excess Flood).
12:54:45 -!- sftp has joined.
13:11:05 <esowiki> [[Unary Filesystem]] M https://esolangs.org/w/index.php?diff=71503&oldid=71501 * PythonshellDebugwindow * (+893) Finished
13:12:18 <esowiki> [[Language list]] M https://esolangs.org/w/index.php?diff=71504&oldid=71499 * PythonshellDebugwindow * (+23) /* U */ + [[Unary Filesystem]]
13:13:07 <esowiki> [[User:PythonshellDebugwindow]] M https://esolangs.org/w/index.php?diff=71505&oldid=71493 * PythonshellDebugwindow * (+70) /* Languages */
13:13:26 <esowiki> [[User:PythonshellDebugwindow]] M https://esolangs.org/w/index.php?diff=71506&oldid=71505 * PythonshellDebugwindow * (-2) /* Languages */
13:14:16 -!- TheLie has joined.
13:16:16 <esowiki> [[Double Helix]] M https://esolangs.org/w/index.php?diff=71507&oldid=71498 * PythonshellDebugwindow * (+36)
13:17:14 <esowiki> [[Double Helix]] M https://esolangs.org/w/index.php?diff=71508&oldid=71507 * PythonshellDebugwindow * (-24) link + typo fix
13:25:02 -!- TheLie has quit (Remote host closed the connection).
13:59:17 <esowiki> [[Talk:Picofuck]] https://esolangs.org/w/index.php?diff=71509&oldid=71502 * Orby * (-42) /* The set of PF languages is empty */
13:59:49 <esowiki> [[Talk:Picofuck]] M https://esolangs.org/w/index.php?diff=71510&oldid=71509 * Orby * (-39) /* The set of PF languages is empty */
14:02:30 <esowiki> [[User:PythonshellDebugwindow/]] N https://esolangs.org/w/index.php?oldid=71511 * PythonshellDebugwindow * (+41) Redirected page to [[User:PythonshellDebugwindow]]
14:03:25 <orbitaldecay> Is oerjan still active? I haven't seen him around in a while.
14:05:20 <wib_jonas> orbitaldecay: yes, he hasn't disappeared yet
14:06:46 <esowiki> [[User talk:Oerjan]] https://esolangs.org/w/index.php?diff=71512&oldid=63959 * Orby * (+163)
14:07:16 <orbitaldecay> wib_jonas: cool. he and I were working a project a few years ago that I made some progress on yesterday. just trying to reconnect with him.
14:09:06 <orbitaldecay> or anybody else who's interested in BF minimizations. I need some verification on a proof I wrote that there is no 2 command minimization of reversible bitfuck.
14:09:27 <orbitaldecay> See the picofuck page.
14:09:32 <orbitaldecay> proof is in talk section
14:12:18 <esowiki> [[User:PythonshellDebugwindow]] M https://esolangs.org/w/index.php?diff=71513&oldid=71506 * PythonshellDebugwindow * (+50) /* Languages */
14:13:14 <esowiki> [[The Past]] M https://esolangs.org/w/index.php?diff=71514&oldid=71400 * PythonshellDebugwindow * (+126) cats
14:13:35 <esowiki> [[Language list]] M https://esolangs.org/w/index.php?diff=71515&oldid=71504 * PythonshellDebugwindow * (+15) /* T */ + [[The Past]]
14:30:51 <esowiki> [[Talk:Picofuck]] https://esolangs.org/w/index.php?diff=71516&oldid=71510 * Orby * (+664) /* The set of PF languages is empty */
15:23:12 -!- cpressey has quit (Quit: WeeChat 1.9.1).
15:35:17 -!- imode has joined.
15:38:50 <arseniiv_> now I have one we will totally be proud of: V* is just a negation of V, assuming the scalar field is a contradiction
15:38:55 -!- arseniiv_ has changed nick to arseniiv.
15:39:02 <arseniiv> s/we/y’all
15:39:24 <arseniiv> or *the* contradiction, hm
15:40:01 <arseniiv> and it’s correct of course, as “negation of X assuming Y is a contradiction” is simply X → Y
15:40:45 -!- wib_jonas has quit (Quit: Connection closed).
16:41:17 <esowiki> [[Special:Log/newusers]] create * Leo1 * New user account
16:51:56 -!- user24 has quit (Quit: Leaving).
16:55:43 -!- xkapastel has joined.
17:10:35 <rain1> solvable 1d peg solitaire problems are regular
17:11:05 <myname> 2d might as well
17:20:57 -!- hakatashi has quit (Remote host closed the connection).
17:21:16 -!- hakatashi has joined.
17:23:43 -!- Phantom__Hoover has joined.
17:29:33 -!- ArthurStrong has joined.
18:10:19 -!- orbitaldecay has quit (Ping timeout: 252 seconds).
18:19:31 -!- orbitaldecay has joined.
18:41:51 <rain1> myname: 2d is apparently NP complete
18:42:04 <rain1> im not sure i get how this is possible
18:42:12 <myname> :O
18:42:16 <rain1> since it can be solved with an easy depth first search
18:42:33 <rain1> and the maximum depth will be equal to the number of pegs
18:42:44 <myname> well, tsp can be solved by filling a matrix
18:42:46 <rain1> does that leave enough room for it to still be NP complete?
18:42:50 -!- kevinalh has joined.
18:43:32 <zzo38> If someone claims to have the perfect programming language, he is either a fool or a salesman or both.
18:44:56 <myname> i fail to see how to solve it ith a simple dfs, though
18:45:34 <myname> like, wouldn't you need to make a dfs where each step is a new dfs?
18:49:02 <rain1> i am not claiming that peg solitaire is a perfect programming language
18:49:22 <zzo38> Good.
18:50:24 <esowiki> [[Reversible Bitfuck]] N https://esolangs.org/w/index.php?oldid=71517 * Orby * (+3970) Finally getting around to creating a standalone page for Reversible Bitfuck
18:50:34 -!- kevinalh has quit (Ping timeout: 260 seconds).
18:51:10 <myname> rain1: i'd like to see your solver with a dfs
18:52:59 <rain1> i dont have it, i wrote it a long time ago
18:53:15 <rain1> it's very simple though, just list all moves at each step
18:53:20 <esowiki> [[Picofuck]] https://esolangs.org/w/index.php?diff=71518&oldid=51581 * Orby * (-2496) Moving definition of RBF to its own page
18:53:40 <myname> i doubt that this will work with polynomial time
18:54:43 <myname> the previous to last move has 3 pegs with potentially 4 (minimum, can't think of more) moves
18:55:15 <myname> 4 pegs can lead to different configurations of 3 pegs with more than one move
18:55:32 <myname> i fail to see how this is not exponential
18:55:53 <esowiki> [[Nanofuck]] https://esolangs.org/w/index.php?diff=71519&oldid=69875 * Orby * (-6) Updating links to point to reversible bitfuck page
18:55:54 -!- Sgeo__ has quit (Read error: Connection reset by peer).
18:56:40 -!- iovoid has joined.
18:57:15 <esowiki> [[Reversible Bitfuck]] M https://esolangs.org/w/index.php?diff=71520&oldid=71517 * Orby * (+145) Adding categories
18:57:35 <esowiki> [[Picofuck]] https://esolangs.org/w/index.php?diff=71521&oldid=71518 * Orby * (+145) Adding categories
18:59:29 -!- Bowserinator has joined.
19:00:06 -!- probablymoony has joined.
19:02:19 <esowiki> [[Nanofuck]] https://esolangs.org/w/index.php?diff=71522&oldid=71519 * Orby * (+254) /* Reversible Bitfuck */ Nanofuck has a dual language, NF'
19:02:59 <esowiki> [[Nanofuck]] M https://esolangs.org/w/index.php?diff=71523&oldid=71522 * Orby * (+8) /* Reversible Bitfuck */ Fixing formatting. Sorry for edit spam.
19:10:53 <esowiki> [[Talk:Picofuck]] M https://esolangs.org/w/index.php?diff=71524&oldid=71516 * Orby * (+56) Found a problem with the non-existence proof
19:11:18 <orbitaldecay> Alright, done editing for now
19:11:36 -!- Sgeo has joined.
19:11:56 <orbitaldecay> This 2 command reversible bitfuck minimization problem is driving me nuts. I've been thinking about this in the back of my head for years.
19:12:18 <orbitaldecay> It seems impossible, but I can't find the proof
19:12:39 <rain1> I will check it out
19:12:58 <orbitaldecay> Thank you, it's on the Picofuck page
19:13:16 <orbitaldecay> Oerjan and I worked on it for like a month straight in 2017 and got nowhere
19:15:43 <rain1> this is really cool stuff
19:15:49 <rain1> i normally don't look into brainfuck related things anymore
19:15:52 <rain1> but i like this
19:17:47 -!- kevinalh has joined.
19:20:12 <esowiki> [[Pure]] M https://esolangs.org/w/index.php?diff=71525&oldid=70523 * PythonshellDebugwindow * (+32) /* See also */
19:21:57 <rain1> https://esolangs.org/wiki/Talk:Picofuck this seems like a very hard problem
19:22:22 -!- craigo_ has joined.
19:23:10 <esowiki> [[Pure]] M https://esolangs.org/w/index.php?diff=71526&oldid=71525 * PythonshellDebugwindow * (-24) It is not backwards compable
19:24:04 -!- kevinalh has quit (Ping timeout: 246 seconds).
19:24:08 <rain1> is it acceptable for a PF language to use 1/n'th of the tape for real data and the rest for scratch?
19:25:39 <rain1> is there a 2 command version of brainfuck/bitfuck (non reversible)
19:28:16 <orbitaldecay> rain1: yeah, PF is a hard problem. A PF language can use the tape however it wants provided it's a simple translation of RBF.
19:28:34 <orbitaldecay> I don't know of a 2 command version of brainfuck (even excluding I/O) that's a "simple translation"
19:28:40 <rain1> ah
19:29:07 <myname> 2 command bfs are pretty easy
19:29:16 <orbitaldecay> The simple translation definition formalizes the notion of "not cheating", otherwise you can do all kinds of context dependent nonsense and call it a minimization
19:29:24 <rain1> have you considered candidate based on the language of matching brackets? [], [][], [][][], ..., [[]], [[[]]], ..., [[][]], type strings
19:30:17 <rain1> i guess all candidates are like that actually
19:30:23 <orbitaldecay> I have generally used [ and ] to discuss potential PF commands, but it is not known whether or not bracket matching of that type would be the appropriate grammar for a PF
19:30:41 <orbitaldecay> The syntax might be two [ for each ], e.g. [[], or something else
19:30:56 <rain1> interesting
19:31:22 <myname> what does "leave the machine in state t_1" mean in the definition of reversibility? the tape pointer?
19:31:31 <orbitaldecay> tape pointer + tape contents
19:31:39 <orbitaldecay> that comprises the entire state
19:31:47 <myname> ok
19:32:05 -!- kevinalh has joined.
19:33:08 <orbitaldecay> 2 command BFs are easy that are not what I call "simple translations" of BF. e.g. unary, turning tarpits, etc.
19:33:53 <orbitaldecay> braincrash is the classic example of a turning tarpit that isn't actually a "simple translation" because it's context dependent
19:34:33 <rain1> i wish i could solve this problem
19:34:46 <rain1> i can't make my mind up if any PF exists or not
19:34:57 <orbitaldecay> try to find one
19:35:07 <orbitaldecay> I've been trying to prove they don't exist for years
19:35:46 <orbitaldecay> nanofuck is as small as I've gotten and I suspect it's minimal
19:36:38 <rain1> nanofuck is very impressive already
19:37:15 <orbitaldecay> NF wasn't hard to find. I'm sure there are other interesting 3 command variants aside from NF and NF'
19:37:39 <orbitaldecay> I mean, obviously there are an infinite number of 3 command variants, but most of them just contain huge swaths of nops
19:39:04 <rain1> i wonder if you could do that makes [] act like * but [][] act like brackets
19:39:11 <rain1> by using every second cell as a scratch space
19:39:44 <orbitaldecay> The idea behind requiring a "simple translation" is to restrict context dependence, which in my view is cheating
19:39:57 <myname> it's questionable if this is reversible
19:40:08 <orbitaldecay> if what is reversible?
19:40:44 <rain1> maybe it would only be reversible if we add a restriction that we must write [X][X] (same contents each time), but then htis probabyl violates the simple translation requirement
19:40:58 -!- arseniiv has quit (Ping timeout: 258 seconds).
19:41:11 <orbitaldecay> yeah, how do you translate [ into an RBF string if [ has different meanings in different contexts?
19:41:33 <orbitaldecay> you could store that context on the tape, but then you have to prevent it from being overwritten
19:41:46 <rain1> yeah storing it on the tape is what i was thinking
19:42:18 <rain1> i feel like the ability to use scratch space on the tape is what makes it hard to prove this impossible (or potentially gives us the ability to pull it off)
19:42:39 <rain1> but we only get a finite amount of data from this
19:42:47 <orbitaldecay> it depends on how you define the isomorphism between tapes
19:43:24 <orbitaldecay> if you say the tape has to be literally the same, then scratch space doesn't fly, if there just needs to be an isomorphism between the tapes, then map each cell position n to 2n in the converted tape
19:43:31 <orbitaldecay> that leaves 2n + 1 for scratch space
19:43:33 <rain1> yeah
19:44:04 <orbitaldecay> basically the pf language could only use the even cells and use the odd cells for storing context
19:44:27 <orbitaldecay> It's not the most satisfying answer, but if that's all that exists I'd be happy with it
19:45:43 <orbitaldecay> first priority would be making the tapes match exactly though
19:45:52 <orbitaldecay> like they do between RBF and NF
19:46:10 <rain1> maybe it could be proven that matching tapes is impossible
19:46:16 <orbitaldecay> hmm
19:46:20 <orbitaldecay> that's an interesting thought
19:46:23 <rain1> what would this additional restriction of matching tapes imply
19:46:51 <orbitaldecay> I mean, matching tapes is possible with 3 command simple translations because I've done it
19:47:07 <orbitaldecay> I've generally been going for matching tapes when looking for 2 command simple translations as well
19:47:18 <orbitaldecay> I haven't explored storing context on the tape very much
19:47:35 <orbitaldecay> it seems like that is a little bit of a loophole
19:47:51 <orbitaldecay> it might make sense to define simple translation as meaning identical tapes
19:48:21 <orbitaldecay> I just wanted to allow simple translations between languages that use different models
19:48:28 <orbitaldecay> like maybe one language doesn't have a tape and another does
19:48:40 <orbitaldecay> there could still be simple translations between them
19:50:18 -!- TheLie has joined.
19:51:01 <esowiki> [[Special:Log/newusers]] create * Asdfasdf1 * New user account
19:57:49 <zzo38> How common are using C programs on non-IEEE computers?
19:58:11 <orbitaldecay> What do you mean by non-IEEE computer?
19:58:32 <imode> probably ones without floating point support.
19:58:49 <fizzie> Well, or using a non-IEEE-754 floating point format.
19:58:50 <orbitaldecay> in that case super common, most 8 and 16 bit chips don't have floating point support
20:00:18 <fizzie> SDCC's (emulated) floating point routines are non-IEEE.
20:00:23 <orbitaldecay> on those architectures floating point is simulated i software
20:00:34 <orbitaldecay> interesting
20:00:57 <fizzie> They're "IEEE-ish", but don't support e.g. subnormal numbers.
20:01:52 <zzo38> OK, although I suppose it is not needed to port TeXnicard to non-IEEE computers, since TeXnicard is intended for 32-bit or 64-bit computers, not 8-bit and 16-bits.
20:03:04 <orbitaldecay> Well, what does the C standard say about floats and doubles? If the C standard guarantees them to behave like IEEE floats and doubles, then I'd assume the compiler will take care of it.
20:03:12 <fizzie> It doesn't.
20:03:21 <orbitaldecay> Bummer
20:03:25 <rain1> I will need to study the discharged candidates on the discussion page tommorow
20:03:31 <fizzie> There's an appendix for IEEE floats and doubles, which the implementation can indicate by defining a macro.
20:03:47 <b_jonas> zzo38: common if you count it when you deliberately enable some aggressive settings or optimization flags for compilation units, such as the runtime option to not generate and read denormals on x86_64 to speed up operations that would generate such numbers
20:03:48 <orbitaldecay> rain1: cool, feel free to reach out
20:03:49 <zzo38> (And, I am not sure that SQLite works on non-IEEE computers anyways)
20:03:52 <fizzie> Other than that, the standard just gives a very abstract model, that can be implemented by a non-2 radix.
20:03:56 <orbitaldecay> I'm bob@forder.cc
20:04:31 <b_jonas> zzo38: that still uses numbers formatted as IEEE float, just not the IEEE float rules for arithmetic operations
20:04:37 <b_jonas> so I don't know if you count that
20:05:18 -!- rain1 has quit (Quit: leaving).
20:05:30 <fizzie> "An implementation that defines __STDC_IEC_559__ shall conform to the specifications in this annex."
20:06:20 <zzo38> b_jonas: Well, my program only cares that the "float" type is a 32-bit floating point and that it is either IEEE or big-endian (or both), and that if you write to a union with a int and float as a int and read it back as a float, that it can be read. (The reason for this confusion is presumably a bug in Adobe Distiller, which is software I don't even use.)
20:07:45 <b_jonas> zzo38: that part about the union sounds like it could be false on modern enough gcc because of how C handles unions, but I'm not quite sure
20:07:47 <zzo38> (Or possibly some other software from Adobe; I am not sure which.)
20:08:01 <b_jonas> zzo38: wait, what do you do with the union?
20:08:13 <fizzie> Use of union for type punning is sort of sanctioned.
20:08:25 <zzo38> Merely write a int to it and read back a float from it; the union is not used after that.
20:08:25 <b_jonas> read it back as a float and then read the union?
20:08:37 <b_jonas> I have no idea how the C rules work for that so I'd just avoid that
20:08:54 <b_jonas> as for float being 32-bit IEEE float format, that's probably true everywhere
20:09:32 <fizzie> b_jonas: There's a footnote about how it should work. "If the member used to read the contents of a union object is not the same as the member last used to store a value in the object, the appropriate part of the object representation of the value is reinterpreted as an object representation in the new type as described in 6.2.6 (a process sometimes called 'type punning')."
20:09:44 <b_jonas> zzo38: could you use memcpy for that instead? that definitely works and is usually optimized away, while I'm not sure about the union
20:10:14 <b_jonas> zzo38: also is this a C program or a C++ program?
20:10:19 <zzo38> It is C, not C++
20:10:42 <b_jonas> zzo38: I really don't understand the rules, and I suggest memcpy instead of a union
20:11:05 <b_jonas> but it's possible that a union is safe too
20:11:38 <zzo38> Search for "#define obj_ufloat" in http://zzo38computer.org/fossil/texnicard.ui/artifact/39edd63855a81b2b
20:12:14 <zzo38> On a non-IEEE computer, the floating number is stored using the native order.
20:12:42 <fizzie> Yeah, if you want you could do that with memcpy.
20:13:28 <fizzie> `float f; memcpy(&f, &(int){x}, sizeof (int)); f;` or suchlike. But I do think the union's allowed as well.
20:13:30 <HackEso> float? No such file or directory
20:13:36 <fizzie> HackEso: Don't you start.
20:14:11 <fizzie> Actually, I guess you could do it entirely with compound literals, thanks to memcpy returning dest. :)
20:14:56 <fizzie> As in `*(float *)memcpy(&(float){0}, &(int){x}, sizeof (int))`.
20:16:11 <b_jonas> fizzie: is that compound literal actually valid in C?
20:16:33 <fizzie> Should be. In C99 and above.
20:16:44 <b_jonas> weird
20:16:45 <zzo38> Yes, I could use memcpy, although I did it this way, and the quoted footnote would suggest that it could work. Although that isn't the point I am trying to make anyways, which is rather the Adobe bug (despite none of Adobe's software is in use here).
20:17:56 <fizzie> I like `&(T){x}` over `(T[]){x}` when it's "conceptually" a pointer to a single object rather than an array of length 1, though they are equivalent.
20:18:32 -!- zseri has joined.
20:18:57 -!- zseri has quit (Client Quit).
20:19:26 -!- zseri has joined.
20:19:39 -!- TheLie has quit (Ping timeout: 272 seconds).
20:20:50 <zzo38> I also don't know if possibly someone else might find the set of macros in the code I linked to to be useful in your own programs too maybe
20:29:37 <esowiki> [[Cortex language 3]] M https://esolangs.org/w/index.php?diff=71527&oldid=71429 * PythonshellDebugwindow * (+2)
20:32:36 -!- TheLie has joined.
20:45:29 -!- xkapastel has quit (Quit: Connection closed for inactivity).
20:50:49 -!- TheLie has quit (Ping timeout: 265 seconds).
20:53:32 -!- Taneb has quit (*.net *.split).
20:53:32 -!- Hooloovo0 has quit (*.net *.split).
20:53:44 -!- Taneb has joined.
20:54:19 -!- Hooloovo0 has joined.
20:54:44 <esowiki> [[Esolang:Sandbox]] M https://esolangs.org/w/index.php?diff=71528&oldid=71298 * PythonshellDebugwindow * (+61)
20:55:13 <esowiki> [[Esolang:Sandbox]] M https://esolangs.org/w/index.php?diff=71529&oldid=71528 * PythonshellDebugwindow * (+42)
20:55:32 <esowiki> [[Esolang:Sandbox]] M https://esolangs.org/w/index.php?diff=71530&oldid=71529 * PythonshellDebugwindow * (+5)
20:55:46 <esowiki> [[Esolang:Sandbox]] M https://esolangs.org/w/index.php?diff=71531&oldid=71530 * PythonshellDebugwindow * (+9)
21:00:06 <esowiki> [[Cortex language 3A]] N https://esolangs.org/w/index.php?oldid=71532 * PythonshellDebugwindow * (+1483) WIP
21:00:27 <esowiki> [[Cortex language 3A]] M https://esolangs.org/w/index.php?diff=71533&oldid=71532 * PythonshellDebugwindow * (+35)
21:04:52 <esowiki> [[User:Orby]] M https://esolangs.org/w/index.php?diff=71534&oldid=71437 * Orby * (+45)
21:05:24 <esowiki> [[User:Orby]] M https://esolangs.org/w/index.php?diff=71535&oldid=71534 * Orby * (-18)
21:33:03 -!- zseri has quit (Quit: zseri).
21:34:39 <tswett[m]> Hey everyone.
21:35:04 <tswett[m]> I'm pondrin' what Haskell would look like if we assumed it took place in the category of abelian groups.
21:35:32 <tswett[m]> There'd be a total function z :: forall a. a.
21:36:23 <tswett[m]> And another total function p :: forall a. a -> a -> a, which would be commutative and associative with z as the identity.
21:36:46 <tswett[m]> And n :: forall a. a -> a, the inverse for p.
21:40:27 <tswett[m]> Of course, the category of abelian groups isn't cartesian closed, so... good luck with currying.
22:03:40 -!- Phantom__Hoover has quit (Ping timeout: 246 seconds).
22:19:21 -!- LKoen has quit (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”).
22:31:59 -!- TheLie has joined.
22:47:49 -!- tromp has quit (Remote host closed the connection).
22:48:34 -!- tromp has joined.
22:52:45 -!- tromp has quit (Ping timeout: 240 seconds).
23:00:18 -!- TheLie has quit (Remote host closed the connection).
23:06:31 -!- loops has joined.
23:07:06 -!- Train has joined.
23:07:43 -!- loops has left.
23:11:38 <Train> I've got the instruction pointers running in parallel, after almost 10 hours of debugging.
23:15:34 <Train> The data pointers were being initialised to the position of the # character, but so were the instruction pointers, so I ended up with hundreds of pointers even for simple, 9 byte programs.
23:16:41 <Train> I needed to do some "sorcery" with the arrays to make the data pointer start at the split and the instruction pointer start at the character immediately to the right mod the length of the program[0].
23:17:17 <Train> zzo38, here's a demo of the splitting character #.
23:17:27 <Train> Code:
23:17:28 <Train> V
23:17:51 <Train> Output: #V
23:20:13 -!- tromp has joined.
23:20:21 <Train> I'm still implementing e and f. I'll send you the finished documentation.
23:22:53 <Train> Implemented them, after 10 hours and 22 minutes of debugging.
23:24:23 <Train> And the interpreter is only 4952 bytes.
23:25:13 -!- tromp has quit (Ping timeout: 272 seconds).
23:26:47 <Train> All programs that worked in TrainCode v1 work in TrainCode v2, with a few specific exceptions.
23:26:55 <Train> So the quine still works.
23:27:39 -!- Lord_of_Life_ has joined.
23:29:25 -!- Lord_of_Life has quit (Ping timeout: 246 seconds).
23:29:40 -!- Train has quit (Remote host closed the connection).
23:30:31 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
23:52:16 -!- tromp has joined.
23:56:45 -!- tromp has quit (Ping timeout: 240 seconds).
←2020-04-29 2020-04-30 2020-05-01→ ↑2020 ↑all