Skip to content

Instantly share code, notes, and snippets.

View dockimbel's full-sized avatar

Nenad Rakocevic dockimbel

View GitHub Profile
Red [
Needs: View
]
nb: 500
list: []
make-dir folder: %images-test/
loop nb [
append list img: make image! as-pair 100 + random 300 100 + random 300
@dockimbel
dockimbel / almost-equal32.c
Created February 16, 2025 21:15
C function for comparing float values that are close enough (<= 10 ULP)
// generated from https://chatgpt.com/canvas/shared/67afab561d4c8191bbb497e5cef5147b
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <math.h>
#define ULP_TOLERANCE 10
int float_almost_equal(float a, float b) {
root: 5185/7876, runs: 133, mem: 25173016 => 20056768, mark: 6.3ms, sweep: 4.0ms
root: 5185/7876, runs: 134, mem: 25147196 => 20068176, mark: 6.0ms, sweep: 4.0ms
root: 5185/7876, runs: 135, mem: 25160776 => 19639592, mark: 5.4ms, sweep: 3.5ms
root: 5185/7876, runs: 136, mem: 25169800
*** Runtime Error 1: access violation
*** in file: /C/dev/Red/runtime/hashtable.reds
*** at line: 578
***
*** --Frame-- --Code-- --Call--
*** 0105A990h 0042FE5Dh red/_hashtable/mark 274556F0h
root: 5185/7876, runs: 161, mem: 31529432 => 10521672, mark: 3.0ms, sweep: 18.0ms
root: 5185/7876, runs: 162, mem: 12969668 => 11115736, mark: 5.7ms, sweep: 2.0ms
root: 5185/7876, runs: 163, mem: 15180164 => 11257156, mark: 4.0ms, sweep: 3.0ms
root: 5185/7876, runs: 164, mem: 53216424 => 12400444, mark: 6.7ms, sweep: 30.8ms
root: 5185/7876, runs: 165, mem: 16780072
*** Runtime Error 1: access violation
*** in file: /C/dev/Red/runtime/collector.reds
*** at line: 324
***
*** --Frame-- --Code-- --Call--
@dockimbel
dockimbel / gist:8a5bcf3acb470d0dd9f4dd0a07da7817
Created September 8, 2022 14:29
Simple usage example of SCROLLER widget
Red [Needs: View]
scroll-max: 100
start-pos: 0
view [
size 200x200
backdrop cyan
p: panel 100x100 [button "ok"]
do [start-pos: p/offset/y] ;-- saves initial position
@dockimbel
dockimbel / gist:cb5607b0696558d44aa4a3537e930095
Created February 8, 2022 14:13
Global space function stats per type
Red []
count: function [][
list: [native! 0 action! 0 op! 0 function! 0 routine! 0]
foreach w words-of system/words [
if pos: find list type?/word get/any w [pos/2: pos/2 + 1]
]
list
]
@dockimbel
dockimbel / gist:3ebf48b58acdb3781c6e8f7adefe2959
Created December 21, 2021 19:35
Tracing handler for extracting top expressions
Red []
detect: function [
event [word!]
code [any-block! none!]
offset [integer!]
value [any-type!]
ref [any-type!]
frame [pair!]
][
* PROLOG: when entering a function.
* EPILOG: when exiting a function.
* ENTER: when a block is about to be evaluated.
* EXIT: when current evaluated block's end has been reached.
* OPEN: when a new function (any-function!) call is pushed on stack and a new stack frame is opened.
* RETURN: when a function call has returned and its stack frame has been closed.
* FETCH: a value is read from the input block to be evaluated.
* PUSH: a value has been pushed on the stack.
* SET: a set-word is set to a value.
@dockimbel
dockimbel / eval2.red
Created April 3, 2018 10:12
Test script for Red/View Android backend
Red [
Title: "Red Android bridge demo"
Author: "Nenad Rakocevic"
File: %eval2.red
Config: [type: 'dll libRed?: no libRedRT?: yes export-ABI: 'cdecl]
Tabs: 4
Needs: 'View
Rights: "Copyright (C) 2013-2017 Nenad Rakocevic. All rights reserved."
License: {
Distributed under the Boost Software License, Version 1.0.
@dockimbel
dockimbel / brainfuck.red
Created November 29, 2013 23:08
This is a complete (but not fully tested) implementation of a Brainfuck interpreter in Red language, only using the Parse dialect. The extra verbosity comes from the current lack of built-in reversed input parsing. Once reverse parsing will be implemented in the dialect, the `jump-back` rule should be simplified a lot. Note: this is not meant to…
Red [
Author: "Nenad Rakocevic"
Date: 29/11/2013
]
bf: function [prog [string!]][
size: 30000
cells: make string! size
append/dup cells null size