Skip to content

Instantly share code, notes, and snippets.

View Leowbattle's full-sized avatar

Leo Battle Leowbattle

  • England
View GitHub Profile
@Leowbattle
Leowbattle / cholesky.c
Created January 19, 2023 22:39
cholesky.c
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
void cholesky(float* m, int n) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < i; j++) {
float sum = 0;
for (int k = 0; k < j; k++) {
sum += m[i * n + k] * m[j * n + k];
@Leowbattle
Leowbattle / my_printf.c
Created January 10, 2023 23:13
Basic printf implementation supporting strings and ints.
#include <stdio.h>
#include <stdarg.h>
void fmt_int(char* buf, int n) {
int i = 0;
if (n < 0) {
*buf++ = '-';
n = -n;
}
@Leowbattle
Leowbattle / subdiv.c
Created January 6, 2023 17:09
subdiv.c
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <string.h>
#include <assert.h>
#include <signal.h>
#include <execinfo.h>
void panic(const char* format, ...) {
@Leowbattle
Leowbattle / isosphere.c
Created January 5, 2023 22:59
Code to generate an icosphere in C
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
void* xmalloc(size_t size) {
void* ptr = malloc(size);
if (ptr == NULL) {
fprintf(stderr, "Failed to allocate %ld bytes\n", size);
exit(EXIT_FAILURE);
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#define SDL_MAIN_HANDLED
#include <SDL2/SDL.h>
void* xmalloc(size_t size) {
void* ptr = malloc(size);
if (ptr == NULL) {
@Leowbattle
Leowbattle / Main.java
Created June 17, 2022 09:36
Some code for adding rational points on elliptic curves.
public class Main {
public static void main(String[] args) throws Exception {
var p = new RationalEllipticCurve.Point(new Rational(1), new Rational(2));
var a = new Rational(-7);
var b = new Rational(10);
var curve = new RationalEllipticCurve(a, b);
var r = curve.multiply(p, -10);
System.out.println(r);
# Does the decimal expansion of 1/q terminate?
def terminates(q):
while q % 2 == 0:
q //= 2
while q % 5 == 0:
q //= 5
return q == 1
# If the decimal expansion of 1/q terminates return 0, else return the period of the repeating digits.
def period(q):
@Leowbattle
Leowbattle / pow2.cpp
Created September 18, 2021 22:47
Print large powers of 2
#include <iostream>
#include <vector>
#include <algorithm>
#include <cstdint>
using namespace std;
using Digit = uint8_t;
using BigInt = vector<Digit>;
import math
SQRT_5 = math.sqrt(5)
PHI1 = (0.5, 0.5)
PHI2 = (0.5, -0.5)
def s5n_sub(s5n_1, s5n_2):
(a, b) = s5n_1
(c, d) = s5n_2
return (a - c, b - d)
@Leowbattle
Leowbattle / esc.rb
Created July 17, 2018 19:07
Turn C code into Spanish
if ARGV.length == 0
puts "Usage: ruby esc.rb [filename]"
exit
end
prog = File.read ARGV[0]
prog = prog.gsub(/auto/, "automático")
prog = prog.gsub(/const/, "constante")
prog = prog.gsub(/double/, "doble");