00:00:00 --- log: started forth/20.12.31 00:24:24 --- quit: _whitelogger (Remote host closed the connection) 00:27:20 --- join: _whitelogger joined #forth 00:57:24 --- quit: _whitelogger (Remote host closed the connection) 01:00:20 --- join: _whitelogger joined #forth 02:07:36 --- join: dave0 joined #forth 02:55:10 --- join: presiden joined #forth 03:14:22 Unsigned remainder... so what, UM/MOD ? 03:15:01 It does sound like AND is what they really needed though 04:06:24 --- quit: _whitelogger (Remote host closed the connection) 04:09:19 --- join: _whitelogger joined #forth 05:03:32 --- join: Gromboli joined #forth 06:00:48 --- join: john_cephalopoda joined #forth 06:00:50 Hi 06:02:45 --- join: yyyyyy joined #forth 06:17:06 --- quit: Lord_Nightmare (Quit: ZNC - http://znc.in) 06:18:59 --- quit: dave0 (Quit: dave's not here) 06:21:33 --- join: yyyyyy` joined #forth 06:23:23 --- quit: yyyyyy (Ping timeout: 264 seconds) 07:19:27 --- quit: iyzsong (Quit: ZNC 1.7.5 - https://znc.in) 07:20:43 --- join: iyzsong joined #forth 07:54:36 john_cephalopoda: hi 08:54:42 --- join: badcfe joined #forth 08:56:35 does ans forth specify s>d ordering? 08:58:44 badcfe, it would be the same order for all the other double words. might be easier to answer that question 09:15:31 --- join: WickedShell joined #forth 09:23:14 is the order of a double word defined by and forth? 09:26:13 i wrote a forth program that produces a pnm image with the feigenbaum fractal. after an evening of browsing around some of the pages at forth.com -- it's quit nice, but i think i have a bad assumption on f>s down-rounding and on double words having the most significant on top 09:29:42 badcfe: https://forth-standard.org/standard/double might be helpful. 09:30:30 look, i didnt even need to use the return stack, only using data and FP, as i wrote it like the following 09:30:33 1080 constant t 1920 constant n : linear ( n i FP a b -- FP i*{b-a}/n+a ) fover f- s>f f* s>f f/ f+ ; create rndn 1 , : rnd ( -- FP {0..1} ) rndn dup @ 1103515245 * 12345 + dup rot ! 65536 / 0x7fff and 0 d>f 32768.0e f/ ; : logistic ( FP y m -- FP y*m*{1-y} ) fover 1.0e fswap f- f* f* ; : feig_row ( n addr FP m -- ) rnd begin fdup over s>f dup f* f>s cells + 1 over +! @ 65535 < while fover logistic repeat 09:30:39 2drop fdrop fdrop ; .( P5) cr n . 32 emit t . cr 255 . cr variable v n 1- cells allot : main t 0 do v n cells erase t i 2.4e 4.0e linear n v feig_row n 0 do v i cells + @ 8 rshift emit loop loop ; main 09:32:33 my pseudo random generator was stolen from the man 3 rand on my gnu/linux, and i'm using gforth here. would be cool to try and compile this tho 09:33:20 badcfe, I wouldnt worry about making your programs standard. forth isnt like C where you want it to work on other systems. each program is it's own thing and there is no UB to worry about 09:33:44 A bit hard to read all in one line. I suggest using a pastebin like https://bpa.st/ for pasting code. 09:37:21 MrMobius: but maybe the forth implementation i use specifies that there is UB. how does forth normally define behavior on an uninitialized cell, non-aligned address with @, integer overflow, zero div, and such anyway? 09:39:56 you would need a standard in order to define behavior 09:40:12 whereas most forths just do whatever they want 09:40:20 which you cant really say for many C compilers for example 09:41:07 but maybe the documentation for a particular forth would address those things you mentioned 09:41:10 so, does ans forth leave things undefined for implementers of ans forth to vary on? 09:41:42 MrMobius: ANS is literally "American National Standard". 09:41:48 its weird to me that nobody seems to care to be ans nice 09:42:35 MrMobius: Sure, there are plenty of Forths out there that are not ANS-compliant, but badcfe explicitly uses an ANS forth, which offers properties defined in the ANS standard. 09:42:46 john_cephalopoda, right but the point is that you cant assume that basically every forth you encounter will be ANS compliant which is a reasonable thing to assume coming from a C background 09:43:56 Yeah, that's true. 09:43:57 in that case maybe ANS does define UB. youd have to check 09:43:57 Bbiab. 09:44:12 --- quit: john_cephalopoda (Quit: Leaving) 09:44:32 if the forth community saw no value in a standard, as there is more pragmatic focus on tweaking local forths for specific constraints or goals, then who requested ans? 09:44:51 the forth community isnt monolithic 09:45:09 for c, as example, there was immediate practical value on portability 09:45:11 im sure some people saw value in it 09:45:20 right 09:45:37 forth is closer to assembly in that way 09:45:45 than to C 09:45:52 in common-lisp there was one big lisp user who requested it, i think 09:54:11 --- quit: Gromboli (Quit: Leaving) 09:54:23 i think i should replace above "and 0" with "and s>d" to be more portable 09:56:39 do you have some tips on how to write \ comments and ( comments ? 10:10:39 MrMobius: i found out that there is UD in forth, namely UD. hehe 10:12:17 MrMobius: i am sorry. this seems to be a word defined in forth.com example ; ( 10:13:09 puns aside, there is UD in forth 10:13:17 it's pretty much all of it 10:14:54 cmtptr: i already learnt that FP may use the data stack, as defined by ans, so maybe this is an example that illustrates that ans did a bad job, and that this is to blame implementors to disregard ans 10:15:49 s/this is to blame/this is a reason for/ 10:17:06 a signficant portion of forthers are in the camp that doesn't respect ans 10:17:46 and i think those would tell you your forth can do whatever it wants, hence it's all undefined behavior 10:21:13 ( comments are usually for stack comments showing what a word does 10:21:50 badcfe, what im getting at is there is not much point making it "more portable" 10:22:03 even if that's something important in C 10:22:31 kind of like writing assembly in a different way to make it more portable 10:23:27 --- quit: lispmacs[work] (Remote host closed the connection) 10:29:11 --- join: lispmacs[work] joined #forth 10:55:30 --- quit: actuallybatman (Ping timeout: 272 seconds) 11:08:16 --- join: actuallybatman joined #forth 11:14:01 --- join: inode joined #forth 11:28:50 --- quit: gravicappa (Ping timeout: 260 seconds) 11:28:52 MrMobius: but there are other implementations of gforth, and it's nice if they can run my thingy too 11:29:28 --- join: boru` joined #forth 11:29:31 --- quit: boru (Disconnected by services) 11:29:33 --- nick: boru` -> boru 11:29:55 MrMobius: all the world's not a vax 11:36:20 badcfe, if thats what makes you happy :) 11:40:46 MrMobius: yeah. but maybe i could try to write a little forth, which should be feasable for the small subset of forth that i use for this. 11:41:48 badcfe, a lot of people go that route 11:49:04 --- join: gravicappa joined #forth 12:30:42 --- quit: X-Scale (Ping timeout: 265 seconds) 12:31:01 --- join: X-Scale` joined #forth 12:31:22 --- nick: X-Scale` -> X-Scale 12:49:53 --- join: Gromboli joined #forth 13:02:27 --- quit: WickedShell (Remote host closed the connection) 13:23:23 --- quit: gravicappa (Ping timeout: 264 seconds) 13:48:37 --- quit: Gromboli (Quit: Leaving) 13:49:05 --- join: Gromboli joined #forth 14:06:22 --- join: Lord_Nightmare joined #forth 14:31:20 --- join: dave0 joined #forth 15:56:09 --- join: john_cephalopoda joined #forth 15:56:15 Happy New Year 16:47:24 make me! 16:56:37 hey guys 17:07:27 Hey tabemann 17:12:23 --- quit: john_cephalopoda (Quit: Leaving) 17:41:24 Found this interesting https://www.youtube.com/watch?v=BpgmG--UD-Y 17:45:24 badcfe: The standard has two kinds of words, words that are generally expected to appear on all conventional forths, and words that try to wrap behaviour that's less consistent but still generally desired 17:45:40 If you read the rationale you will get some idea usually of which the word is 17:46:17 So why a standard might be useful to you will obviously impact whether you care about which each kind of word is 17:52:07 I don't think anyone should dismiss the standard outright, I think there's a lot of usefulness in there. At the same time I wouldn't approve of any zealotry over the standard, but I don't tend to see that. 17:54:23 As an implementor, if you create a forth that is even superficially compatible with another forth, then it means you can test your code easier on different environments 17:55:05 One way to do that is to stick close to the standard and use a mostly standard-compliant forth 17:55:37 Not always practical, other ways to do this, but you get the idea. It depends on your problem 18:26:33 * tabemann_ is trying to figure how to configure his brand new STM32F746 to go up to 216 MHz 18:49:39 --- join: boru` joined #forth 18:49:41 --- quit: boru (Disconnected by services) 18:49:44 --- nick: boru` -> boru 18:57:08 --- quit: lispmacs[work] (Quit: rcirc on GNU Emacs 27.1) 19:24:33 --- quit: proteus-guy (Remote host closed the connection) 20:19:10 --- join: Gromboli6 joined #forth 20:20:16 --- quit: Gromboli (Ping timeout: 260 seconds) 20:20:16 --- nick: Gromboli6 -> Gromboli 20:20:20 --- quit: sts-q (Ping timeout: 256 seconds) 20:25:14 --- join: sts-q joined #forth 20:59:20 --- join: Monev joined #forth 21:00:35 --- quit: Kumool (Ping timeout: 258 seconds) 21:35:11 --- quit: proteusguy (Ping timeout: 246 seconds) 21:48:28 --- join: proteusguy joined #forth 21:48:28 --- mode: ChanServ set +v proteusguy 21:50:28 --- quit: badcfe (Quit: leaving) 22:15:03 --- join: gravicappa joined #forth 23:59:59 --- log: ended forth/20.12.31