00:12:06 -!- ais523 has quit (Remote closed the connection). 00:31:22 -!- adam_d has quit ("Leaving"). 02:17:09 -!- SimonRC has quit (Read error: 60 (Operation timed out)). 02:17:36 -!- SimonRC has joined. 03:33:48 -!- augur has quit (Connection timed out). 04:11:23 -!- Gregor has joined. 04:13:25 -!- Pthing has quit (Remote closed the connection). 04:45:40 -!- quantumEd has quit ("Leaving"). 04:54:24 -!- oerjan has joined. 04:57:34 -!- olsner has quit (Read error: 60 (Operation timed out)). 04:59:15 -!- olsner has joined. 05:24:14 okokokokokokokokokokokokokokokokoko 05:24:16 okokokokokokokoko 05:24:23 okokokokokokokokoko 05:24:35 okokokokokokoko 05:24:48 good evening mister 05:24:54 good morning 05:25:13 it's december already! 05:25:25 weeew! 05:25:35 holy fucking shit! 05:25:37 CRIIIIMBO 05:25:40 well in some time zones 05:25:48 in this time zone 05:26:44 i wish i could sleep more 05:27:09 time for dyslexics to start ruing the coming of satan 05:27:49 wait rue is the wrong word 05:28:44 it seems like it could be slightly wrong. 05:29:31 false friend with norwegian "grue", i say 05:30:26 the only important timezone is whenever rollover ends 05:30:29 which, fortunately, was already 05:30:40 hm wait english has grue too, and it fits better 05:30:50 rollover? 05:31:24 well you know where it happens last 05:31:26 i sincerely doubt the east pacific has changed yet 05:31:45 oerjan: KoL 05:31:53 huh? 05:32:01 SPEAK ENGLISH YOU INFIDEL 05:32:10 Kingdom of Loathing 05:32:15 coppro: What's your MOXIE? 05:32:21 ah? 05:32:32 337 buffed, 262 unbuffed! 05:33:02 BYE ALL OF YOU, SEE YOU IN HELL 05:33:06 ~> 05:34:14 December means Crimbo (and Hanukkimbo...) in KoL, which means YAY 05:35:37 aha 05:45:11 -!- oerjan has quit ("leaving"). 06:49:24 -!- Asztal has quit (Read error: 110 (Connection timed out)). 07:31:16 -!- augur has joined. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:28:48 -!- Slereah_ has joined. 08:39:18 -!- Slereah has quit (Read error: 110 (Connection timed out)). 08:53:11 -!- dbc has quit (Remote closed the connection). 09:01:55 -!- dbc has joined. 09:58:41 -!- Asztal has joined. 10:23:35 -!- BeholdMyGlory has joined. 11:30:11 -!- sebbu has joined. 11:41:12 -!- sebbu2 has quit (Read error: 110 (Connection timed out)). 12:06:12 -!- BeholdMyGlory has quit (Remote closed the connection). 14:01:59 -!- BeholdMyGlory has joined. 14:17:15 -!- augur has quit (Read error: 110 (Connection timed out)). 14:19:42 -!- MigoMipo has joined. 14:23:18 -!- oerjan has joined. 14:32:59 -!- augur has joined. 14:33:04 -!- kar8nga has joined. 14:44:34 -!- quantumEd has joined. 15:05:25 -!- quantumEd has quit ("Leaving"). 15:48:53 -!- coppro has quit (Read error: 110 (Connection timed out)). 15:56:37 -!- ais523 has joined. 16:01:01 -!- antoine has joined. 16:02:17 -!- antoine has quit (Client Quit). 16:03:09 -!- quantumEd has joined. 16:15:47 oerjan, iwc 16:16:31 -!- Pthing has joined. 16:17:25 indeed 16:17:30 also, happy birthday 16:17:41 happy birthdays all around! 16:17:49 thanks 16:18:01 but i suppose to AnMaster most of all. 16:18:21 oklofok :o 16:18:48 oerjan, what is P(someone else having bday on 1 December in this channel)? 16:19:42 1-(364/365)^n 16:19:49 anmaster, we know how to calculate this stuff. dont be silly. 16:20:01 11% 16:20:10 augur, I didn't claim you didn't 16:20:47 i assumed he just wanted someone to tell him the prob 16:20:59 oklofok, would this be affected if we knew that some of the remaining ones didn't? And what if you were allowed to switch door then? 16:21:05 16:24:31 anyway we have the random variables X_i for each dude on the chan except you, 1 for having a birthday, P(\exists i: X_i > 0) = 1 - P(X_1 == 0 and ... and X_n == 0) = 1 - P(X_1 == 0)P(X_2 == 0)...P(X_n == 0) = what i said, because these are clearly independent 16:25:00 X_i's are bernoulli distributed with probability 1/365 16:25:36 or you could think of it as a binomial distribution, but i prefer this way 16:27:35 (where independence is to justify equality number 2) 16:28:00 oklofok, what about leap years? 16:28:09 (how does that work with bdays anyway? 16:28:11 ) 16:28:39 most leap people have their birthdays on feb 28th 16:28:44 afaiu 16:28:50 ah 16:28:59 or 1st march 16:29:03 -!- BeholdMyGlory has quit (Remote closed the connection). 16:29:07 I see 16:29:46 oklofok, how would this be handled if humanity started to colonise other planets? With possibly different lengths of day and year. 16:29:59 but yes, i didn't account for that, it introduces less error than the fact people reproduce different amounts at different months 16:30:06 what about 1.5 year per *day* for example? 16:30:30 birthyear instead of birthday then? 16:30:47 birth unix timestamp 16:30:54 ooh good idea 16:31:16 oklofok, but how often would that repeat? I mean, every 10000 or such? 16:31:36 no that would be too often 16:32:03 birthday every 3 hours does sound intriguing 16:32:07 not accounting for leap years or leap seconds an earth-year would be roughly 31536000 seconds 16:33:21 so to round it, what about every 32000000 second? 16:33:24 or maybe 31 16:33:31 (plus those zeros) 16:34:07 -!- BeholdMyGlory has joined. 16:34:42 33554432 is close 16:34:56 2**25 16:34:59 * AnMaster notes that writing (* 365 24 60 60) is much more compact than 365 * 24 * 60 * 60 (and skipping those spaces is ugly) 16:35:09 oklofok, oh good point 16:47:13 (365 24 60 60)'*t 16:47:32 wait, I can shorten that 16:47:41 (365 24 60:)'t 16:48:19 */365 60 60 24 16:48:25 (j) 16:49:15 woah, J and Underlambda come to the same length for that? 16:49:37 I'd expect Underlambda to be about twice as verbose on average 16:49:47 which, considering I'm comparing it to J here, is pretty good 16:49:56 that's crazy 16:50:28 I need to get back to working on it sometime, I don't think any of the half-finished interps implement t yet 16:50:39 but it's basically fold 16:50:55 (map is rather harder to implement, but that's planned to be part of the lang eventually) 16:52:28 * pikhq notes that having constant arity functions is significantly easier to parse 16:52:54 t is constant arity in Underlambda 16:53:02 it has arity 2, a function and a list 16:53:29 it's defined even if the function doesn't take two arguments, but I suspect taking two arguments will be the usual use-case as it makes it act like fold 16:53:39 (that is, two arguments, one return) 16:53:44 ooh 16:53:48 car is '!t 16:53:48 (* 365 24 60 60)? Bah. That's silliness. 365 24*60*60* 16:54:02 pikhq: that's silliness as it doesn't generalise well 16:54:16 ais523: Kinda joking there. 16:54:21 365 24*60*60* is correct Underlambda too, though 16:54:24 given that it's an RPN language 16:54:31 I prefer 365*24*60*60, generally. 16:54:57 Unless, of course, I'm trying to just operate a calculator. 16:55:07 yes, what if the division of a year into pieces changed! dangerous mixing data and control 16:55:12 RPN, IMO, is very much write-only. 16:55:35 thank god ehird isn't here 16:56:08 oklofok: why? 16:56:16 (and you know he logreads, right?) 16:56:41 iirc he likes factor 16:56:49 also, some calendars, like the Aztec calendar, you need both addition and multiplication to calculate the length of a year 16:57:04 and yes, i know he logreads 16:57:36 "oklofok: thank god ehird isn't here" was targeted to logreading ehird most of all 16:58:01 grr, I should work on Unlambda some time but I have so much else to do right now 16:58:08 *Underlambda 16:58:10 unlambda? 16:58:12 haha :D 16:58:14 well, Unlambda too 16:58:25 I want to write a compiler from Unlambda into Underlambda 16:58:28 I used to have one, but deleted it by mistake 16:58:31 months ago 16:58:59 did you specifically optimize underlambda and underload for easy mixing-up with unlambda 16:59:18 underlambda was specifically optimised for that, underload's etymology is unrelated 16:59:35 but underlambda is a logical enough name for a purely functional underload 16:59:44 underload is the one i've been confusing all my life 17:00:26 interesting 17:00:33 it was originally a tarpit version of overload 17:00:54 and overload is pretty much abandoned now because underlambda does much the same thing but is more elegant 17:02:30 -!- asiekierka has joined. 17:02:31 NO 17:02:32 no 17:02:38 NOT MY PRECIOUS SOLDERS 17:02:43 I PAID A LOT FOR THM AND THEY DIED 17:03:07 asiekierka: stop derailing the conversation, it was actually ontopic for once 17:03:10 that's wr for you. 17:03:28 i love derailing conversations tho 17:03:36 well 17:03:38 what was it about 17:03:43 anyway, I'm kind of worried 17:03:48 there was a weird whirring sound for a while 17:03:52 then a bang above me 17:03:56 now there's the smell of burnt silicon 17:04:01 :D 17:04:03 did your brain overheard 17:04:13 no, I think it was the flourescent lights here 17:04:18 I turned it off, anyway 17:04:19 just in case 17:04:23 -!- calamari has joined. 17:04:36 overheard :P so now we're confusing overload and overheard too! 17:04:48 and overheating 17:04:48 what's with these over-/under- terms 17:04:57 underhead 17:05:05 well i'm not sure that works because it's not a name of a language of yours 17:05:23 !ul (/)(~:S(*)*~):^ 17:05:30 ^ul (/)(~:S(*)*~):^ 17:05:30 / 17:05:33 umm 17:05:36 ^ul (/)(~:S(*)*~^):^ 17:05:36 / ...out of stack! 17:05:40 again umm 17:05:48 ^ul (/)(~:S(*)*~:^):^ 17:05:48 //*/**/***/****/*****/******/*******/********/*********/**********/***********/************/*************/**************/***************/****************/*****************/******************/*******************/********************/*********************/**********************/***********************/*********************** ...too much output! 17:05:49 so umm ~ was... pop? 17:05:52 that's better 17:05:57 ~ is swap 17:05:59 nono swap right 17:06:01 yeah 17:06:10 gah, I've forgotten how to do loops properly 17:06:15 or rather, failed to generalise 17:06:22 my brain still had (:^):^ as the basic infinite loop 17:06:33 but forgot to add one of the :^s when it came to writing a larger one 17:06:39 cool, i can actually still read taht 17:06:41 *that 17:06:50 take that, pikhq's wild theories about rpn! 17:06:59 what are they? that it's unreadable? 17:07:11 "pikhq: RPN, IMO, is very much write-only." 17:07:13 I find RPN natural for certain types of statements 17:07:32 e.g. Mathematica would be a lot more readable if it was all postfix, rather than a mix of postfix, prefix, and infix 17:09:16 it's kinda annoying math notation is 2d, i don't know how to memorize treeform data 17:09:29 treeform?? 17:09:47 one of my dreamlets is to memorize "schaum's handbook of mathematical formulas and stuff" 17:09:50 (((a b) (c d)) ((e f) (g h))) 17:09:54 err yes treeform 17:10:24 what's in that book? 17:10:29 formulas and stuff 17:10:30 mostly 17:10:34 ?? 17:10:37 what like y = sin x 17:10:58 yeah stuff like sin^2 x + cos^2 x = 1 17:11:07 that's pythagoras theorem 17:11:40 anyway you can prove everything like that in trigology by converting it to a complex rational polynomial (which has decidible equality) 17:11:46 all these equations are trivial 17:11:49 well there's the slight difference that pythagora's theorem is just an observation about the physical world, that's a consequence of the definitions of sin and cos 17:12:24 well i'm not saying i just want to memorize the trivial ones 17:12:29 you think triangles only work because of complex transcendental functions? 17:12:37 quantumEd: *trigonometry? 17:12:42 I've never heard "trigology" used before 17:12:48 quantumEd: you can define distance in other ways. 17:12:50 ais523: yeah stuff like sin and cosine 17:13:07 ugh, bad flashbacks 17:13:20 pythagorean theorem says if you define distance as sqrt(x^2 + y^2), then distance is sqrt(x^2 + y^2) 17:13:22 one of the weirdest experiences in my life was walking into a room during Maths camp 17:13:32 and seeing three people playing three-player table tennis while chanting trig identities 17:13:54 admittedly, it would have been weirder still /outside/ maths camp 17:13:58 but it was pretty jarring even then 17:14:36 anyway even if you're correct, and all trigonometric identities in formula books are in fact trivial to prove in your head and directly see the applications of, there's still the integration formulas, and constants. 17:15:21 oklofok: learn Tschebychev's inequality 17:15:31 apparently it implies most of the other interesting inequalities, but is a pain to memorise 17:18:54 oklofok bull shit!!!!! 17:19:41 don't make math too formal it takes the soul out of it 17:19:49 pythagoras isn't about square roots 17:21:31 then what's it about 17:21:58 right angle triangle 17:21:59 you have to define distance before you can prove the pythagorean theorem gives you that 17:22:07 no you don't 17:22:35 alrighty. i'm not following you 17:23:48 nobody defines distance = sqrt(x^2 + y^2) THEN learns pythoagoras theorem 17:24:23 distance = sqrt(x^2 + y^2) is because pythagoras theorem is _true_ 17:24:49 yes. it's true with the metric defined with sqrt(x^2 + y^2) 17:25:07 R can have other metrics 17:25:30 what are you saying, non-euclidean geometry? 17:26:40 i don't know which metrics give non-euclidean and which give euclidean geometries 17:27:34 oklofok just look at this picture, http://thinkzone.wlonk.com/MathGems/pics/pythagorean_theorem.gif -- this proves pythagoras without any "R" or "metric" or analytic geometry 17:27:57 i mean the pythagorean theorem is a model that's nice for doing basic physics 17:28:00 the original proof of Pythagoras' theorem was entirely geometrical, IIRC 17:28:19 well basic physics is a different matter 17:28:21 the prof can only be geometrical 17:28:24 *proof 17:28:48 there can be no proof that isn't purely geometrical, because there is no inherent metric for the reals, you have to define one. 17:28:51 you have given a non geometrical proof -_- 17:29:07 where did i give one? 17:29:15 you said distance = distance because it is 17:30:16 well right, that's the usual definition of distance in R^2, i guess definitions prove themselves 17:30:46 http://thinkzone.wlonk.com/MathGems/pics/pythagorean_theorem.gif <<< this is meaningless 17:31:15 no it's got meaning, the meaning is what proves pythagoras theorem 17:31:22 oklofok: I mean, not only purely geometrical, but without an attempt to translate it into mathematical language 17:31:26 well it's a nice experiment in kindergarden physics 17:31:36 that image is a nice proof, though 17:31:39 how does physics have anything to do with it? 17:31:40 but it's just a physics experiment 17:31:42 I don't see any relation 17:31:47 the whole point is that d^2 = x^2 + y^2 17:32:03 you're proving the paper behaves according to the definition of distance on R^2 17:32:20 and it proves that by showing that x^2 + y^2 + 4 copies of the original triangle's area = d^2 + 4 copies of the original triangle's area 17:32:29 the picture of a triangle is not important, the _Perfect_ triangle which it denotes is what you must consider 17:32:35 if you were traveling near speed of light, that proof wouldn't apply anymore 17:32:38 you can express Pythagoras' theorem in terms of areas rather than distances 17:32:46 well, no not really 17:32:52 oklofok: it was originally 17:33:05 arguably, the corollary to distances is a different theorem 17:33:05 but with papers and you traveling all around at different speeds, i'm sure it could bend a bit 17:34:08 ais523: to verify areas of things have to do with multiplication is another fun kindergarden physics experiment :P 17:34:30 I don't think any of this is 17:34:31 kindergarden physics 17:34:36 I would say it is: Mathematics 17:34:41 it is not: mathematics 17:34:46 it has nothing to do with: mathematics 17:35:01 maybe to you mathematics is deduction trees which a computer can say "VALID" or "INVALID" 17:35:06 one of my favourite proofs is the one I came up with myself that 1^3 + 2^3 + 3^3 + ... + n^3 = (1 + 2 + 3 + ... + n)^2 17:35:26 also, I like the combinatorial proof of Fermat's Little Theorem, although it isn't mine 17:35:32 mathematics is taking objects that behave in a certain way, and proving that implies them behaving in some other way as well 17:35:35 ais523 how did you prove that? 17:36:10 ok, consider a "times table" (a table where the element at (i,j) is i*j) 17:36:31 if you multiply out the RHS of that expression, you get the sum of all elements in a times tabnle 17:36:34 *times table 17:36:50 now, you divide the times table into areas based on the highest coordinate 17:36:57 i.e. (1,1) has highest coordinate 1 17:37:07 (1,2), (2,2), (2,1) have highest coordinate 2 17:37:08 and so on 17:37:30 up to (1,n), (2,n), (3,n), ... (n,n), ... (n,3), (n,2), (n,1) with highest coordinate n 17:37:42 say if you take all the values with highest coordinate i 17:37:43 yeah 17:37:50 the rest is just algebra 17:37:53 nice 17:37:53 then you get i*(1+2+3+...+i+...+3+2+1) 17:37:59 which is i^3 17:38:39 that's a mathematical proof, you define numbers that behave in a certain way, and a few operations on them, then you prove those operations mix in an interesting way 17:38:49 that's cool ais523 17:39:24 -!- kar8nga has quit (Remote closed the connection). 17:39:46 as for the proof of Fermat's Little Theorem (which isn't mine, but is just as cool): we're trying to prove that (a^p) % p = a % p 17:39:59 or in other words, p divides (a^p-a) 17:40:16 now, suppose you have p objects arranged in a circle, each of which can be any of a colours 17:40:19 the nicest proof for that is a corollary from group theory, but go on 17:40:41 you might change my mind 17:40:48 interruptingfok 17:40:49 if you rotate the circle, you need to rotate it an entire revolution to get back to the original arrangement of colours, unless all the objects are the same colour 17:41:03 because there's a prime number of colours, so there's no other way to get a repeating pattern around the circle 17:41:12 so there are a^p-a arrangements that aren't a solid colour 17:41:50 and because you can't get the same arrangement twice as you rotate any of them, the total number must therefore be divisible by p 17:42:01 (because p is the number of positions you can rotate to) 17:42:25 ah 17:42:30 that's actually the corollary in disguise :) 17:42:36 heh, same proof? 17:42:38 it's a very neat one, anyway 17:42:40 well i think so 17:42:55 this is nice, it means we don't have to debate about which is better 17:43:04 the idea in group theory is if you have some group, and a subgroup of its, then the size of the subgroup divides the parent groups size 17:43:06 *group's 17:43:21 let's see... 17:43:22 yep, same proof I think 17:43:27 one of those arrangements 17:43:34 err 17:43:38 i need to think :P 17:44:42 okay i'll leave making this precise to oerjan 17:44:46 I don't see that one ais523 17:45:00 how does "the total number must therefore be divisible by p" follow? 17:45:18 quantumEd: you have a partition of a^p-a into equivalence classes of size p 17:45:27 q.e.d. 17:45:58 quantumEd: because you can divide the a^p-a possible colourings into sets of p, which are the same up to rotation 17:46:29 -!- FireFly has joined. 17:46:44 ah, excellent! 17:46:47 the equivalence classes partition the set, and each is of size p, so you have p * (number of equivalence classes) = a^p - a 17:48:26 ais523: the group theory one proves many other things though :P 17:48:43 well, it's two parts to the same theorem 17:48:49 the group theory proof is the second half of my proof 17:51:50 i'm not sure it's easy to extend that to the general case 17:52:02 neither am I 17:52:06 oerjan: please explain that proof to me in terms of abstract algebra! 17:56:15 the idea for the usual proof is you take some subgroup H of a group, now it follows from the axioms of a group and the definition of a subgroup that it's an equivalence relation of the group's elements whether aH == bH, now because each aH is of the same size, we have |H| divides |G| 17:56:33 that one doesn't directly work for infinite groups ofc 17:56:49 aH just means multiplying all the subgroup's elements by a 17:57:04 -!- calamari has quit ("Leaving"). 17:58:25 ugh, more spam phone calls 17:58:47 there are loads to this office, I take the phone off the hook until they end in the hope of costing the spammers money 17:58:50 and don't actually listen to them 17:59:08 um what, i wasn't paying attention 17:59:11 oh and p divides a^p-a follows from this when you take the multiplicative group of p elements and consider the subgroup generated by a, it's size must divide the size of the original group, but the group's size is p, so also must be the whole p, which means the first power of a that is 1 can be p-1 17:59:31 subgroup generated by a = take 1, a, a^2, a^3, ... 18:00:00 oerjan: we're discussing the combinatorial and group-theoretical proofs of Fermat's Little Theorem 18:00:03 well you really want = {..., a^-2, a^-1, a^0, a^1, a^2, ...} 18:00:03 and whether or not they're the same 18:00:18 but that's irrelevant here I suppose 18:00:26 well right, i was talking about the finite case 18:00:50 usually you need the inverses, but in the finite case, a^k = 1 for some k, so a^(k-1) is the inverse of a, so you don't need the explicitly 18:00:57 hmm I don't like this notation I used with the dots 18:01:01 *them 18:01:11 why not 18:01:12 ? 18:01:21 it seems to suggest that all the elements are different 18:01:33 but maybe a^-2 = a^0 18:02:18 well luckily you have { ... } there to remove duplicates! 18:02:36 usually implemented using a hash table 18:02:43 what lol 18:04:58 i wanna do algebra so bad, i had a few courses in algebra in spring, but i only realized after taking them how awesome it was :P 18:07:01 my currently mushy brain cannot see how the two proofs would be ewuivalent 18:07:09 *equivalent 18:07:21 well i'm thinking he's implicitly defining some group of sort of permutations 18:07:30 but instead of p objects in p places, you have a objects 18:07:40 or maybe nothing like that 18:07:53 I should do something in Underload. 18:08:08 well an action of a group of p elements on a set of a^p elements 18:08:10 I've got a book on algebra but I haven't read it yet 18:08:22 all i know is they have the same feel, you divide the whole thing into equivalence classes of size p 18:09:01 both of them prove a^p-a/p is an integer :P 18:09:19 (a^p-a)/a 18:09:21 sigh 18:09:35 no /p was correct 18:09:40 oklofok: his proof is also a group proof, but it's not the _same_ proof... 18:09:43 wel 18:09:44 l 18:09:53 (a^p-a)/a is also an integer, true :P 18:10:28 oerjan: oh well i suppose that's a good point 18:10:54 damn you, i'm always right until you show up 18:11:09 NOW WHY MIGHT THAT BE 18:11:27 IT'S PROBABLY BECAUSE OF QUANTUM 18:23:21 should i do fun stuff or not fun stuff? both need to be done by thursday 18:23:34 fun stuff 18:23:38 actually food is third option 18:24:07 eat first, then you'll enjoy both the fun and the unfun stuff more 18:24:13 alright, i have all the votes i need 18:24:14 oh 18:24:29 ais523: but i'm sorta full, it's just the food will go bad if i don't eat it... :P 18:24:36 ugh 18:24:38 well i'm not that full, something in-between 18:24:43 eat it just before it goes bad? 18:24:55 yes i'll put like a timer in the fridge 18:24:59 use it for mold experiments 18:25:25 the world needs new antibiotics! 18:25:28 i've ben bacheloring it up for 5 days, there's enough mold experiments here already. 18:25:32 *been 18:25:43 I think possibly the best advice here is that asking #esoteric for advice on this sort of thing is a bad idea 18:26:01 hey i got exactly the answer i wanted 18:26:09 i mean at first 18:26:22 oh at first, yes... 18:26:24 also why is it so hard to remember quantumEd is fax 18:26:33 why does it even matter? 18:26:37 oklofok: it's the uncertainty 18:26:54 also, why would you ask if you already wanted a particular answer? 18:27:03 why does it matter who you are? because you have a personality 18:27:09 except to get statements from us that you could later use to destroy our political careers 18:27:30 in fact a very distinct one 18:29:12 also it's nice to know which ones are noobies, because i behave slightly differently based on the portions 18:30:36 yes, you need to be polite until they are properly addicted 18:31:17 yes 18:34:29 -!- quantumEd has quit ("Leaving"). 18:35:08 wait that's the opposite of what should happen if a regular has a new nick! 18:35:10 * oerjan observes quantumEd's momentum to be away from this channel 18:35:52 his position is now relatively unknown, though 18:35:52 not that i was that nice to him, i told him his math was wrong, which is pretty much the worst thing you can do to a person 18:36:05 i mean if my math was wrong i'd probably kill someone 18:36:08 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 18:36:32 don't speak of things too horrible to contemplate 18:37:09 starting to doubt your math after me and fizzie's talk about reals? 18:37:14 oklofok: you know, it's OK to unbelieve things you previously believed if someone points out errors in them 18:37:21 otherwise, you'd end up believing everything, which is even worse 18:37:42 ais523: but there's a certain point in life where your math is set. mine is. 18:37:57 wait, what? 18:38:00 :D 18:38:09 I'm a research student 18:38:15 and therefore, /expect/ to be discovering new maths 18:38:30 but i expect new maths to fit my maths. 18:39:01 i'm using the definition of math relevant to the maths being wrong comment 18:39:43 -!- quantumEd has joined. 18:39:44 ah 18:39:54 also i proved a pretty ridiculous micro-lemma today, Q is an identifying code of R 18:40:16 if we call R as a code, points are codewords 18:40:20 *a code 18:41:10 identifying code = there's some r such that the map x -> B(x, r) \cap I is an injection 18:41:29 *I is an identifying code 18:42:14 (basically you can determine a point by which elements of the identifing code are within some distance of it) 18:42:35 ^ul (:^:^:^:^)(~:(*)~^S(/)S:(:)~^~(*)~^(!!()())~**~:^):^ 18:42:36 ...too much prog! 18:42:37 hm isn't identifying code == dense subset of R ? 18:42:52 ^ul (:*:*:*:*)(~:(*)~^S(/)S:(:)~^~(*)~^(!!()())~**~:^):^ 18:42:52 ****************/***************/**************/*************/************/***********/**********/*********/********/*******/******/*****/****/***/**/*///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ...too much output! 18:42:58 oerjan: not exactly, consider taking all the intervals (2k, 2k+1) out 18:43:01 and taking radius 1 18:43:07 or, if that doesn't work 18:43:14 huh 18:43:16 at least you can remove some small interval 18:43:36 ok but any dense subset is an identifying code 18:43:40 yes, i think so 18:44:17 well, if x != y, then there's an open interval between the extremes of the balls around them 18:44:23 and in that open set, there's an element 18:44:31 ^ul (:*:*:*:*)(~:(*)~^S(/)S:(:)~^~(*)~^(!!()())~**:(!())~^~a(^)~*^~:^):^ 18:44:31 ****************/ 18:44:45 ^ul (:*:*:*:*)(~:(*)~^S(/)S:(:)~^~(*)~^(!!()())~**:(!())~^(!())~^~a(^)~*^~:^):^ 18:44:46 ****************/***************/**************/*************/************/***********/**********/*********/********/*******/******/*****/****/***/**/*/ 18:44:48 yay 18:45:01 ^ul (:*:*:*:*:*)(~:(*)~^S(/)S:(:)~^~(*)~^(!!()())~**:(!())~^(!())~^~a(^)~*^~:^):^ 18:45:01 ********************************/*******************************/******************************/*****************************/****************************/***************************/**************************/*************************/************************/***********************/**********************/**************** ...too much output! 18:45:11 ^ul (:*::*:**:*)(~:(*)~^S(/)S:(:)~^~(*)~^(!!()())~**:(!())~^(!())~^~a(^)~*^~:^):^ 18:45:12 ********************/*******************/******************/*****************/****************/***************/**************/*************/************/***********/**********/*********/********/*******/******/*****/****/***/**/*/ 18:45:27 ^ul (::*:*:**:*)(~:(*)~^S(/)S:(:)~^~(*)~^(!!()())~**:(!())~^(!())~^~a(^)~*^~:^):^ 18:45:27 ******************/*****************/****************/***************/**************/*************/************/***********/**********/*********/********/*******/******/*****/****/***/**/*/ 18:45:34 ^ul (:*:*::**:*)(~:(*)~^S(/)S:(:)~^~(*)~^(!!()())~**:(!())~^(!())~^~a(^)~*^~:^):^ 18:45:34 ************************/***********************/**********************/*********************/********************/*******************/******************/*****************/****************/***************/**************/*************/************/***********/**********/*********/********/*******/******/*****/****/***/**/*/ ...too much output! 18:46:17 oerjan: first of all i think the definition of some sort of denseness closure is relevant here, take the union of all closed intervals C such that C \cap I is dense in C 18:46:26 ^ul (:*:*::**:*)(~:(*)~^S:(:)~^~(*)~^(!!()())~**:(!())~^(!())~^~a(:(/)~^S^)~*^~:^):^ 18:46:26 ************************/***********************/**********************/*********************/********************/*******************/******************/*****************/****************/***************/**************/*************/************/***********/**********/*********/********/*******/******/*****/****/***/**/* 18:46:35 perfect 18:46:36 because we just case about whether the endpoints land on somewhere like that 18:47:03 it'd look neater in Underlambda, I wouldn't have to write all those operations out by hand 18:47:05 ais523: isn't it great how things are fun to relearn again once you've forgotten them :P 18:47:12 "relearn again" 18:47:17 oklofok: ok other attempt: I is an identifying code with given r iff (I-r) union (I+r) is dense subset of R 18:47:20 oklofok: well, in this case it's more reminding myself of how it works 18:47:37 oerjan: ah 18:47:43 also, interestin that there's exactly one a command in that 18:47:47 *interesting 18:47:48 that's so obvious 18:47:54 * oklofok bangs head to wall 18:48:39 actually, I've known the expression for decrement for ages, just haven't written it into a program like that 18:48:53 oh. i have. 18:48:59 on the chan 18:49:01 with you watching 18:49:02 i think 18:49:26 after all, (:)~^~(*)~^(!!()())~** is rather messy 18:50:13 that would be ':`'*`(!01)&* in Underlambda, just with simple abbreviations 18:50:29 and probably just 1- with full abbreviations 18:50:52 wait, no, not (!01) 18:50:55 that makes no sense for this 18:51:02 (!!()()) it would probably remain 18:51:09 0 pushes a 0, not runs a 0 18:51:22 oerjan: to humiliate myself further, i actually originally tried to prove Q is *not* an identifying code 18:51:25 (!0^1) would work 18:51:35 or (!!1 1) 18:51:55 but mentioned this to a prof, and he said think again 18:53:11 (!())~^(!())~^ would be 0`0` in Underlambda 18:53:14 or !! in C 18:56:52 mhm 18:57:50 I'm vaguely wondering if 0` should be a single character, but it wouldn't be used enough 18:58:19 oerjan: so in fact the best you can do is to cover "half" of R (measuring proportions using the obvious system based on limits) 18:58:33 at least i think it follows from that 18:58:51 well cover, if you take the closure i explained earlier 18:59:11 taking the union of dense closed intervals first 19:00:09 let's see... that whole section near the end, minus printing the slash, could be written :@gg^ 19:00:24 which is a lot shorter than :(!())~^(!())~^~a(:(/)~^S^)~*^~ 19:00:52 ooh, thought of a clever way to allow for the slash 19:01:12 ^ul (:*:*::**:*)(~:(*)~^S:(:)~^~(*)~^(!!()())~**:(!())~^(!())~^~a(^)~*^~:^):((/)S)*^ 19:01:13 ************************************************************************************************************************************************************************************************************************************************************************************************************/ 19:01:16 or not 19:01:21 ^ul (:*:*::**:*)(~:(*)~^S:(:)~^~(*)~^(!!()())~**:(!())~^(!())~^~a(^)~*^~:^):((/)S)*~^ 19:01:21 ************************************************************************************************************************************************************************************************************************************************************************************************************/////////////////////// 19:01:36 wait what, why did those do the same thing 19:02:09 oh, they didn't 19:02:17 heh, appending to the wrong end of the loop 19:02:21 ^ul (:*:*::**:*)(~:(*)~^S:(:)~^~(*)~^(!!()())~**:(!())~^(!())~^~a(^)~*^~:^):((/)S)~*~^ 19:02:22 ************************/***********************/**********************/*********************/********************/*******************/******************/*****************/****************/***************/**************/*************/************/***********/**********/*********/********/*******/******/*****/****/***/**/* 19:07:32 -!- Gracenotes has quit (Remote closed the connection). 19:07:47 -!- oerjan has quit ("Good night"). 19:12:49 ooh, seems my issue with the Windows 7 computer that used to be here was actually Microsoft's fault 19:12:58 rather than incompetence by the IT support department 19:13:02 http://news.bbc.co.uk/1/hi/technology/8388253.stm 19:13:51 hmm, actually mine might be different, as it happened during boot rather than after login 19:23:17 these exercises just get easier and easier because students never manage to present all 7 during the 2 hour session, so we keep falling more and more behind, next week there's 3 last week's problems to show 19:23:41 -!- asiekierka has quit (Read error: 110 (Connection timed out)). 19:23:47 (we usually have 7 problems, and a random student is chosen to present each) 19:26:24 so not exactly a foolproof system 19:38:19 Man, I really must be not feeling well: typing is hard. 19:39:15 maybe you're tired 19:39:24 I know I am, and probably I'm typoing more as a result 19:39:38 after all, I had to type "typoing" three times before I got the first two letters right 19:39:42 Headache. 19:39:51 and I somehow managed to spell "probably" with a capital P, and had to correct that too 19:39:56 I'm doing "okay" so long as I avoid flourescent lights. 19:40:04 (such as are in every building on campus) 19:40:22 Flickering lights hurt like fuck. 19:40:49 sounds like migrane, then 19:40:55 'Tis just that. 19:41:03 Migraines suck. 19:53:08 -!- MigoMipo has quit. 20:07:47 -!- MigoMipo has joined. 20:17:54 -!- BeholdMyGlory has quit (Remote closed the connection). 20:18:19 -!- adam_d has joined. 20:21:21 -!- BeholdMyGlory has joined. 20:25:34 -!- jpc has joined. 20:25:41 -!- jpc has left (?). 20:25:44 -!- jpc has joined. 20:26:23 heya FireFly 20:26:30 Hi :P 20:26:37 * jpc is jcp, I just have two accounts since I have too many channels for one 20:27:23 Oh, didn't even notice the difference at first glance 20:41:12 -!- calamari_ has joined. 20:41:33 argh I just ran into a system that lacked less 20:41:42 as in, only pager around is "more" 20:41:53 AnMaster: use vi 20:41:59 it has similar bindings to less 20:42:02 just allows editing too 20:42:03 ais523, not around, nor emacs. There is nano however 20:42:12 wait, no vi? not even vim.tiny? 20:42:19 something is wrong with the universe 20:42:21 ais523, no vi or vim 20:42:43 ais523, shell is zsh. There is also ash, but no bash 20:42:52 *what the fracking hell* 20:42:56 ok, something is /very/ wrong with the universe 20:43:09 I wonder if the same pattern repeats for other programs 20:43:15 coreutils is gnu btw 20:43:20 as far as I can tell it is sane 20:43:28 AnMaster: contradiction 20:43:39 ais523, well, "no less sane than usually" 20:44:09 hmm, what calculators are available? let me guess, dc and Mathematica? 20:44:25 languages... asm and Haskell? 20:44:50 ais523, dc isn't there 20:44:55 nor is bc 20:45:04 nor Mathematica. 20:45:10 ok 20:45:12 but I'm not sure what the binary for it is called 20:45:14 I was just trying to guess the pattern 20:45:23 /usr/bin/mathematica? 20:45:36 ais523, it has gcc but not g++ 20:46:01 gnu as exists. No ghc or hugs 20:46:03 nor erlang 20:46:07 which is strange as g++ is generally the same or a very similar binary 20:46:09 nor any scheme that I know of 20:46:28 ais523, you can use --enable-languages iirc to say you don't want c++ 20:46:40 yes 20:46:51 I mean, they must have /deliberately/ excluded C++ support 20:46:58 only time I've done that was for gcc-bf 20:47:00 i just made a reduction in the wrong direction 20:47:09 because I didn't want to bother working out an ABI for exception handling 20:50:14 ais523, apart from that, hm... there is joe too. The text editor I mean 20:50:15 no pico 20:50:29 joe? 20:50:38 also, nano /and/ pico would be ridiculous 20:50:55 IIRC, nano's bug-compatible with pico by default, apart from supporting more commands 20:53:16 -!- quantumEd has quit ("Leaving"). 20:53:30 -!- quantumEd has joined. 20:55:45 ais523: you've done gcc-bf? 20:55:45 it's my project, yes 20:55:55 not finished, and unlikely to be for a while due to RL pressures, and not being top of my esolang priorities (Feather and Underlambda are higher) 20:56:03 ahh 20:56:13 but finished enough to feel like an incredibly buggy finished program rather than an unfinished one 20:56:33 so you compile c to bf? 20:56:45 yes 20:56:52 well, in two stages 20:56:59 I compile C to ABI, which is an invented asm-like language 20:57:01 then ABI to BF 20:57:06 the first compiler is done, the second isn't 20:57:13 neat! 20:57:35 I tried to figure out gcc a few times but I always got bogged down 20:57:47 congrats on getting past that point :) 20:57:59 I even found a bug in gcc, but it was in a codepath that isn't used for any of the architectures they support 20:58:05 so arguably, it isn't a bug, and probably they don't care 20:58:13 so is ABI something you created? 20:58:22 yes 20:58:30 most of it maps onto BF pretty simply 20:59:01 e.g. tadd2.8 %r0, %r1, %r2 would be (with the pointer at r0) [-<+<+>>] 20:59:17 but some bits, e.g. compare, multiplication, and, are harder 20:59:35 basically it's about as powerful as a typical RISC assembly language 20:59:37 may I see a buggy copy? 20:59:39 but designed to be good for BF in particular 20:59:53 calamari_: yes, except for the difficulty of transferring the files in question 21:00:09 the entire gcc source distribution is rather large, as is that for newlib 21:00:15 I made a bf assembly language a while back and tried to port it, but again, like I say I got stuck hehe 21:00:34 and I'm not entirely sure if it would work if you downloaded a current gcc version, rather than the one I'm working with 21:00:39 also, gcc-bf isn't on this computer 21:00:50 but I have a computer with it on, 'twould just take a while to boot 21:01:12 * ais523 boots it 21:01:16 well honestly I was just going to look at it to understand 21:01:34 also, the gcc build process is truly insane 21:01:43 so much so, that I have my own parallel build process that is also insane 21:01:55 and runs it a bit at a time, occasionally using Perl scripts to modify gcc's own build process 21:02:23 that sounds about right for gcc 21:02:39 you must have an incredible amount of patience 21:02:49 fun fact: gcc .md files are all polygolts 21:02:52 *polyglots 21:02:57 between two similar but not identical languages 21:03:04 ais523: Patch of GCC, rather than full source tree? 21:03:10 Still probably large, but less so. 21:03:21 it's mostly confined to one directory 21:03:33 And yeah, GCC's build system is freaking insane. 21:03:45 and a few patches to the build system, lying to it to tell it that bf-unknown-none is a processor supported by GNU 21:04:12 what is your register size, 32 bits? 21:04:17 8 21:04:27 oh, nice 21:04:27 although, int=32 21:04:33 ais523: Well, ideally it is a supported processor. :P 21:04:37 so an int takes up 4 registers 21:04:59 Though the binutils probably don't much care for it... 21:05:19 -!- ais523_ has joined. 21:05:24 binutils are custom 21:05:30 * pikhq nods 21:05:32 ld does the actual assembling 21:05:38 ar is a wrapper around tar 21:05:42 -!- ais523 has quit (Nick collision from services.). 21:05:45 -!- ais523_ has changed nick to ais523. 21:06:17 And ranlib is a noop? 21:07:38 yes 21:07:47 actually, it's a no-op even on most sane systems 21:08:21 It's a no-op on Linux. 21:08:27 It's not a no-op on Mac OS X.' 21:08:46 Wots all this about bf-gcc now? 21:08:54 Is it still maintained/developed? 21:09:14 It is such a shame that the ar format is not even remotely standardised. 21:09:32 Gregor: Yeah, ais523 still develops it, just not a whole lot. 21:09:39 Gregor: not really; I haven't abandoned on it, but it's so far down my list of priorities there's unlikely to be progress for years 21:11:56 ais523, if you made the diff against base gcc available 21:12:06 AnMaster: I'm trying to do that right now 21:12:07 someone else could set up a repo and take over 21:12:15 ais523, oh and tell us what version the base gcc is 21:12:25 you can guess from the build script 21:12:33 as it has the exact version number and date in 21:13:26 do you have a bf hello world it made? 21:13:26 ais523, I would probably begin by porting it to modern gcc. to avoid all hell breaking loose. Well I guess less of a risk of that actually when it isn't bootstrapped 21:13:47 AnMaster: bootstrapping it would be insane 21:13:48 calamari_, that's several MB when encoded with runlength 21:13:51 ais523, yes 21:13:54 hahaha 21:14:22 calamari_, I have seen it 21:14:24 due to the need to add in a runtime, etc 21:14:25 not sure if I have it around 21:14:27 bootstrapping what? 21:14:31 calamari_: gcc 21:14:36 gcc-bf compiled to bf 21:14:37 because that would imply compiling gcc into brainfuck 21:14:37 nah it's okay I'll believe you 21:14:38 would be insane 21:15:13 http://filebin.ca/akqbhj/gcc-bf.tar.gz is the diff against gcc and newlib, and the build script 21:15:14 I bootstrapped my bf assembler, but that's at a completely different scale hehe 21:15:30 also, I haven't got a hello world to work that uses either stdio, or unix syscalls 21:15:38 hah 21:15:50 the famous several-MB one requires use of __bf_out 21:15:52 ais523, do you know if it is gcc->abi or abi->bf issue? 21:16:02 the second, almost certainly 21:16:06 ais523, actually it seems to be 435K 21:16:10 it's less-well tested, also less complete 21:16:15 it was several MB if *not* RLL encoded 21:16:16 that was it 21:16:24 ais523: thanks! :) 21:16:26 * AnMaster just found it 21:16:28 gcc-bf assumes that runlength is optimised 21:16:49 ais523, do you have an ABI interpreter? 21:16:56 ais523, or any other useful testing tools 21:17:00 source tarballs you need: gcc-4.2-20070719.tar.lzma newlib-1.16.0.tar.gz 21:17:01 AnMaster: no 21:17:06 oh, there is one testing tool 21:17:09 oh? 21:17:13 bfrle, my BF interp 21:17:17 ais523, link? 21:17:18 which is designed specifically to debug gcc-bf 21:17:24 link = not online, let me tarball it up too 21:17:44 oh, no need, it's in the tarball I've already posted 21:17:51 in the patches/ dir 21:17:57 ais523, does this support out of tree builds? 21:18:19 AnMaster: the build system is very inflexible 21:18:21 So, the really major thing that GCC-BF misses is functioning syscalls? (and therefore most of libc) 21:18:31 it always cp -rs the original tree 21:18:33 and then modifies it 21:18:49 pikhq, and ABI->BF stuff 21:18:49 then it builds gcc and newlib in a mix of in-tree and out-of-tree 21:18:51 I guess 21:18:55 copying the resulting files into a fourth tree 21:18:59 which is the one you actually run it from 21:19:04 *blink* 21:19:08 pikhq: no, the really major thing it's missing is multiplication 21:19:19 ais523: ... Multiplication. Really. 21:19:20 which is, I suspect, the reason that the syscalls aren't functioning 21:19:30 pikhq: I told you I hadn't finished 21:19:39 True. 21:19:39 /you/ try writing a 64-bit multiply in BF 21:19:45 argh I was just adding it to a bzr repo 21:19:54 turns out it was already darcsed 21:19:54 that has some modicum of efficiency 21:19:58 AnMaster: it isn't, really 21:20:02 that darcs repo isn't a proper repo 21:20:06 adding patches/config-bf/_darcs/inventory 21:20:08 see? 21:20:09 it's basically used as a versions repository 21:20:16 ais523, huh? 21:20:17 ais523: I presume you have 64-bit adding? 21:20:18 normally, you commit code after you write it 21:20:21 pikhq: yes, of course 21:20:24 ais523, well yes 21:20:32 in that repo, I was commiting just before I did something potentially disasterous 21:20:40 so I could roll back to before what I did 21:20:46 Hmm. That makes it only *quite* painful. 21:20:47 also, ignore all the documentation in that tree, it's wrong 21:21:28 well, it's accuratish enough to give an idea of what I'm doing, but not the details 21:21:28 the comments in the source, OTOH, are up to date 21:21:28 ais523, hm... so can I use darcs on it 21:21:28 AnMaster: yes 21:21:30 or is there some crucial part missing 21:21:39 just don't expect the version history to make any sense, unless you're drunk at the time 21:21:47 ais523, it seems only part of patches/ has _darcs? 21:21:51 the top dir does not 21:21:54 in fact 21:21:54 AnMaster: correct 21:21:59 only config-bf does? 21:22:02 it's just the gcc bit that was in darcs 21:22:09 my suggestion is that you rm -r the _darcs dir 21:22:15 ais523, only config-bf has darcs stuff 21:22:15 and then, version with any versioning system you like 21:22:19 AnMaster: yes 21:22:25 ais523, I will use bzr as you probably know 21:22:31 I don't mind that at all, why should I? 21:23:30 gcc-4.2-20070719 hm 21:24:03 ais523, is that based on upstream or some distro? 21:24:19 because only gcc-4.2-20070719 I can find is from ubuntu bug reports 21:24:28 it's what I got by doing apt-get source gcc-source 21:24:30 or something like that 21:24:39 it's probably a nightly 21:25:02 ais523, do you remember what version of debian or ubuntu you did that on? 21:25:04 considering my jaunty has 4.3.3 21:25:08 not 4.2* 21:25:43 no, but considering the date, 7.10 seems plausible 21:25:52 ais523, what was that one called? 21:26:03 feisty 21:26:13 huh 21:26:32 ais523, what about gutsy? would that match? 21:26:37 it match better with googling 21:26:44 oh, miscounted 21:26:46 yes, it was gutsy 21:26:53 * AnMaster looks for a timeline 21:28:45 ais523, why is lucid 10.04? rather than 10.0 21:28:54 date-based 21:28:57 april 2010 21:28:58 oh 21:29:11 if somehow they're late with the release, it'd be 10.05 21:29:25 the pressure to release every 6 months is one of the things that leaves Ubuntu rather buggy 21:29:32 is that the reason for 6.06? 21:29:45 two months of delay 21:30:00 ais523, which one will be the next LTS? 21:30:10 * AnMaster is going to aim for next LTS and stay on that 21:31:13 I think lucid is an LTS 21:31:42 ah yes 21:31:51 ais523, well I guess karmic before then for a bit 21:32:05 ais523, was jaunty unusually stable or what? 21:32:14 it was stabler than karmic, at least 21:32:19 right 21:32:25 different versions seem to be stable for different people, for some reason 21:32:38 OTOH, the wireless works even better with karmic than it did with jaunty 21:32:51 (with earlier versions it was somewhat broken) 21:32:52 ais523, I would say my gentoo system is one of the most stable systems I owner 21:32:54 owned* 21:33:07 in fact my arch system manages to be bleeding edge *and* stable 21:33:54 ais523, what is config-bf? 21:34:18 it's a directory that becomes config/bf inside gcc itself 21:34:23 oh? 21:34:29 it contains all the patches to gcc that deal with actually doing interesting things 21:34:33 as opposed to build tweaks, etc 21:34:41 what is the darcs command to show full log? 21:34:46 darcs changes 21:34:49 but you won't get much out of it 21:34:53 ah 21:35:19 what is cc0 21:35:37 it's a pseudo-register that refers to the flags 21:35:40 like overflow, carry, etc 21:35:50 gcc-bf has a physical cc0, also cc1, cc2, and cc3 21:35:55 which are used as temporaries when doing comparisons 21:36:06 ais523, what is collect2? 21:36:11 a wrapper for ld 21:36:19 which is actually named ld, normally, when it's installed 21:36:28 it deals with things like constructors in C++ 21:36:33 by wrapping around main 21:36:42 ais523, you use little endian? 21:36:42 why? 21:36:46 it's an awful hack, and something that gets in my way a lot, and that I don't actually need 21:36:55 and I use little-endian to make casting easier 21:37:09 ais523, huh? 21:37:28 (short)x is in the same memory location as (long)x 21:37:43 if you use big-endian, you have to write code for downcasting 21:37:58 this is the main theoretical advantage for little-endian, as far as I know 21:37:59 ah 21:38:01 ais523, please explain the purpose of patch-libgcc-mk.pl to someone who don't know perl 21:38:14 AnMaster: it patches the build system 21:38:20 why a perl script 21:38:21 for that 21:38:22 I could have used sed instead, but the Perl is cleaner 21:38:28 why not just a diff? 21:38:37 basically, libgcc contains implementations of things like floating-point emulation 21:38:54 the build script for libgcc is generated dynamically during the compilation of gcc 21:38:59 so doesn't exist initially, to be patched 21:39:09 ais523, did you consider doing an llvm backend instead? 21:39:15 AnMaster: not at the time 21:39:18 I might, at some point 21:39:25 ais523, since llvm supports PIC16 and such even 21:39:44 anyway, gcc assumes, for some reason, that the largest possible integer is twice the native word size 21:40:04 which is a strange assumption to make, given that __int128_t exists and it compiles on 32-bit systems 21:40:11 ais523, heh? 21:40:15 so it's even violating its own assumptions there 21:40:18 how does that work then 21:40:30 probably there's a separate hack in an entirely different part of the code 21:40:39 ais523, of course llvm backend would imply C++ that really feels like C++ 21:40:51 anyway, one of the things that libgcc does is things like 64-bit operations in terms of 32-bit operations 21:41:07 my idea, basically, was to get it to also do 32-bit in terms of 16-bit, and 16-bit in terms of 8-bit 21:41:27 that means I don't need to write an enormous number of cases in the linker 21:41:37 things like 64-bit multiplication are bad enough 21:41:57 ais523, is newlib from gutsy too? 21:42:05 probably 21:42:18 as ehird will tell you, I rarely look for things on the Web 21:42:22 ais523, and did you use the patches from ubuntu? 21:42:31 definitely no in the case of gcc 21:42:36 for newlib? 21:42:39 given that the tarball I downloaded contained another tarball 21:42:42 for newlib, I'm actually not sur 21:42:44 *sure 21:43:08 ouch nested tarballs 21:43:16 I know 21:43:46 ais523, what is libbf for? 21:43:56 syscalls 21:44:09 it's basically the libc 21:44:15 well, newlib is the libc 21:44:40 but you can't write a libc entirely from scratch 21:44:40 as it would be unable to do I/O, etc 21:44:40 so it's all the bits of libc that can't be written in pure C 21:44:53 libbf is, instead, written in magic 21:44:59 but you can't write a libc entirely from scratch <-- why not? it would just take some time 21:45:12 AnMaster: I/O, etc 21:45:17 as in, you need inline ASM 21:45:19 or something else similar 21:45:23 ais523, well. that isn't what you said 21:45:32 I meant, in pure C 21:45:35 ah 21:45:42 now it makes sense 21:45:47 the funny thing is, some of it is pure C 21:45:55 given that the filesystem is a linked list stored on the heap 21:46:02 the C standard requires files 21:46:08 but doesn't require them to persist past the end of the program 21:46:09 ais523, is the ABI documented anywhere? 21:46:36 which? 21:46:42 ABI the asm, or ABI the application binary interface? 21:46:54 the interface is documented, to some extent, in comments in bf.g 21:46:54 ais523, your own fault for confusing it 21:46:55 and 21:46:57 *bf.h 21:47:00 both would be useful 21:47:00 AnMaster: I did that deliberately 21:47:07 but I meant asm in this case 21:47:09 and the asm is documented, to some extent, in bf-ld 21:47:16 http://en.wikipedia.org/wiki/String_operations <<< look at the definition of prefix-closed, is it just me or does that make no sense? 21:47:19 ais523, where is the asm -> bf translator? 21:47:23 is it the perl bf-ld? 21:47:28 yes 21:47:31 if so I will probably rewrite it 21:47:31 bf-ld does most of the actual work 21:47:36 to be in python or something 21:47:44 AnMaster: that'd be rewriting more than half the project 21:47:51 ais523, well, I don't know perl 21:47:53 although, don't let that stop you if you really want to 21:47:53 for instance Pref({aaa}) would be the empty set 21:48:13 ais523, is your longjmp stuff tested? 21:48:35 no, and indeed I think it doesn't work 21:48:35 it took long enough to get just regular function calls working 21:48:35 ais523, oh? I have no clue about how it should work really 21:48:40 AnMaster: same way it's implemented in any other language 21:48:47 ais523, "any other target" 21:48:50 you mean 21:48:50 but 21:48:51 well 21:48:58 except that in gcc-bf, you also have to clear the frame pointer stack 21:49:00 I have no clue how it usually work 21:49:07 ais523, wait what? 21:49:09 which is something that AFAIK no processor has in hardware 21:49:13 normally it's implemented as a linked list instead 21:49:32 ais523, what would happen with -fomit-frame-pointer in gcc-bf? 21:49:39 AnMaster: I don't think you can actually do that 21:49:47 OTOH, the frame pointer doesn't take up a register 21:49:48 ais523, why do you need the frame pointer? 21:50:05 so you can return from functions when you use alloca or VLAs 21:50:21 ais523, hm? how does "normal" targets handle that? 21:50:32 by adding a frame pointer for functions that use them, IIRC 21:50:44 omit-frame-pointer doesn't necessarily omit it everywhere 21:50:46 only when it's safe 21:50:49 why not do that? 21:51:30 because, there is a hardware frame pointer stack 21:51:33 which is a lot lot more efficient than storing the pointer as an intege 21:51:35 *integer 21:51:42 dereferencing a numeric pointer is slow slow slow in BF 21:51:52 just doing [<] until you find a 0 is much faster 21:51:53 XD 21:52:28 also, it would reduce the computational class 21:52:33 -abi 21:52:33 Output the ABI produced by the link as well as the final brainfuck 21:52:33 code. 21:52:33 -asm 21:52:33 Output the low-level ABI that shows what the ABI was transformed to 21:52:34 just before final ABI output. 21:52:36 hm 21:52:38 gcc-bf has no problems allowing you to go over the top of pointer-accessible memory 21:52:47 you can't actually overflow the stack 21:53:02 just, you mustn't ask for or dereference a pointer to stack elements above the top of memory 21:53:22 ais523, what happens to the frame pointer in callees? like a VLA-allocating function calling one using alloca? 21:53:33 it stays on the frame pointer stack, obviously 21:53:44 oh, on other processors, it gets saved in a register somewhere, I think 21:53:44 oh you said register I thought? 21:53:55 well, the registers get mapped to memory when you call a function anyway 21:54:08 ais523, like uh sparc? 21:54:14 no, I mean manually 21:54:17 oh 21:54:22 if you need to preserve the content of a register across a function call 21:54:32 be it the frame pointer or anything else 21:54:37 then you copy it to memory 21:54:39 ais523, aren't usually half of them caller saved and half callee-saved? 21:54:40 or such 21:54:40 standard compiler design 21:54:45 AnMaster: actually, correct in this case too 21:54:56 ais523, how many registers? 21:55:00 64 general-purpose 21:55:05 32 caller-saved, 32 callee-saved 21:55:14 also, many special-purpose ones 21:55:16 ais523, not more? 21:55:19 no 21:55:40 ais523, why not? if memory is slow and registers less so you would want more no? 21:56:05 partly to prevent register scheduling taking forever 21:56:27 ais523, oh? but what about current arches with lots of registers? 21:56:38 64 is lots 21:56:40 ais523, and llvm internally uses 1024 virtual registers 21:56:46 I could add more, I suppose 21:56:58 ais523, would have to check if it would help or not 21:57:15 ais523, what special purpose registers are there? 21:57:31 there's a nice list in bf-ld somewhere, let me find it 21:57:52 look at argloc 21:58:18 ais523, hm a lot of regexes? 21:58:23 regexpes* 21:58:25 * 21:58:41 ais523, what are their functions? 21:59:06 a scratch register, two carry registers, two maintained at 0, three temp registers 21:59:06 also three pointers (mark, stack, frame) 21:59:06 two maintained at 0? 21:59:17 AnMaster: for leaving loops, etc 21:59:23 ais523, why two? 21:59:23 it's two a specific distance apart 21:59:25 ah 21:59:28 so that you can become sure where the pointer is 21:59:33 when you weren't sure where it was before 21:59:38 it's the easiest way to do conditionals 21:59:56 *four temp registers 22:00:10 ais523, you went for softfloat? 22:00:15 yes 22:00:20 ais523, why? 22:00:21 wait, why are you even asking that question? 22:00:37 AnMaster: if it is not utterly obvious why you'd use softfloat in a brainfuck-based simulated processor 22:00:41 then what is wrong with you 22:00:48 ais523, softfloat would be even slower wouldn't it than one that is optimised bf one, right? 22:01:16 ais523, I mean, it would need to split across registers 22:01:23 and what if they aren't next to each other? 22:01:30 even if they were, would it help much? 22:01:50 floating's going to be soft anyway 22:01:56 and if you do write a good hard float library for BF 22:01:57 well yes 22:02:02 XD 22:02:03 publish it, it'd be useful even outside gcc-bf 22:02:23 ais523, does a bf library even make sense 22:02:23 outside the context of gcc-bf 22:02:28 err, yes? 22:02:32 oh? 22:02:35 well 22:02:40 you could use it #define-style 22:02:42 I guess as a set of functions listed on a page 22:02:50 or possibly do cleverer things, depending on what you were doing 22:03:12 ais523, did you consider compiling to pebble first? 22:03:33 no, there wouldn't be much of a point 22:03:43 hm 22:03:58 ((test x$1 = xrc || test x$1 = xcr || test x$1 = xcru) && shift && tar czvf $* ) || (test x$1 = xx && shift && tar xzvf $* ) || (echo Usage: bf-ar cr archive.a file.o [file.o [...]]) 22:04:00 bf-ar 22:04:01 is nice 22:04:04 but what the hell? 22:04:20 void _exit (int rv) { (void) rv; goto *(void*)0; } 22:04:35 ais523, uh 22:04:41 possibly my favourite C function I've ever written 22:04:48 :-D 22:04:50 that would go to start of program no? 22:04:54 not in gcc-bf 22:04:57 which starts at origin 1 22:04:58 in gcc-bf 22:05:00 ais523, oh hah 22:05:26 or possibly some other value, determined by the linker 22:05:26 ais523, so lowest page is mapped? 22:05:26 or wait 22:05:26 "page" 22:05:26 does not make sense 22:05:42 function pointers are just tags in gcc-bf 22:05:47 they don't point to actual memory locations 22:05:53 they're just used to identify which function you mea 22:05:53 ais523, same or separate code and data pointers? 22:05:54 *mean 22:05:57 ah separate 22:06:05 code and data pointers are in separate ranges of values 22:06:13 in fact, code, stack, and heap are 22:06:16 ais523, limits? 22:06:26 they're distinguished by the first byte, which is 0x0, 0x1, or 0x2 22:06:33 well, top byte 22:06:37 ais523, shouldn't you provide a limits.h? 22:06:39 the less significant bytes are the value 22:06:44 also, limits.h is in newlib, I think 22:07:07 ais523, well it is target-specific 22:07:13 to some extent 22:07:27 bf-old.c bf-old.h bf-old.md bf-protos.h bf.c bf.h bf.md notesfromesolang.txt t-bf 22:07:28 hm 22:07:31 what's those 22:07:41 um, you don't want to know 22:07:49 well, bf-old you can ignore 22:07:49 ais523, they are in config-bf 22:07:52 that's before I created the darcs repo 22:07:56 I would *need* to know 22:07:59 t-bf is to do with the build system 22:08:07 and is a timestamp file (no content but the modification time) 22:08:08 # Generate floating point emulation libraries. 22:08:09 in t-bf 22:08:11 hm 22:08:20 wait, what? 22:08:24 ais523, yes 22:08:30 FPBIT = fp-bit.c 22:08:30 DPBIT = dp-bit.c 22:08:31 oh, no it isn't 22:08:34 t-bf is a makefile fragment 22:08:40 that gets dynamically injected into gcc's makefiles 22:08:42 there's one for every arch 22:08:45 ais523, where are those .c files 22:08:47 (sorry, I muddled it with something else) 22:08:52 and somewhere in gcc 22:09:00 those are the standard single and double precision float emu libraries 22:09:47 ais523, do you have any sort of todo list or roadmap or such? 22:10:00 look for unimplemented bits in bf-ld 22:10:03 hm 22:10:09 the gcc side is finished, barring bugfixes 22:10:18 and the bf-protos.h bf.c bf.h bf.md files? 22:10:21 anyway: bf.h is a header file that describes the application binary interface 22:10:25 bf.c is code generation 22:10:36 and bf.md is hard to describe in a single line 22:10:47 basically, it's code in a gcc-specific DSL 22:10:57 which generates RTL, and compiles it to asm 22:11:06 the RTL is modified by other bits of gcc after it's been generated, though 22:11:18 bf-protos.h I can't remember, I'd have to look at it 22:11:19 /* TODO: hook TARGET_ADDRESS_COST to give the optmizer some clues about how 22:11:19 expensive various operations are. Possibly TARGET_RTX_COSTS too. */ 22:11:21 afail 22:11:23 afaik* 22:11:29 that depends on interpreter/compiler 22:11:31 for bf 22:11:35 oh, it's just function prototypes 22:11:46 which have to be in a separate file for a gcc-build-system-related reason I can't remembe 22:11:48 *remember 22:12:08 AnMaster: well, on the ABI compiler, yes 22:12:15 ais523, ? 22:12:19 basically, it's telling it things like xor is slower than mov for setting things to 0 22:12:24 which it can't guess without being told 22:12:29 ais523, oh right 22:12:38 ais523, is [-] "mov"? 22:12:52 yes 22:12:57 well, mov.8 0 22:13:08 and you'd have to say where it was, too 22:13:09 ais523, one operand? 22:13:14 two operands 22:13:25 ais523, also what about mov reg->reg or mov mem->reg 22:13:26 or such 22:13:35 "mov.8 $0, %r4" is the actual syntax 22:13:41 instead of mov immediate->* 22:13:58 that isn't mov, as you can't do that in brainfuck 22:14:00 ais523, why the . thing 22:14:01 instead, you'd use tadd 22:14:04 AnMaster: bitwidths 22:14:17 ais523, unusual notation for it? 22:14:26 mov.8 $0, %r4 22:14:28 tadd2.8 (%mark), %r4, %scratch 22:14:29 tadd.8 %scratch, (%mark) 22:14:35 and it isn't an unprecedented notation 22:14:37 and it isn't an unprecedented notation 22:14:47 no need to repeat that 22:14:49 anyway, that above there is an addition from a register to memory 22:14:51 AnMaster: typo 22:14:54 right 22:14:59 wait, no 22:15:11 it's a move from memory to register 22:15:14 above that in what file? 22:15:19 first step: set $r4 to 0 22:15:24 AnMaster: no, what I just pasted 22:15:27 above in the conversation 22:15:39 second step: add (%mark) to %r4 and %scratch 22:15:40 ais523, does llvm use a similar .x thingy? 22:15:55 third step: add %scratch to (%mark) 22:16:00 AnMaster: I don't know 22:16:10 why is there a bf.h outside config-bf? 22:16:11 but gcc's pretty flexible in asm notations, I imagine llvm is too 22:16:16 different one 22:16:18 that's 22:16:20 for use by user programs 22:16:22 I think 22:16:44 also, note those are transfer-additions 22:16:49 which set their first argument to 0 22:17:12 that clear, transfer-add, transfer-add is the usual way to copy a value without destroying the original 22:17:42 -!- MigoMipo has quit ("When two people dream the same dream, it ceases to be an illusion. KVIrc 3.4.2 Shiny http://www.kvirc.net"). 22:17:45 (%mark) is special, btw 22:17:55 the mark is a pointer, that marks a memory location on the heap or stack 22:18:03 and you can use the place that pointer points to like a register 22:18:12 it's the only way you can access memory in general 22:18:29 ais523, how much memory does bfrle try to allocate 22:18:43 what do you mean by that? 22:18:53 klee: Executor.cpp:566: void klee::Executor::initializeGlobals(klee::ExecutionState&): Assertion `mo && "out of memory"' failed. 22:18:58 when I try to run it under klee 22:19:04 what's klee? 22:19:06 which handles cfunge file after dropping mmap 22:19:19 ais523, llvm tool that symbolically executes all possible paths in the program 22:19:19 oh, and it allocates just enough to hold the program 22:19:20 http://www.mikseri.net/artists/sortokausi.40541.php 22:19:22 really cool 22:19:22 oh lol 22:19:23 not here 22:19:28 sry :P 22:19:28 and the BF tape 22:19:28 ais523, still rather buggy 22:19:44 my guess is, it noticed that it was possible for it to allocate unlimited amounts of memory 22:19:48 which a BF interp can 22:19:51 ais523, not likely. 22:19:52 and as a result, tried 22:20:20 ais523, as I didn't even mark any variable as symbolic yet 22:20:31 you have to tell it what variables/what input is symbolic 22:20:37 so it tries that when finding bugs 22:20:56 like argc/argv usually 22:20:56 or sometimes a specific variable directly in source 22:21:20 without that it would just say "generated one test case, on one path" 22:21:25 oh: #define TAPELENGTH 100663378 22:21:31 that's what's happening 22:21:42 I set the length of the tape to the area of the tape that gcc-bf can use 22:21:46 ais523, that seems extremely long 22:21:52 how many mb is it? 22:22:02 around 100 22:22:07 heh 22:22:30 96.000078201 MB, it seems 22:22:39 gcc-bf can access 16 MB of tape and 16 MB of stack 22:22:46 ais523, right 22:22:51 16+16 < 96 22:23:00 there are four bytes of bookkeeping for every byte of heap/stack 22:23:06 I meant heap and stack 22:23:18 every six bytes contains one heap, one stack, four bookkeeping 22:23:19 that's 128 MB then 22:23:29 so 16*6 = 96MB 22:23:33 oh wait 22:23:34 and the tiny extra amount is registers 22:23:42 (16+16)*4? 22:23:43 no? 22:23:48 no 22:23:59 as in, one byte of heap and stack need four bytes of bookkeeping between them 22:24:07 ais523,oh 22:24:12 they have one dedicated byte of bookkeeping each, and two between them, to be precise 22:24:15 but that's an implementation detail 22:24:16 (16+16)*2 ? 22:24:33 16*6 22:24:36 right 22:24:42 ais523, how comes some are shared? 22:25:29 well I need to sleep 22:25:46 every six bytes contains: one unused value (to keep locations a multiple of 6), mark pointer for the stack, stack data, stack/heap pointer, mark pointer for the heap, heap data 22:25:59 where pointers are set to 1 if the pointer doesn't point there, or 0 otherwise 22:26:11 *stack/frame poitner 22:26:13 *pointer 22:26:17 ais523, what is the padding used by gcc-bf? none? 22:26:18 there can be multiple frame pointers 22:26:22 correct, no padding 22:26:27 it would be a waste of space 22:26:31 right 22:26:54 except for bitfields up to a multiple of 8 bits, but you don't use those if you want the program to run at all efficiently 22:27:04 ais523, what are the sizes of char/short/int/long/long long/float/double/long double ? 22:27:26 in octets, 1/2/4/4/8/4/8/8 22:27:40 hm 22:27:49 right 22:27:49 double and long double are the same, as are int and long 22:28:03 because everyone seems to assume 32-bit int nowadays 22:28:16 ais523, wouldn't bitfields be just turned into bitwise and/or? 22:28:17 and I want as many existing programs as possible to compile unmodified 22:28:19 AnMaster: yes 22:28:21 and shifts 22:28:22 oh wait, those are slow 22:28:32 I rather like my implementation of bitwise and and or 22:28:42 it involves repeated multiplication by 128, IIRC 22:29:29 ais523, idea for next project: gcc-intercal 22:29:41 for compiling C to C-INTERCAL 22:29:47 AnMaster: I'm likely to continue working on gcc-bf until at least such time as it can port C-INTERCAL to BF 22:30:10 ais523, I doubt c-intercal will fit 22:30:16 in the memory 22:30:18 in 96MB? 22:30:19 that's quite a lot 22:30:28 bear in mind that I grew up with floppy disk 22:30:30 *disks 22:30:32 ais523, in 96 *inefficiently used* MB 22:30:44 well, 16 MB stack, 16 MB heap, from the C program's point of view 22:30:51 indeed 22:30:52 *16 MiB 22:31:03 ais523, and cfunge would burst that for heap at least 22:31:06 not for stac 22:31:09 stack* 22:31:18 I doubt if cfunge ever uses more than 1 MB stack 22:31:21 but it's trying to store a giant hash table 22:31:30 ais523, giant static array too 22:31:33 yes 22:31:40 if you got rid of the static array, or made it relatively small 22:31:44 ais523, but what sort of program uses 16MB *stack*? 22:31:52 anything that recurses a lot 22:31:57 or that declares large arrays on the stack 22:31:59 "meh" 22:32:07 or especially, botbh 22:32:09 *both 22:32:30 ais523, will check cfunge stack and heap usage with massif tomorrow 22:32:53 are you going to all this trouble just to port cfunge to brainfuck? 22:32:57 no way 22:33:04 good 22:33:08 I thought you'd gone mad for a moment 22:33:11 well, madder than normal 22:33:19 ais523, there is no way I will try to port cfunge to anything non-POSIX. 22:33:28 it's just way way too much work 22:33:30 gcc-bf is meant to be POSIX, eventually 22:33:39 it has quite a bit of POSIX already, via newlib 22:33:42 e.g. signals 22:33:43 ais523, that day it might run cfunge *shrug* 22:33:53 it's single-process, though 22:33:57 if you call fork, you get EAGAIN 22:34:09 ais523, and what about mmap()? 22:34:19 that would actually be surprisingly easy 22:34:22 given that the files are in memory anyway 22:34:36 it would just be a wrapper around realloc 22:34:42 ais523, uh what 22:34:53 ais523, how would a read only mmap be a wrapper around realloc? 22:35:07 read only means undefined behaviour if you try to write, doesn't it? 22:35:11 ais523, what about aio? I considered adding that to cfunge, just for the hell of it 22:35:15 ais523, well yes. 22:35:19 or rather 22:35:27 aio wouldn't work, for the same reason forking doesn't work 22:35:28 PROT_READ Pages may be read. 22:35:43 ais523, poll()? 22:35:46 AnMaster: I don't think anything explicitly bans allowing people to write if they just requested read access 22:35:53 AnMaster: I can't remember what that one does 22:36:01 ais523, what about PROT_NONE? 22:36:13 ais523, anyway you need to have a page size for mmap 22:36:15 oh, poll would be rather degenerate 22:36:17 what is your page size? 22:36:21 1, probably 22:36:26 *shudder* 22:36:28 no reason to make it anything else 22:36:43 ais523, I'm sure that will break something 22:36:47 given that you can map to more than one page, IIRC 22:37:02 page break has to be 1, I think 22:37:10 given that sbrk works on 1-byte granularity 22:37:13 heh 22:37:27 (the implementation of sbrk is also rather fun, but nowhere near as fun as that of exit) 22:37:30 The two constants _SC_PAGESIZE and _SC_PAGE_SIZE may be defined to have the same value. 22:37:31 huh 22:37:37 go team POSIX 22:37:40 that is all I can say 22:38:00 I like the "may be" 22:38:14 ais523, yeah exactly the bit I referred to 22:38:24 anyway, here's probably the confusingest bit from the implementation to sbrk: static void* brk = &__brkpos; 22:38:31 that only works with gcc 22:38:33 actually make that "go austin group" 22:38:34 iirc 22:38:37 that is "team posix" 22:38:43 given that brkpos is defined as extern void __brkpos; 22:38:48 OTOH, it only needs to work with gcc 22:39:34 XD 22:39:43 ais523, what about boehm-gc 22:39:46 it needs to be ported 22:40:16 if nothing else to allow gcc bootstrap 22:40:17 :P 22:41:06 its entire method of operation wouldn't work 22:41:16 given that pointers and ordinary integers look very similar in gcc-bf 22:41:30 although, actually 22:41:41 given that stack and heap memory always starts 0x01 or 0x02 22:41:47 -!- BeholdMyGlory has quit (Read error: 104 (Connection reset by peer)). 22:42:01 the chance that an integer and a pointer clashed would be low enough that it probably would manage to actually collect something 22:42:33 ais523, libgcc 22:42:37 how do you handle that 22:42:41 isn't it partly asm? 22:42:44 no 22:42:47 oh? 22:42:47 it's written entirely in C 22:42:54 ais523, for all arches? 22:43:05 yes, except you can write bits of asm and they take precedence over it 22:43:10 ah 22:43:22 and not all arches has everything? 22:43:26 I mean 22:43:36 you wouldn't need 64-bit division stuff there on x86-64 22:43:49 yep 22:43:55 this is why its makefile is generated by script, I think 22:43:59 and therefore has to be patched by script 22:44:20 one amusing fact: if you don't implement enough primitives to be able to implement all operations 22:44:24 e.g. no multiplication at all 22:44:33 then libgcc goes into an infinite recursive loop 22:44:37 as it's compiled into calls to itself 22:45:06 fun 22:45:33 colordiff -Naur <(nm -D /lib32/libgcc_s.so.1 | grep ' T ' | cut -d' ' -f3- | sort -n) <(nm -D /lib64/libgcc_s.so.1 | grep ' T ' | cut -d' ' -f3- | sort -n) 22:45:35 interesting 22:46:07 ais523, hah 22:46:29 ais523, shouldn't it do multiplication by addition? 22:46:41 for 8-bit, yes 22:46:48 beyond 8-bit, that's hilariously inefficient 22:47:01 ais523, so it could do it in terms of the 8-bit 22:47:04 I mean, in theory 22:47:06 yes 22:47:11 in practice, it seems to screw up 22:47:24 ais523, " beyond 8-bit, that's hilariously inefficient" <-- hah isn't that what gcc-bf does? 22:47:28 oh wait 22:47:28 or at least, gcc's incapable of comprehending that a system's only multiplier can only handle 8-bit numbers 22:47:33 well yes 22:47:35 and no 22:47:35 AnMaster: gcc-bf is surprisingly efficient, on an RLE system 22:47:37 it's meant to be 22:48:48 ais523, what about division 22:48:59 I know of CPUs lacking integer division 22:49:07 PIC12F* for example 22:49:07 they may well be special-cased 22:49:19 I doubt you would use C for it 22:49:22 AnMaster: probably not lacking a bit shift tho, right? 22:49:25 are there any CPUs that /gcc targets/ that lack integer division? 22:49:25 what with the limited memory 22:49:31 calamari_, I forgot. it was years ago 22:49:34 I coded for it 22:49:50 it is an "embedded microcontroller" kind of thing 22:49:54 AnMaster: you can use that shift to do division.. 22:49:59 calamari_, well yes 22:50:17 calamari_, think it had 12 bit address space or something 22:50:58 calamari_, http://ww1.microchip.com/downloads/en/DeviceDoc/41190E.pdf 22:51:00 datasheet 22:51:31 I finally started work on the bf interp for my wristwatch 22:51:40 calamari_, XD 22:51:48 joking right? 22:51:53 no 22:51:56 WHAT? 22:52:18 Timex Datalink USB 22:52:19 uh? 22:53:05 AnMaster: http://en.wikipedia.org/wiki/Timex_Datalink#Timex_Datalink_USB 22:54:26 it should be able to fit about 200 bf instructions in ram 22:54:38 (using a simple 4 bit encoding) 22:55:12 I considered 3 bit, but the overhead isn't worth it 22:55:36 and it only buys like 20 more instructions 22:58:18 it's a fun toy.. I once destabilized my watch running a program in my debugging app, and it took about 30 minutes before it finally reset, fortunately it did not beep 22:58:52 how long would the tape be? 22:59:25 -!- FireFly|xchat has joined. 22:59:43 ais523: whatever is left from the program memory plus 24 bytes 23:00:07 you're not going to be able to run very big BF programs, then 23:00:32 no, but that's okay because I'm not going to want to enter big programs using the crown of a wristwatch 23:00:52 -!- FireFly has quit (Read error: 110 (Connection timed out)). 23:00:55 -!- FireFly|xchat has changed nick to FireFly. 23:01:20 and since it doesn't use ascii, programs would have to custom written for the watch 23:02:08 well that and only being able to display 14 characters on one screen 23:02:43 -!- ais523 has quit (Remote closed the connection). 23:03:22 -!- calamari_ has changed nick to calamari. 23:06:10 -!- FireFly has quit ("Leaving"). 23:33:30 -!- augur has quit (Read error: 110 (Connection timed out)).