Skip to content

Instantly share code, notes, and snippets.

@jido
jido / decimalsense2.c
Last active June 30, 2018 08:36
Decimal number format with binary significand that makes some sense
/*
Decimal 64 bit numbers that make sense
Format:
=======
seeeeeee eepmmmmm mmmmmmmm mmmmmmmm mmmmmmmm mmmmmmmm mmmmmmmm
s = sign bit
e = 10-bit exponent (with p)
p = lowest bit of exponent or highest bit of mantissa (subnormal numbers)
@jido
jido / description.txt
Created June 18, 2018 17:08
Binary decimal format
Bit 63 = sign
Subnormal
0.0-9.999 999 999 999 999E-511
Stored as uint64
Normal fp
Bit 62-53 = exponent
Bit 52-0 = mantissa
Mantissa range 0-8 999 999 999 999 999
@jido
jido / decimalsense.c
Last active June 17, 2018 22:12
Decimal number format that makes some sense
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char * numberAsString(uint64_t num) {
static char result[] = "+1.234567890123456e-123";
char sign = (num & 0x8000000000000000L) ? '-' : '+';
uint16_t scale = (num >> 50) & 0x1fff;
if (scale << 2 == 0x7ff0)
$ git push
fatal: You are not currently on a branch.
To push the history leading to the current (detached HEAD)
state now, use
git push origin HEAD:<name-of-remote-branch>
@jido
jido / Mistigri.java
Last active June 29, 2016 23:10
Why is my Matcher not working?
private static final Pattern parser = Pattern.compile("/(\\S+)/");
private String parseAction(String tag) {
Matcher them = parser.matcher(tag);
if (!them.find()) return "YOLO";
return them.group(1);
}
Result:
@jido
jido / mafia2.mt
Last active June 19, 2016 19:52
Hung program
# An implementation of the Mafia party game state machine.
import "lib/enum" =~ [=> makeEnum]
exports (makeMafia, DAY, NIGHT)
def [MafiaState :DeepFrozen,
DAY :DeepFrozen,
NIGHT :DeepFrozen] := makeEnum(["day", "night"])
@jido
jido / ObjectCopy.js
Last active May 7, 2016 08:18
Why does this give a TypeError: cannot convert undefined or null to object?
"use strict";
function copy(proto, changes) {
if (changes === undefined) return Object.create(proto);
var props = Object.keys(changes).map(function(attr) {
var single = {};
single[attr] = {value: changes[attr], writable: false, enumerable: true};
return single;
});
return Object.create(proto, Object.assign.apply(props));
> console.log(Promise.toString())
function Promise() { [native code] }
undefined
> function Promise(execute) {
... this.then = execute;
... this.catch = function catch(handler) {
..... return this;
..... };
... }
... ;
@jido
jido / gist:c22947e171c7e76314d865686583c5a5
Created April 26, 2016 00:15
var Promise messes up the test
var mistigri = (function(){
/*
if (Promise === undefined)
{
console.log("Making a fake Promise");
var Promise = function Promise(execute) {
this.then = execute; // Mistigri always returns, even if it ran into problems
this.catch = function(onrej) {
return this;
@jido
jido / gist:1aa424dceb434da4e38973d0a2b7482c
Created April 23, 2016 16:07
The function that uses the callback
var handleAllIncludes = function handleAllIncludes(includes, config, rendered, size, finish) {
if (includes.work.length === 0)
{
if (finish !== undefined) finish(rendered);
return;
}
if (finish === undefined)
{
console.warn("Mistigri needs a callback - ignoring all includes");
return;